// 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  S3281C4_nt  {
  int s3281c4f0[2];
  void  mf3281c4(); // _ZN10S3281C4_nt8mf3281c4Ev
};
//SIG(-1 S3281C4_nt) C1{ m Fi[2]}


void  S3281C4_nt ::mf3281c4(){}

//skip512 S3281C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3281C3_nt  {
  int s3281c3f0;
  __tsi64 s3281c3f1;
  void *s3281c3f2[4];
  int s3281c3f3[2];
  void *s3281c3f4;
  ::S3281C4_nt s3281c3f5;
  void *s3281c3f6[2];
  virtual  ~S3281C3_nt(); // _ZN10S3281C3_ntD1Ev
  virtual void  v5(); // _ZN10S3281C3_nt2v5Ev
  virtual void  v6(); // _ZN10S3281C3_nt2v6Ev
  virtual void  v7(); // _ZN10S3281C3_nt2v7Ev
  virtual void  v8(); // _ZN10S3281C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3281C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3281C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3281C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3281C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3281C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3281C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3281C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3281C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3281C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3281C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3281C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3281C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3281C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3281C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3281C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3281C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3281C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3281C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3281C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3281C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3281C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3281C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3281C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3281C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3281C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3281C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3281C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3281C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3281C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3281C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3281C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3281C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3281C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3281C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3281C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3281C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3281C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3281C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3281C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3281C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3281C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3281C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3281C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3281C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3281C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3281C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3281C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3281C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3281C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3281C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3281C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3281C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3281C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3281C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3281C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3281C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3281C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3281C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3281C3_nt3v67Ev
  virtual void  v68(); // _ZN10S3281C3_nt3v68Ev
  S3281C3_nt(); // tgen
};
//SIG(-1 S3281C3_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]}


 S3281C3_nt ::~S3281C3_nt(){ note_dtor("S3281C3_nt", this);}
void  S3281C3_nt ::v5(){vfunc_called(this, "_ZN10S3281C3_nt2v5Ev");}
void  S3281C3_nt ::v6(){vfunc_called(this, "_ZN10S3281C3_nt2v6Ev");}
void  S3281C3_nt ::v7(){vfunc_called(this, "_ZN10S3281C3_nt2v7Ev");}
void  S3281C3_nt ::v8(){vfunc_called(this, "_ZN10S3281C3_nt2v8Ev");}
void  S3281C3_nt ::v9(){vfunc_called(this, "_ZN10S3281C3_nt2v9Ev");}
void  S3281C3_nt ::v10(){vfunc_called(this, "_ZN10S3281C3_nt3v10Ev");}
void  S3281C3_nt ::v11(){vfunc_called(this, "_ZN10S3281C3_nt3v11Ev");}
void  S3281C3_nt ::v12(){vfunc_called(this, "_ZN10S3281C3_nt3v12Ev");}
void  S3281C3_nt ::v13(){vfunc_called(this, "_ZN10S3281C3_nt3v13Ev");}
void  S3281C3_nt ::v14(){vfunc_called(this, "_ZN10S3281C3_nt3v14Ev");}
void  S3281C3_nt ::v15(){vfunc_called(this, "_ZN10S3281C3_nt3v15Ev");}
void  S3281C3_nt ::v16(){vfunc_called(this, "_ZN10S3281C3_nt3v16Ev");}
void  S3281C3_nt ::v17(){vfunc_called(this, "_ZN10S3281C3_nt3v17Ev");}
void  S3281C3_nt ::v18(){vfunc_called(this, "_ZN10S3281C3_nt3v18Ev");}
void  S3281C3_nt ::v19(){vfunc_called(this, "_ZN10S3281C3_nt3v19Ev");}
void  S3281C3_nt ::v20(){vfunc_called(this, "_ZN10S3281C3_nt3v20Ev");}
void  S3281C3_nt ::v21(){vfunc_called(this, "_ZN10S3281C3_nt3v21Ev");}
void  S3281C3_nt ::v22(){vfunc_called(this, "_ZN10S3281C3_nt3v22Ev");}
void  S3281C3_nt ::v23(){vfunc_called(this, "_ZN10S3281C3_nt3v23Ev");}
void  S3281C3_nt ::v24(){vfunc_called(this, "_ZN10S3281C3_nt3v24Ev");}
void  S3281C3_nt ::v25(){vfunc_called(this, "_ZN10S3281C3_nt3v25Ev");}
void  S3281C3_nt ::v26(){vfunc_called(this, "_ZN10S3281C3_nt3v26Ev");}
void  S3281C3_nt ::v27(){vfunc_called(this, "_ZN10S3281C3_nt3v27Ev");}
void  S3281C3_nt ::v28(){vfunc_called(this, "_ZN10S3281C3_nt3v28Ev");}
void  S3281C3_nt ::v29(){vfunc_called(this, "_ZN10S3281C3_nt3v29Ev");}
void  S3281C3_nt ::v30(){vfunc_called(this, "_ZN10S3281C3_nt3v30Ev");}
void  S3281C3_nt ::v31(){vfunc_called(this, "_ZN10S3281C3_nt3v31Ev");}
void  S3281C3_nt ::v32(){vfunc_called(this, "_ZN10S3281C3_nt3v32Ev");}
void  S3281C3_nt ::v33(){vfunc_called(this, "_ZN10S3281C3_nt3v33Ev");}
void  S3281C3_nt ::v34(){vfunc_called(this, "_ZN10S3281C3_nt3v34Ev");}
void  S3281C3_nt ::v35(){vfunc_called(this, "_ZN10S3281C3_nt3v35Ev");}
void  S3281C3_nt ::v36(){vfunc_called(this, "_ZN10S3281C3_nt3v36Ev");}
void  S3281C3_nt ::v37(){vfunc_called(this, "_ZN10S3281C3_nt3v37Ev");}
void  S3281C3_nt ::v38(){vfunc_called(this, "_ZN10S3281C3_nt3v38Ev");}
void  S3281C3_nt ::v39(){vfunc_called(this, "_ZN10S3281C3_nt3v39Ev");}
void  S3281C3_nt ::v40(){vfunc_called(this, "_ZN10S3281C3_nt3v40Ev");}
void  S3281C3_nt ::v41(){vfunc_called(this, "_ZN10S3281C3_nt3v41Ev");}
void  S3281C3_nt ::v42(){vfunc_called(this, "_ZN10S3281C3_nt3v42Ev");}
void  S3281C3_nt ::v43(){vfunc_called(this, "_ZN10S3281C3_nt3v43Ev");}
void  S3281C3_nt ::v44(){vfunc_called(this, "_ZN10S3281C3_nt3v44Ev");}
void  S3281C3_nt ::v45(){vfunc_called(this, "_ZN10S3281C3_nt3v45Ev");}
void  S3281C3_nt ::v46(){vfunc_called(this, "_ZN10S3281C3_nt3v46Ev");}
void  S3281C3_nt ::v47(){vfunc_called(this, "_ZN10S3281C3_nt3v47Ev");}
void  S3281C3_nt ::v48(){vfunc_called(this, "_ZN10S3281C3_nt3v48Ev");}
void  S3281C3_nt ::v49(){vfunc_called(this, "_ZN10S3281C3_nt3v49Ev");}
void  S3281C3_nt ::v50(){vfunc_called(this, "_ZN10S3281C3_nt3v50Ev");}
void  S3281C3_nt ::v51(){vfunc_called(this, "_ZN10S3281C3_nt3v51Ev");}
void  S3281C3_nt ::v52(){vfunc_called(this, "_ZN10S3281C3_nt3v52Ev");}
void  S3281C3_nt ::v53(){vfunc_called(this, "_ZN10S3281C3_nt3v53Ev");}
void  S3281C3_nt ::v54(){vfunc_called(this, "_ZN10S3281C3_nt3v54Ev");}
void  S3281C3_nt ::v55(){vfunc_called(this, "_ZN10S3281C3_nt3v55Ev");}
void  S3281C3_nt ::v56(){vfunc_called(this, "_ZN10S3281C3_nt3v56Ev");}
void  S3281C3_nt ::v57(){vfunc_called(this, "_ZN10S3281C3_nt3v57Ev");}
void  S3281C3_nt ::v58(){vfunc_called(this, "_ZN10S3281C3_nt3v58Ev");}
void  S3281C3_nt ::v59(){vfunc_called(this, "_ZN10S3281C3_nt3v59Ev");}
void  S3281C3_nt ::v60(){vfunc_called(this, "_ZN10S3281C3_nt3v60Ev");}
void  S3281C3_nt ::v61(){vfunc_called(this, "_ZN10S3281C3_nt3v61Ev");}
void  S3281C3_nt ::v62(){vfunc_called(this, "_ZN10S3281C3_nt3v62Ev");}
void  S3281C3_nt ::v63(){vfunc_called(this, "_ZN10S3281C3_nt3v63Ev");}
void  S3281C3_nt ::v64(){vfunc_called(this, "_ZN10S3281C3_nt3v64Ev");}
void  S3281C3_nt ::v65(){vfunc_called(this, "_ZN10S3281C3_nt3v65Ev");}
void  S3281C3_nt ::v66(){vfunc_called(this, "_ZN10S3281C3_nt3v66Ev");}
void  S3281C3_nt ::v67(){vfunc_called(this, "_ZN10S3281C3_nt3v67Ev");}
void  S3281C3_nt ::v68(){vfunc_called(this, "_ZN10S3281C3_nt3v68Ev");}
S3281C3_nt ::S3281C3_nt(){ note_ctor("S3281C3_nt", this);} // tgen

//skip512 S3281C3_nt

#else // __cplusplus

extern void _ZN10S3281C3_ntC1Ev();
extern void _ZN10S3281C3_ntD1Ev();
Name_Map name_map_S3281C3_nt[] = {
  NSPAIR(_ZN10S3281C3_ntC1Ev),
  NSPAIR(_ZN10S3281C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3281C3_nt[];
extern void _ZN10S3281C3_ntD1Ev();
extern void _ZN10S3281C3_ntD0Ev();
extern void _ZN10S3281C3_nt2v5Ev();
extern void _ZN10S3281C3_nt2v6Ev();
extern void _ZN10S3281C3_nt2v7Ev();
extern void _ZN10S3281C3_nt2v8Ev();
extern void _ZN10S3281C3_nt2v9Ev();
extern void _ZN10S3281C3_nt3v10Ev();
extern void _ZN10S3281C3_nt3v11Ev();
extern void _ZN10S3281C3_nt3v12Ev();
extern void _ZN10S3281C3_nt3v13Ev();
extern void _ZN10S3281C3_nt3v14Ev();
extern void _ZN10S3281C3_nt3v15Ev();
extern void _ZN10S3281C3_nt3v16Ev();
extern void _ZN10S3281C3_nt3v17Ev();
extern void _ZN10S3281C3_nt3v18Ev();
extern void _ZN10S3281C3_nt3v19Ev();
extern void _ZN10S3281C3_nt3v20Ev();
extern void _ZN10S3281C3_nt3v21Ev();
extern void _ZN10S3281C3_nt3v22Ev();
extern void _ZN10S3281C3_nt3v23Ev();
extern void _ZN10S3281C3_nt3v24Ev();
extern void _ZN10S3281C3_nt3v25Ev();
extern void _ZN10S3281C3_nt3v26Ev();
extern void _ZN10S3281C3_nt3v27Ev();
extern void _ZN10S3281C3_nt3v28Ev();
extern void _ZN10S3281C3_nt3v29Ev();
extern void _ZN10S3281C3_nt3v30Ev();
extern void _ZN10S3281C3_nt3v31Ev();
extern void _ZN10S3281C3_nt3v32Ev();
extern void _ZN10S3281C3_nt3v33Ev();
extern void _ZN10S3281C3_nt3v34Ev();
extern void _ZN10S3281C3_nt3v35Ev();
extern void _ZN10S3281C3_nt3v36Ev();
extern void _ZN10S3281C3_nt3v37Ev();
extern void _ZN10S3281C3_nt3v38Ev();
extern void _ZN10S3281C3_nt3v39Ev();
extern void _ZN10S3281C3_nt3v40Ev();
extern void _ZN10S3281C3_nt3v41Ev();
extern void _ZN10S3281C3_nt3v42Ev();
extern void _ZN10S3281C3_nt3v43Ev();
extern void _ZN10S3281C3_nt3v44Ev();
extern void _ZN10S3281C3_nt3v45Ev();
extern void _ZN10S3281C3_nt3v46Ev();
extern void _ZN10S3281C3_nt3v47Ev();
extern void _ZN10S3281C3_nt3v48Ev();
extern void _ZN10S3281C3_nt3v49Ev();
extern void _ZN10S3281C3_nt3v50Ev();
extern void _ZN10S3281C3_nt3v51Ev();
extern void _ZN10S3281C3_nt3v52Ev();
extern void _ZN10S3281C3_nt3v53Ev();
extern void _ZN10S3281C3_nt3v54Ev();
extern void _ZN10S3281C3_nt3v55Ev();
extern void _ZN10S3281C3_nt3v56Ev();
extern void _ZN10S3281C3_nt3v57Ev();
extern void _ZN10S3281C3_nt3v58Ev();
extern void _ZN10S3281C3_nt3v59Ev();
extern void _ZN10S3281C3_nt3v60Ev();
extern void _ZN10S3281C3_nt3v61Ev();
extern void _ZN10S3281C3_nt3v62Ev();
extern void _ZN10S3281C3_nt3v63Ev();
extern void _ZN10S3281C3_nt3v64Ev();
extern void _ZN10S3281C3_nt3v65Ev();
extern void _ZN10S3281C3_nt3v66Ev();
extern void _ZN10S3281C3_nt3v67Ev();
extern void _ZN10S3281C3_nt3v68Ev();
static  VTBL_ENTRY vtc_S3281C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3281C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3281C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v68Ev,
};
extern VTBL_ENTRY _ZTI10S3281C3_nt[];
VTBL_ENTRY *P__ZTI10S3281C3_nt = _ZTI10S3281C3_nt; 
extern  VTBL_ENTRY _ZTV10S3281C3_nt[];
Class_Descriptor cd_S3281C3_nt = {  "S3281C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3281C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3281C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3281C3_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  S3281C7_nt  {
  void *s3281c7f0;
  int s3281c7f1[2];
  void  mf3281c7(); // _ZN10S3281C7_nt8mf3281c7Ev
};
//SIG(-1 S3281C7_nt) C1{ m Fp Fi[2]}


void  S3281C7_nt ::mf3281c7(){}

//skip512 S3281C7_nt

#else // __cplusplus

Class_Descriptor cd_S3281C7_nt = {  "S3281C7_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  S3281C6_nt  : S3281C7_nt {
};
//SIG(-1 S3281C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3281C6_nt

#else // __cplusplus

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



//skip512 S3281C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3281C7_nt;
extern Class_Descriptor cd_S3281C6_nt;
static Base_Class bases_S3281C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3281C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3281C8_nt  {
  int s3281c8f0;
  void  mf3281c8(); // _ZN10S3281C8_nt8mf3281c8Ev
};
//SIG(-1 S3281C8_nt) C1{ m Fi}


void  S3281C8_nt ::mf3281c8(){}

//skip512 S3281C8_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S3281C12()
{
  extern Class_Descriptor cd_S3281C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3281C12, buf);
    S3281C12 &lv = *(new (buf) S3281C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3281C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3281C12)");
    check_base_class_offset(lv, (S3281C7_nt*), 0, "S3281C12");
    test_class_info(&lv, &cd_S3281C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3281C12(Test_S3281C12, "S3281C12", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3281C11()
{
  extern Class_Descriptor cd_S3281C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3281C11, buf);
    S3281C11 &lv = *(new (buf) S3281C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3281C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3281C11)");
    check_base_class_offset(lv, (S3281C7_nt*)(S3281C12*), 0, "S3281C11");
    check_base_class_offset(lv, (S3281C12*), 0, "S3281C11");
    test_class_info(&lv, &cd_S3281C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3281C11(Test_S3281C11, "S3281C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3281C7_nt;
extern Class_Descriptor cd_S3281C12;
static Base_Class bases_S3281C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3281C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3281C11 = {  "S3281C11", // class name
  bases_S3281C11, 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  S3281C13_nt  {
  int s3281c13f0[3];
  void  mf3281c13(); // _ZN11S3281C13_nt9mf3281c13Ev
};
//SIG(-1 S3281C13_nt) C1{ m Fi[3]}


void  S3281C13_nt ::mf3281c13(){}

//skip512 S3281C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S3281C18()
{
  extern Class_Descriptor cd_S3281C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3281C18, buf);
    S3281C18 &lv = *(new (buf) S3281C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3281C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3281C18)");
    check_base_class_offset(lv, (S3281C7_nt*), 0, "S3281C18");
    test_class_info(&lv, &cd_S3281C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3281C18(Test_S3281C18, "S3281C18", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3281C17()
{
  extern Class_Descriptor cd_S3281C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3281C17, buf);
    S3281C17 &lv = *(new (buf) S3281C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3281C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3281C17)");
    check_base_class_offset(lv, (S3281C7_nt*)(S3281C18*), 0, "S3281C17");
    check_base_class_offset(lv, (S3281C18*), 0, "S3281C17");
    test_class_info(&lv, &cd_S3281C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3281C17(Test_S3281C17, "S3281C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3281C7_nt;
extern Class_Descriptor cd_S3281C18;
static Base_Class bases_S3281C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3281C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3281C17 = {  "S3281C17", // class name
  bases_S3281C17, 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  S3281C2_nt  : S3281C3_nt {
  ::S3281C5_nt s3281c2f0;
  ::S3281C5_nt s3281c2f1;
  ::S3281C8_nt s3281c2f2;
  int s3281c2f3;
  char s3281c2f4[4];
  void *s3281c2f5[2];
  ::S3281C5_nt s3281c2f6;
  unsigned int s3281c2f7:1;
  unsigned int s3281c2f8:1;
  unsigned int s3281c2f9:1;
  unsigned int s3281c2f10:1;
  unsigned int s3281c2f11:1;
  unsigned int s3281c2f12:1;
  unsigned int s3281c2f13:1;
  unsigned int s3281c2f14:1;
  unsigned int s3281c2f15:1;
  unsigned int s3281c2f16:1;
  unsigned int s3281c2f17:1;
  unsigned int s3281c2f18:1;
  unsigned int s3281c2f19:1;
  unsigned int s3281c2f20:1;
  unsigned int s3281c2f21:1;
  unsigned int s3281c2f22:1;
  unsigned int s3281c2f23:1;
  unsigned int s3281c2f24:1;
  unsigned int s3281c2f25:1;
  unsigned int s3281c2f26:1;
  unsigned int s3281c2f27:1;
  unsigned int s3281c2f28:1;
  unsigned int s3281c2f29:1;
  unsigned int s3281c2f30:1;
  unsigned int s3281c2f31:1;
  unsigned int s3281c2f32:1;
  unsigned int s3281c2f33:1;
  unsigned int s3281c2f34:1;
  unsigned int s3281c2f35:1;
  unsigned int s3281c2f36:1;
  unsigned int s3281c2f37:1;
  unsigned int s3281c2f38:1;
  unsigned int s3281c2f39:1;
  unsigned int s3281c2f40:1;
  unsigned int s3281c2f41:1;
  unsigned int s3281c2f42:1;
  unsigned int s3281c2f43:1;
  unsigned int s3281c2f44:1;
  unsigned int s3281c2f45:1;
  unsigned int s3281c2f46:1;
  unsigned int s3281c2f47:1;
  unsigned int s3281c2f48:1;
  unsigned int s3281c2f49:1;
  unsigned int s3281c2f50:1;
  unsigned int s3281c2f51:1;
  unsigned int s3281c2f52:1;
  unsigned int s3281c2f53:1;
  unsigned int s3281c2f54:1;
  unsigned int s3281c2f55:1;
  unsigned int s3281c2f56:1;
  unsigned int s3281c2f57:1;
  unsigned int s3281c2f58:1;
  unsigned int s3281c2f59:1;
  unsigned int s3281c2f60:1;
  unsigned int s3281c2f61:1;
  unsigned int s3281c2f62:1;
  unsigned int s3281c2f63:1;
  unsigned int s3281c2f64:1;
  unsigned int s3281c2f65:1;
  unsigned int s3281c2f66:1;
  unsigned int s3281c2f67:1;
  unsigned int s3281c2f68:1;
  unsigned int s3281c2f69:1;
  unsigned int s3281c2f70:1;
  unsigned int s3281c2f71:1;
  unsigned int s3281c2f72:1;
  unsigned int s3281c2f73:1;
  unsigned int s3281c2f74:1;
  unsigned int s3281c2f75:1;
  unsigned int s3281c2f76:1;
  unsigned int s3281c2f77:1;
  unsigned int s3281c2f78:1;
  unsigned int s3281c2f79:1;
  unsigned int s3281c2f80:1;
  unsigned int s3281c2f81:1;
  unsigned int s3281c2f82:1;
  unsigned int s3281c2f83:1;
  int s3281c2f84[5];
  void *s3281c2f85[2];
  int s3281c2f86[3];
  ::S3281C4_nt s3281c2f87;
  ::S3281C4_nt s3281c2f88;
  ::S3281C4_nt s3281c2f89;
  ::S3281C11 s3281c2f90;
  ::S3281C11 s3281c2f91;
  int s3281c2f92;
  void *s3281c2f93[2];
  ::S3281C13_nt s3281c2f94;
  ::S3281C13_nt s3281c2f95;
  ::S3281C13_nt s3281c2f96;
  ::S3281C13_nt s3281c2f97;
  void *s3281c2f98;
  ::S3281C4_nt s3281c2f99;
  ::S3281C11 s3281c2f100;
  ::S3281C13_nt s3281c2f101;
  ::S3281C13_nt s3281c2f102;
  int s3281c2f103;
  ::S3281C13_nt s3281c2f104;
  ::S3281C13_nt s3281c2f105;
  void *s3281c2f106;
  int s3281c2f107;
  char s3281c2f108;
  ::S3281C13_nt s3281c2f109;
  ::S3281C13_nt s3281c2f110;
  void *s3281c2f111;
  int s3281c2f112;
  void *s3281c2f113;
  ::S3281C11 s3281c2f114;
  ::S3281C17 s3281c2f115;
  ::S3281C17 s3281c2f116;
  virtual  ~S3281C2_nt(); // _ZN10S3281C2_ntD1Ev
  virtual void  v69(); // _ZN10S3281C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3281C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3281C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3281C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3281C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3281C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3281C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3281C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3281C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3281C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3281C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3281C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3281C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3281C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3281C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3281C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3281C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3281C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3281C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3281C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3281C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3281C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3281C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3281C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3281C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3281C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3281C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3281C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3281C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3281C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3281C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3281C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3281C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3281C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3281C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3281C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3281C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3281C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3281C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3281C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3281C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3281C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3281C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3281C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3281C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3281C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3281C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3281C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3281C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3281C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3281C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3281C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3281C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3281C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3281C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3281C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3281C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3281C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3281C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3281C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3281C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3281C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3281C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3281C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3281C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3281C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3281C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3281C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3281C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3281C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3281C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3281C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3281C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3281C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3281C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3281C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3281C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3281C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3281C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3281C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3281C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3281C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3281C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3281C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3281C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3281C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3281C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3281C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3281C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3281C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3281C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3281C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3281C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3281C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3281C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3281C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3281C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3281C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3281C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3281C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3281C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3281C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3281C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3281C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3281C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3281C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3281C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3281C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3281C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3281C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3281C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3281C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3281C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3281C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3281C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3281C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3281C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3281C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3281C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3281C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3281C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3281C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3281C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3281C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3281C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3281C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3281C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3281C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3281C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3281C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3281C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3281C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3281C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3281C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3281C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3281C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3281C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3281C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3281C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3281C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3281C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3281C2_nt4v210Ev
  virtual void  v211(); // _ZN10S3281C2_nt4v211Ev
  S3281C2_nt(); // tgen
};
//SIG(-1 S3281C2_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}


 S3281C2_nt ::~S3281C2_nt(){ note_dtor("S3281C2_nt", this);}
void  S3281C2_nt ::v69(){vfunc_called(this, "_ZN10S3281C2_nt3v69Ev");}
void  S3281C2_nt ::v70(){vfunc_called(this, "_ZN10S3281C2_nt3v70Ev");}
void  S3281C2_nt ::v71(){vfunc_called(this, "_ZN10S3281C2_nt3v71Ev");}
void  S3281C2_nt ::v72(){vfunc_called(this, "_ZN10S3281C2_nt3v72Ev");}
void  S3281C2_nt ::v73(){vfunc_called(this, "_ZN10S3281C2_nt3v73Ev");}
void  S3281C2_nt ::v74(){vfunc_called(this, "_ZN10S3281C2_nt3v74Ev");}
void  S3281C2_nt ::v75(){vfunc_called(this, "_ZN10S3281C2_nt3v75Ev");}
void  S3281C2_nt ::v76(){vfunc_called(this, "_ZN10S3281C2_nt3v76Ev");}
void  S3281C2_nt ::v77(){vfunc_called(this, "_ZN10S3281C2_nt3v77Ev");}
void  S3281C2_nt ::v78(){vfunc_called(this, "_ZN10S3281C2_nt3v78Ev");}
void  S3281C2_nt ::v79(){vfunc_called(this, "_ZN10S3281C2_nt3v79Ev");}
void  S3281C2_nt ::v80(){vfunc_called(this, "_ZN10S3281C2_nt3v80Ev");}
void  S3281C2_nt ::v81(){vfunc_called(this, "_ZN10S3281C2_nt3v81Ev");}
void  S3281C2_nt ::v82(){vfunc_called(this, "_ZN10S3281C2_nt3v82Ev");}
void  S3281C2_nt ::v83(){vfunc_called(this, "_ZN10S3281C2_nt3v83Ev");}
void  S3281C2_nt ::v84(){vfunc_called(this, "_ZN10S3281C2_nt3v84Ev");}
void  S3281C2_nt ::v85(){vfunc_called(this, "_ZN10S3281C2_nt3v85Ev");}
void  S3281C2_nt ::v86(){vfunc_called(this, "_ZN10S3281C2_nt3v86Ev");}
void  S3281C2_nt ::v87(){vfunc_called(this, "_ZN10S3281C2_nt3v87Ev");}
void  S3281C2_nt ::v88(){vfunc_called(this, "_ZN10S3281C2_nt3v88Ev");}
void  S3281C2_nt ::v89(){vfunc_called(this, "_ZN10S3281C2_nt3v89Ev");}
void  S3281C2_nt ::v90(){vfunc_called(this, "_ZN10S3281C2_nt3v90Ev");}
void  S3281C2_nt ::v91(){vfunc_called(this, "_ZN10S3281C2_nt3v91Ev");}
void  S3281C2_nt ::v92(){vfunc_called(this, "_ZN10S3281C2_nt3v92Ev");}
void  S3281C2_nt ::v93(){vfunc_called(this, "_ZN10S3281C2_nt3v93Ev");}
void  S3281C2_nt ::v94(){vfunc_called(this, "_ZN10S3281C2_nt3v94Ev");}
void  S3281C2_nt ::v95(){vfunc_called(this, "_ZN10S3281C2_nt3v95Ev");}
void  S3281C2_nt ::v96(){vfunc_called(this, "_ZN10S3281C2_nt3v96Ev");}
void  S3281C2_nt ::v97(){vfunc_called(this, "_ZN10S3281C2_nt3v97Ev");}
void  S3281C2_nt ::v98(){vfunc_called(this, "_ZN10S3281C2_nt3v98Ev");}
void  S3281C2_nt ::v99(){vfunc_called(this, "_ZN10S3281C2_nt3v99Ev");}
void  S3281C2_nt ::v100(){vfunc_called(this, "_ZN10S3281C2_nt4v100Ev");}
void  S3281C2_nt ::v101(){vfunc_called(this, "_ZN10S3281C2_nt4v101Ev");}
void  S3281C2_nt ::v102(){vfunc_called(this, "_ZN10S3281C2_nt4v102Ev");}
void  S3281C2_nt ::v103(){vfunc_called(this, "_ZN10S3281C2_nt4v103Ev");}
void  S3281C2_nt ::v104(){vfunc_called(this, "_ZN10S3281C2_nt4v104Ev");}
void  S3281C2_nt ::v105(){vfunc_called(this, "_ZN10S3281C2_nt4v105Ev");}
void  S3281C2_nt ::v106(){vfunc_called(this, "_ZN10S3281C2_nt4v106Ev");}
void  S3281C2_nt ::v107(){vfunc_called(this, "_ZN10S3281C2_nt4v107Ev");}
void  S3281C2_nt ::v108(){vfunc_called(this, "_ZN10S3281C2_nt4v108Ev");}
void  S3281C2_nt ::v109(){vfunc_called(this, "_ZN10S3281C2_nt4v109Ev");}
void  S3281C2_nt ::v110(){vfunc_called(this, "_ZN10S3281C2_nt4v110Ev");}
void  S3281C2_nt ::v111(){vfunc_called(this, "_ZN10S3281C2_nt4v111Ev");}
void  S3281C2_nt ::v112(){vfunc_called(this, "_ZN10S3281C2_nt4v112Ev");}
void  S3281C2_nt ::v113(){vfunc_called(this, "_ZN10S3281C2_nt4v113Ev");}
void  S3281C2_nt ::v114(){vfunc_called(this, "_ZN10S3281C2_nt4v114Ev");}
void  S3281C2_nt ::v115(){vfunc_called(this, "_ZN10S3281C2_nt4v115Ev");}
void  S3281C2_nt ::v116(){vfunc_called(this, "_ZN10S3281C2_nt4v116Ev");}
void  S3281C2_nt ::v117(){vfunc_called(this, "_ZN10S3281C2_nt4v117Ev");}
void  S3281C2_nt ::v118(){vfunc_called(this, "_ZN10S3281C2_nt4v118Ev");}
void  S3281C2_nt ::v119(){vfunc_called(this, "_ZN10S3281C2_nt4v119Ev");}
void  S3281C2_nt ::v120(){vfunc_called(this, "_ZN10S3281C2_nt4v120Ev");}
void  S3281C2_nt ::v121(){vfunc_called(this, "_ZN10S3281C2_nt4v121Ev");}
void  S3281C2_nt ::v122(){vfunc_called(this, "_ZN10S3281C2_nt4v122Ev");}
void  S3281C2_nt ::v123(){vfunc_called(this, "_ZN10S3281C2_nt4v123Ev");}
void  S3281C2_nt ::v124(){vfunc_called(this, "_ZN10S3281C2_nt4v124Ev");}
void  S3281C2_nt ::v125(){vfunc_called(this, "_ZN10S3281C2_nt4v125Ev");}
void  S3281C2_nt ::v126(){vfunc_called(this, "_ZN10S3281C2_nt4v126Ev");}
void  S3281C2_nt ::v127(){vfunc_called(this, "_ZN10S3281C2_nt4v127Ev");}
void  S3281C2_nt ::v128(){vfunc_called(this, "_ZN10S3281C2_nt4v128Ev");}
void  S3281C2_nt ::v129(){vfunc_called(this, "_ZN10S3281C2_nt4v129Ev");}
void  S3281C2_nt ::v130(){vfunc_called(this, "_ZN10S3281C2_nt4v130Ev");}
void  S3281C2_nt ::v131(){vfunc_called(this, "_ZN10S3281C2_nt4v131Ev");}
void  S3281C2_nt ::v132(){vfunc_called(this, "_ZN10S3281C2_nt4v132Ev");}
void  S3281C2_nt ::v133(){vfunc_called(this, "_ZN10S3281C2_nt4v133Ev");}
void  S3281C2_nt ::v134(){vfunc_called(this, "_ZN10S3281C2_nt4v134Ev");}
void  S3281C2_nt ::v135(){vfunc_called(this, "_ZN10S3281C2_nt4v135Ev");}
void  S3281C2_nt ::v136(){vfunc_called(this, "_ZN10S3281C2_nt4v136Ev");}
void  S3281C2_nt ::v137(){vfunc_called(this, "_ZN10S3281C2_nt4v137Ev");}
void  S3281C2_nt ::v138(){vfunc_called(this, "_ZN10S3281C2_nt4v138Ev");}
void  S3281C2_nt ::v139(){vfunc_called(this, "_ZN10S3281C2_nt4v139Ev");}
void  S3281C2_nt ::v140(){vfunc_called(this, "_ZN10S3281C2_nt4v140Ev");}
void  S3281C2_nt ::v141(){vfunc_called(this, "_ZN10S3281C2_nt4v141Ev");}
void  S3281C2_nt ::v142(){vfunc_called(this, "_ZN10S3281C2_nt4v142Ev");}
void  S3281C2_nt ::v143(){vfunc_called(this, "_ZN10S3281C2_nt4v143Ev");}
void  S3281C2_nt ::v144(){vfunc_called(this, "_ZN10S3281C2_nt4v144Ev");}
void  S3281C2_nt ::v145(){vfunc_called(this, "_ZN10S3281C2_nt4v145Ev");}
void  S3281C2_nt ::v146(){vfunc_called(this, "_ZN10S3281C2_nt4v146Ev");}
void  S3281C2_nt ::v147(){vfunc_called(this, "_ZN10S3281C2_nt4v147Ev");}
void  S3281C2_nt ::v148(){vfunc_called(this, "_ZN10S3281C2_nt4v148Ev");}
void  S3281C2_nt ::v149(){vfunc_called(this, "_ZN10S3281C2_nt4v149Ev");}
void  S3281C2_nt ::v150(){vfunc_called(this, "_ZN10S3281C2_nt4v150Ev");}
void  S3281C2_nt ::v151(){vfunc_called(this, "_ZN10S3281C2_nt4v151Ev");}
void  S3281C2_nt ::v152(){vfunc_called(this, "_ZN10S3281C2_nt4v152Ev");}
void  S3281C2_nt ::v153(){vfunc_called(this, "_ZN10S3281C2_nt4v153Ev");}
void  S3281C2_nt ::v154(){vfunc_called(this, "_ZN10S3281C2_nt4v154Ev");}
void  S3281C2_nt ::v155(){vfunc_called(this, "_ZN10S3281C2_nt4v155Ev");}
void  S3281C2_nt ::v156(){vfunc_called(this, "_ZN10S3281C2_nt4v156Ev");}
void  S3281C2_nt ::v157(){vfunc_called(this, "_ZN10S3281C2_nt4v157Ev");}
void  S3281C2_nt ::v158(){vfunc_called(this, "_ZN10S3281C2_nt4v158Ev");}
void  S3281C2_nt ::v159(){vfunc_called(this, "_ZN10S3281C2_nt4v159Ev");}
void  S3281C2_nt ::v160(){vfunc_called(this, "_ZN10S3281C2_nt4v160Ev");}
void  S3281C2_nt ::v161(){vfunc_called(this, "_ZN10S3281C2_nt4v161Ev");}
void  S3281C2_nt ::v162(){vfunc_called(this, "_ZN10S3281C2_nt4v162Ev");}
void  S3281C2_nt ::v163(){vfunc_called(this, "_ZN10S3281C2_nt4v163Ev");}
void  S3281C2_nt ::v164(){vfunc_called(this, "_ZN10S3281C2_nt4v164Ev");}
void  S3281C2_nt ::v165(){vfunc_called(this, "_ZN10S3281C2_nt4v165Ev");}
void  S3281C2_nt ::v166(){vfunc_called(this, "_ZN10S3281C2_nt4v166Ev");}
void  S3281C2_nt ::v167(){vfunc_called(this, "_ZN10S3281C2_nt4v167Ev");}
void  S3281C2_nt ::v168(){vfunc_called(this, "_ZN10S3281C2_nt4v168Ev");}
void  S3281C2_nt ::v169(){vfunc_called(this, "_ZN10S3281C2_nt4v169Ev");}
void  S3281C2_nt ::v170(){vfunc_called(this, "_ZN10S3281C2_nt4v170Ev");}
void  S3281C2_nt ::v171(){vfunc_called(this, "_ZN10S3281C2_nt4v171Ev");}
void  S3281C2_nt ::v172(){vfunc_called(this, "_ZN10S3281C2_nt4v172Ev");}
void  S3281C2_nt ::v173(){vfunc_called(this, "_ZN10S3281C2_nt4v173Ev");}
void  S3281C2_nt ::v174(){vfunc_called(this, "_ZN10S3281C2_nt4v174Ev");}
void  S3281C2_nt ::v175(){vfunc_called(this, "_ZN10S3281C2_nt4v175Ev");}
void  S3281C2_nt ::v176(){vfunc_called(this, "_ZN10S3281C2_nt4v176Ev");}
void  S3281C2_nt ::v177(){vfunc_called(this, "_ZN10S3281C2_nt4v177Ev");}
void  S3281C2_nt ::v178(){vfunc_called(this, "_ZN10S3281C2_nt4v178Ev");}
void  S3281C2_nt ::v179(){vfunc_called(this, "_ZN10S3281C2_nt4v179Ev");}
void  S3281C2_nt ::v180(){vfunc_called(this, "_ZN10S3281C2_nt4v180Ev");}
void  S3281C2_nt ::v181(){vfunc_called(this, "_ZN10S3281C2_nt4v181Ev");}
void  S3281C2_nt ::v182(){vfunc_called(this, "_ZN10S3281C2_nt4v182Ev");}
void  S3281C2_nt ::v183(){vfunc_called(this, "_ZN10S3281C2_nt4v183Ev");}
void  S3281C2_nt ::v184(){vfunc_called(this, "_ZN10S3281C2_nt4v184Ev");}
void  S3281C2_nt ::v185(){vfunc_called(this, "_ZN10S3281C2_nt4v185Ev");}
void  S3281C2_nt ::v186(){vfunc_called(this, "_ZN10S3281C2_nt4v186Ev");}
void  S3281C2_nt ::v187(){vfunc_called(this, "_ZN10S3281C2_nt4v187Ev");}
void  S3281C2_nt ::v188(){vfunc_called(this, "_ZN10S3281C2_nt4v188Ev");}
void  S3281C2_nt ::v189(){vfunc_called(this, "_ZN10S3281C2_nt4v189Ev");}
void  S3281C2_nt ::v190(){vfunc_called(this, "_ZN10S3281C2_nt4v190Ev");}
void  S3281C2_nt ::v191(){vfunc_called(this, "_ZN10S3281C2_nt4v191Ev");}
void  S3281C2_nt ::v192(){vfunc_called(this, "_ZN10S3281C2_nt4v192Ev");}
void  S3281C2_nt ::v193(){vfunc_called(this, "_ZN10S3281C2_nt4v193Ev");}
void  S3281C2_nt ::v194(){vfunc_called(this, "_ZN10S3281C2_nt4v194Ev");}
void  S3281C2_nt ::v195(){vfunc_called(this, "_ZN10S3281C2_nt4v195Ev");}
void  S3281C2_nt ::v196(){vfunc_called(this, "_ZN10S3281C2_nt4v196Ev");}
void  S3281C2_nt ::v197(){vfunc_called(this, "_ZN10S3281C2_nt4v197Ev");}
void  S3281C2_nt ::v198(){vfunc_called(this, "_ZN10S3281C2_nt4v198Ev");}
void  S3281C2_nt ::v199(){vfunc_called(this, "_ZN10S3281C2_nt4v199Ev");}
void  S3281C2_nt ::v200(){vfunc_called(this, "_ZN10S3281C2_nt4v200Ev");}
void  S3281C2_nt ::v201(){vfunc_called(this, "_ZN10S3281C2_nt4v201Ev");}
void  S3281C2_nt ::v202(){vfunc_called(this, "_ZN10S3281C2_nt4v202Ev");}
void  S3281C2_nt ::v203(){vfunc_called(this, "_ZN10S3281C2_nt4v203Ev");}
void  S3281C2_nt ::v204(){vfunc_called(this, "_ZN10S3281C2_nt4v204Ev");}
void  S3281C2_nt ::v205(){vfunc_called(this, "_ZN10S3281C2_nt4v205Ev");}
void  S3281C2_nt ::v206(){vfunc_called(this, "_ZN10S3281C2_nt4v206Ev");}
void  S3281C2_nt ::v207(){vfunc_called(this, "_ZN10S3281C2_nt4v207Ev");}
void  S3281C2_nt ::v208(){vfunc_called(this, "_ZN10S3281C2_nt4v208Ev");}
void  S3281C2_nt ::v209(){vfunc_called(this, "_ZN10S3281C2_nt4v209Ev");}
void  S3281C2_nt ::v210(){vfunc_called(this, "_ZN10S3281C2_nt4v210Ev");}
void  S3281C2_nt ::v211(){vfunc_called(this, "_ZN10S3281C2_nt4v211Ev");}
S3281C2_nt ::S3281C2_nt(){ note_ctor("S3281C2_nt", this);} // tgen

//skip512 S3281C2_nt

#else // __cplusplus

extern void _ZN10S3281C2_ntC1Ev();
extern void _ZN10S3281C2_ntD1Ev();
Name_Map name_map_S3281C2_nt[] = {
  NSPAIR(_ZN10S3281C2_ntC1Ev),
  NSPAIR(_ZN10S3281C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3281C3_nt;
extern VTBL_ENTRY _ZTI10S3281C3_nt[];
extern  VTBL_ENTRY _ZTV10S3281C3_nt[];
static Base_Class bases_S3281C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3281C2_nt[];
extern void _ZN10S3281C2_ntD1Ev();
extern void _ZN10S3281C2_ntD0Ev();
extern void _ZN10S3281C3_nt2v5Ev();
extern void _ZN10S3281C3_nt2v6Ev();
extern void _ZN10S3281C3_nt2v7Ev();
extern void _ZN10S3281C3_nt2v8Ev();
extern void _ZN10S3281C3_nt2v9Ev();
extern void _ZN10S3281C3_nt3v10Ev();
extern void _ZN10S3281C3_nt3v11Ev();
extern void _ZN10S3281C3_nt3v12Ev();
extern void _ZN10S3281C3_nt3v13Ev();
extern void _ZN10S3281C3_nt3v14Ev();
extern void _ZN10S3281C3_nt3v15Ev();
extern void _ZN10S3281C3_nt3v16Ev();
extern void _ZN10S3281C3_nt3v17Ev();
extern void _ZN10S3281C3_nt3v18Ev();
extern void _ZN10S3281C3_nt3v19Ev();
extern void _ZN10S3281C3_nt3v20Ev();
extern void _ZN10S3281C3_nt3v21Ev();
extern void _ZN10S3281C3_nt3v22Ev();
extern void _ZN10S3281C3_nt3v23Ev();
extern void _ZN10S3281C3_nt3v24Ev();
extern void _ZN10S3281C3_nt3v25Ev();
extern void _ZN10S3281C3_nt3v26Ev();
extern void _ZN10S3281C3_nt3v27Ev();
extern void _ZN10S3281C3_nt3v28Ev();
extern void _ZN10S3281C3_nt3v29Ev();
extern void _ZN10S3281C3_nt3v30Ev();
extern void _ZN10S3281C3_nt3v31Ev();
extern void _ZN10S3281C3_nt3v32Ev();
extern void _ZN10S3281C3_nt3v33Ev();
extern void _ZN10S3281C3_nt3v34Ev();
extern void _ZN10S3281C3_nt3v35Ev();
extern void _ZN10S3281C3_nt3v36Ev();
extern void _ZN10S3281C3_nt3v37Ev();
extern void _ZN10S3281C3_nt3v38Ev();
extern void _ZN10S3281C3_nt3v39Ev();
extern void _ZN10S3281C3_nt3v40Ev();
extern void _ZN10S3281C3_nt3v41Ev();
extern void _ZN10S3281C3_nt3v42Ev();
extern void _ZN10S3281C3_nt3v43Ev();
extern void _ZN10S3281C3_nt3v44Ev();
extern void _ZN10S3281C3_nt3v45Ev();
extern void _ZN10S3281C3_nt3v46Ev();
extern void _ZN10S3281C3_nt3v47Ev();
extern void _ZN10S3281C3_nt3v48Ev();
extern void _ZN10S3281C3_nt3v49Ev();
extern void _ZN10S3281C3_nt3v50Ev();
extern void _ZN10S3281C3_nt3v51Ev();
extern void _ZN10S3281C3_nt3v52Ev();
extern void _ZN10S3281C3_nt3v53Ev();
extern void _ZN10S3281C3_nt3v54Ev();
extern void _ZN10S3281C3_nt3v55Ev();
extern void _ZN10S3281C3_nt3v56Ev();
extern void _ZN10S3281C3_nt3v57Ev();
extern void _ZN10S3281C3_nt3v58Ev();
extern void _ZN10S3281C3_nt3v59Ev();
extern void _ZN10S3281C3_nt3v60Ev();
extern void _ZN10S3281C3_nt3v61Ev();
extern void _ZN10S3281C3_nt3v62Ev();
extern void _ZN10S3281C3_nt3v63Ev();
extern void _ZN10S3281C3_nt3v64Ev();
extern void _ZN10S3281C3_nt3v65Ev();
extern void _ZN10S3281C3_nt3v66Ev();
extern void _ZN10S3281C3_nt3v67Ev();
extern void _ZN10S3281C3_nt3v68Ev();
extern void _ZN10S3281C2_nt3v69Ev();
extern void _ZN10S3281C2_nt3v70Ev();
extern void _ZN10S3281C2_nt3v71Ev();
extern void _ZN10S3281C2_nt3v72Ev();
extern void _ZN10S3281C2_nt3v73Ev();
extern void _ZN10S3281C2_nt3v74Ev();
extern void _ZN10S3281C2_nt3v75Ev();
extern void _ZN10S3281C2_nt3v76Ev();
extern void _ZN10S3281C2_nt3v77Ev();
extern void _ZN10S3281C2_nt3v78Ev();
extern void _ZN10S3281C2_nt3v79Ev();
extern void _ZN10S3281C2_nt3v80Ev();
extern void _ZN10S3281C2_nt3v81Ev();
extern void _ZN10S3281C2_nt3v82Ev();
extern void _ZN10S3281C2_nt3v83Ev();
extern void _ZN10S3281C2_nt3v84Ev();
extern void _ZN10S3281C2_nt3v85Ev();
extern void _ZN10S3281C2_nt3v86Ev();
extern void _ZN10S3281C2_nt3v87Ev();
extern void _ZN10S3281C2_nt3v88Ev();
extern void _ZN10S3281C2_nt3v89Ev();
extern void _ZN10S3281C2_nt3v90Ev();
extern void _ZN10S3281C2_nt3v91Ev();
extern void _ZN10S3281C2_nt3v92Ev();
extern void _ZN10S3281C2_nt3v93Ev();
extern void _ZN10S3281C2_nt3v94Ev();
extern void _ZN10S3281C2_nt3v95Ev();
extern void _ZN10S3281C2_nt3v96Ev();
extern void _ZN10S3281C2_nt3v97Ev();
extern void _ZN10S3281C2_nt3v98Ev();
extern void _ZN10S3281C2_nt3v99Ev();
extern void _ZN10S3281C2_nt4v100Ev();
extern void _ZN10S3281C2_nt4v101Ev();
extern void _ZN10S3281C2_nt4v102Ev();
extern void _ZN10S3281C2_nt4v103Ev();
extern void _ZN10S3281C2_nt4v104Ev();
extern void _ZN10S3281C2_nt4v105Ev();
extern void _ZN10S3281C2_nt4v106Ev();
extern void _ZN10S3281C2_nt4v107Ev();
extern void _ZN10S3281C2_nt4v108Ev();
extern void _ZN10S3281C2_nt4v109Ev();
extern void _ZN10S3281C2_nt4v110Ev();
extern void _ZN10S3281C2_nt4v111Ev();
extern void _ZN10S3281C2_nt4v112Ev();
extern void _ZN10S3281C2_nt4v113Ev();
extern void _ZN10S3281C2_nt4v114Ev();
extern void _ZN10S3281C2_nt4v115Ev();
extern void _ZN10S3281C2_nt4v116Ev();
extern void _ZN10S3281C2_nt4v117Ev();
extern void _ZN10S3281C2_nt4v118Ev();
extern void _ZN10S3281C2_nt4v119Ev();
extern void _ZN10S3281C2_nt4v120Ev();
extern void _ZN10S3281C2_nt4v121Ev();
extern void _ZN10S3281C2_nt4v122Ev();
extern void _ZN10S3281C2_nt4v123Ev();
extern void _ZN10S3281C2_nt4v124Ev();
extern void _ZN10S3281C2_nt4v125Ev();
extern void _ZN10S3281C2_nt4v126Ev();
extern void _ZN10S3281C2_nt4v127Ev();
extern void _ZN10S3281C2_nt4v128Ev();
extern void _ZN10S3281C2_nt4v129Ev();
extern void _ZN10S3281C2_nt4v130Ev();
extern void _ZN10S3281C2_nt4v131Ev();
extern void _ZN10S3281C2_nt4v132Ev();
extern void _ZN10S3281C2_nt4v133Ev();
extern void _ZN10S3281C2_nt4v134Ev();
extern void _ZN10S3281C2_nt4v135Ev();
extern void _ZN10S3281C2_nt4v136Ev();
extern void _ZN10S3281C2_nt4v137Ev();
extern void _ZN10S3281C2_nt4v138Ev();
extern void _ZN10S3281C2_nt4v139Ev();
extern void _ZN10S3281C2_nt4v140Ev();
extern void _ZN10S3281C2_nt4v141Ev();
extern void _ZN10S3281C2_nt4v142Ev();
extern void _ZN10S3281C2_nt4v143Ev();
extern void _ZN10S3281C2_nt4v144Ev();
extern void _ZN10S3281C2_nt4v145Ev();
extern void _ZN10S3281C2_nt4v146Ev();
extern void _ZN10S3281C2_nt4v147Ev();
extern void _ZN10S3281C2_nt4v148Ev();
extern void _ZN10S3281C2_nt4v149Ev();
extern void _ZN10S3281C2_nt4v150Ev();
extern void _ZN10S3281C2_nt4v151Ev();
extern void _ZN10S3281C2_nt4v152Ev();
extern void _ZN10S3281C2_nt4v153Ev();
extern void _ZN10S3281C2_nt4v154Ev();
extern void _ZN10S3281C2_nt4v155Ev();
extern void _ZN10S3281C2_nt4v156Ev();
extern void _ZN10S3281C2_nt4v157Ev();
extern void _ZN10S3281C2_nt4v158Ev();
extern void _ZN10S3281C2_nt4v159Ev();
extern void _ZN10S3281C2_nt4v160Ev();
extern void _ZN10S3281C2_nt4v161Ev();
extern void _ZN10S3281C2_nt4v162Ev();
extern void _ZN10S3281C2_nt4v163Ev();
extern void _ZN10S3281C2_nt4v164Ev();
extern void _ZN10S3281C2_nt4v165Ev();
extern void _ZN10S3281C2_nt4v166Ev();
extern void _ZN10S3281C2_nt4v167Ev();
extern void _ZN10S3281C2_nt4v168Ev();
extern void _ZN10S3281C2_nt4v169Ev();
extern void _ZN10S3281C2_nt4v170Ev();
extern void _ZN10S3281C2_nt4v171Ev();
extern void _ZN10S3281C2_nt4v172Ev();
extern void _ZN10S3281C2_nt4v173Ev();
extern void _ZN10S3281C2_nt4v174Ev();
extern void _ZN10S3281C2_nt4v175Ev();
extern void _ZN10S3281C2_nt4v176Ev();
extern void _ZN10S3281C2_nt4v177Ev();
extern void _ZN10S3281C2_nt4v178Ev();
extern void _ZN10S3281C2_nt4v179Ev();
extern void _ZN10S3281C2_nt4v180Ev();
extern void _ZN10S3281C2_nt4v181Ev();
extern void _ZN10S3281C2_nt4v182Ev();
extern void _ZN10S3281C2_nt4v183Ev();
extern void _ZN10S3281C2_nt4v184Ev();
extern void _ZN10S3281C2_nt4v185Ev();
extern void _ZN10S3281C2_nt4v186Ev();
extern void _ZN10S3281C2_nt4v187Ev();
extern void _ZN10S3281C2_nt4v188Ev();
extern void _ZN10S3281C2_nt4v189Ev();
extern void _ZN10S3281C2_nt4v190Ev();
extern void _ZN10S3281C2_nt4v191Ev();
extern void _ZN10S3281C2_nt4v192Ev();
extern void _ZN10S3281C2_nt4v193Ev();
extern void _ZN10S3281C2_nt4v194Ev();
extern void _ZN10S3281C2_nt4v195Ev();
extern void _ZN10S3281C2_nt4v196Ev();
extern void _ZN10S3281C2_nt4v197Ev();
extern void _ZN10S3281C2_nt4v198Ev();
extern void _ZN10S3281C2_nt4v199Ev();
extern void _ZN10S3281C2_nt4v200Ev();
extern void _ZN10S3281C2_nt4v201Ev();
extern void _ZN10S3281C2_nt4v202Ev();
extern void _ZN10S3281C2_nt4v203Ev();
extern void _ZN10S3281C2_nt4v204Ev();
extern void _ZN10S3281C2_nt4v205Ev();
extern void _ZN10S3281C2_nt4v206Ev();
extern void _ZN10S3281C2_nt4v207Ev();
extern void _ZN10S3281C2_nt4v208Ev();
extern void _ZN10S3281C2_nt4v209Ev();
extern void _ZN10S3281C2_nt4v210Ev();
extern void _ZN10S3281C2_nt4v211Ev();
static  VTBL_ENTRY vtc_S3281C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3281C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3281C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v211Ev,
};
extern VTBL_ENTRY _ZTI10S3281C2_nt[];
VTBL_ENTRY *P__ZTI10S3281C2_nt = _ZTI10S3281C2_nt; 
extern  VTBL_ENTRY _ZTV10S3281C2_nt[];
Class_Descriptor cd_S3281C2_nt = {  "S3281C2_nt", // class name
  bases_S3281C2_nt, 1,
  &(vtc_S3281C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3281C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3281C2_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  S3281C1  : S3281C2_nt {
  int s3281c1f0[2];
  unsigned int s3281c1f1:1;
  unsigned int s3281c1f2:1;
  void *s3281c1f3;
  char s3281c1f4;
  virtual  ~S3281C1(); // _ZN7S3281C1D1Ev
  virtual void  v1(); // _ZN7S3281C12v1Ev
  virtual void  v2(); // _ZN7S3281C12v2Ev
  virtual void  v3(); // _ZN7S3281C12v3Ev
  virtual void  v4(); // _ZN7S3281C12v4Ev
  S3281C1(); // tgen
};
//SIG(1 S3281C1) 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 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 v4 Fi[2] Fi:1 Fi:1 Fp Fc}


 S3281C1 ::~S3281C1(){ note_dtor("S3281C1", this);}
void  S3281C1 ::v1(){vfunc_called(this, "_ZN7S3281C12v1Ev");}
void  S3281C1 ::v2(){vfunc_called(this, "_ZN7S3281C12v2Ev");}
void  S3281C1 ::v3(){vfunc_called(this, "_ZN7S3281C12v3Ev");}
void  S3281C1 ::v4(){vfunc_called(this, "_ZN7S3281C12v4Ev");}
S3281C1 ::S3281C1(){ note_ctor("S3281C1", this);} // tgen

static void Test_S3281C1()
{
  extern Class_Descriptor cd_S3281C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(76,115)];
    init_test(&cd_S3281C1, buf);
    S3281C1 *dp, &lv = *(dp=new (buf) S3281C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(600,456), "sizeof(S3281C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3281C1)");
    check_base_class_offset(lv, (S3281C3_nt*)(S3281C2_nt*), 0, "S3281C1");
    check_base_class_offset(lv, (S3281C2_nt*), 0, "S3281C1");
    check_field_offset(lv, s3281c1f0, ABISELECT(568,436), "S3281C1.s3281c1f0");
    set_bf_and_test(lv, s3281c1f1, ABISELECT(576,444), 0, 1, 1, "S3281C1");
    set_bf_and_test(lv, s3281c1f2, ABISELECT(576,444), 1, 1, 1, "S3281C1");
    check_field_offset(lv, s3281c1f3, ABISELECT(584,448), "S3281C1.s3281c1f3");
    check_field_offset(lv, s3281c1f4, ABISELECT(592,452), "S3281C1.s3281c1f4");
    test_class_info(&lv, &cd_S3281C1);
    dp->~S3281C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3281C1(Test_S3281C1, "S3281C1", ABISELECT(600,456));

#else // __cplusplus

extern void _ZN7S3281C1C1Ev();
extern void _ZN7S3281C1D1Ev();
Name_Map name_map_S3281C1[] = {
  NSPAIR(_ZN7S3281C1C1Ev),
  NSPAIR(_ZN7S3281C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3281C3_nt;
extern VTBL_ENTRY _ZTI10S3281C3_nt[];
extern  VTBL_ENTRY _ZTV10S3281C3_nt[];
extern Class_Descriptor cd_S3281C2_nt;
extern VTBL_ENTRY _ZTI10S3281C2_nt[];
extern  VTBL_ENTRY _ZTV10S3281C2_nt[];
static Base_Class bases_S3281C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3281C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3281C1[];
extern void _ZN7S3281C1D1Ev();
extern void _ZN7S3281C1D0Ev();
extern void _ZN10S3281C3_nt2v5Ev();
extern void _ZN10S3281C3_nt2v6Ev();
extern void _ZN10S3281C3_nt2v7Ev();
extern void _ZN10S3281C3_nt2v8Ev();
extern void _ZN10S3281C3_nt2v9Ev();
extern void _ZN10S3281C3_nt3v10Ev();
extern void _ZN10S3281C3_nt3v11Ev();
extern void _ZN10S3281C3_nt3v12Ev();
extern void _ZN10S3281C3_nt3v13Ev();
extern void _ZN10S3281C3_nt3v14Ev();
extern void _ZN10S3281C3_nt3v15Ev();
extern void _ZN10S3281C3_nt3v16Ev();
extern void _ZN10S3281C3_nt3v17Ev();
extern void _ZN10S3281C3_nt3v18Ev();
extern void _ZN10S3281C3_nt3v19Ev();
extern void _ZN10S3281C3_nt3v20Ev();
extern void _ZN10S3281C3_nt3v21Ev();
extern void _ZN10S3281C3_nt3v22Ev();
extern void _ZN10S3281C3_nt3v23Ev();
extern void _ZN10S3281C3_nt3v24Ev();
extern void _ZN10S3281C3_nt3v25Ev();
extern void _ZN10S3281C3_nt3v26Ev();
extern void _ZN10S3281C3_nt3v27Ev();
extern void _ZN10S3281C3_nt3v28Ev();
extern void _ZN10S3281C3_nt3v29Ev();
extern void _ZN10S3281C3_nt3v30Ev();
extern void _ZN10S3281C3_nt3v31Ev();
extern void _ZN10S3281C3_nt3v32Ev();
extern void _ZN10S3281C3_nt3v33Ev();
extern void _ZN10S3281C3_nt3v34Ev();
extern void _ZN10S3281C3_nt3v35Ev();
extern void _ZN10S3281C3_nt3v36Ev();
extern void _ZN10S3281C3_nt3v37Ev();
extern void _ZN10S3281C3_nt3v38Ev();
extern void _ZN10S3281C3_nt3v39Ev();
extern void _ZN10S3281C3_nt3v40Ev();
extern void _ZN10S3281C3_nt3v41Ev();
extern void _ZN10S3281C3_nt3v42Ev();
extern void _ZN10S3281C3_nt3v43Ev();
extern void _ZN10S3281C3_nt3v44Ev();
extern void _ZN10S3281C3_nt3v45Ev();
extern void _ZN10S3281C3_nt3v46Ev();
extern void _ZN10S3281C3_nt3v47Ev();
extern void _ZN10S3281C3_nt3v48Ev();
extern void _ZN10S3281C3_nt3v49Ev();
extern void _ZN10S3281C3_nt3v50Ev();
extern void _ZN10S3281C3_nt3v51Ev();
extern void _ZN10S3281C3_nt3v52Ev();
extern void _ZN10S3281C3_nt3v53Ev();
extern void _ZN10S3281C3_nt3v54Ev();
extern void _ZN10S3281C3_nt3v55Ev();
extern void _ZN10S3281C3_nt3v56Ev();
extern void _ZN10S3281C3_nt3v57Ev();
extern void _ZN10S3281C3_nt3v58Ev();
extern void _ZN10S3281C3_nt3v59Ev();
extern void _ZN10S3281C3_nt3v60Ev();
extern void _ZN10S3281C3_nt3v61Ev();
extern void _ZN10S3281C3_nt3v62Ev();
extern void _ZN10S3281C3_nt3v63Ev();
extern void _ZN10S3281C3_nt3v64Ev();
extern void _ZN10S3281C3_nt3v65Ev();
extern void _ZN10S3281C3_nt3v66Ev();
extern void _ZN10S3281C3_nt3v67Ev();
extern void _ZN10S3281C3_nt3v68Ev();
extern void _ZN10S3281C2_nt3v69Ev();
extern void _ZN10S3281C2_nt3v70Ev();
extern void _ZN10S3281C2_nt3v71Ev();
extern void _ZN10S3281C2_nt3v72Ev();
extern void _ZN10S3281C2_nt3v73Ev();
extern void _ZN10S3281C2_nt3v74Ev();
extern void _ZN10S3281C2_nt3v75Ev();
extern void _ZN10S3281C2_nt3v76Ev();
extern void _ZN10S3281C2_nt3v77Ev();
extern void _ZN10S3281C2_nt3v78Ev();
extern void _ZN10S3281C2_nt3v79Ev();
extern void _ZN10S3281C2_nt3v80Ev();
extern void _ZN10S3281C2_nt3v81Ev();
extern void _ZN10S3281C2_nt3v82Ev();
extern void _ZN10S3281C2_nt3v83Ev();
extern void _ZN10S3281C2_nt3v84Ev();
extern void _ZN10S3281C2_nt3v85Ev();
extern void _ZN10S3281C2_nt3v86Ev();
extern void _ZN10S3281C2_nt3v87Ev();
extern void _ZN10S3281C2_nt3v88Ev();
extern void _ZN10S3281C2_nt3v89Ev();
extern void _ZN10S3281C2_nt3v90Ev();
extern void _ZN10S3281C2_nt3v91Ev();
extern void _ZN10S3281C2_nt3v92Ev();
extern void _ZN10S3281C2_nt3v93Ev();
extern void _ZN10S3281C2_nt3v94Ev();
extern void _ZN10S3281C2_nt3v95Ev();
extern void _ZN10S3281C2_nt3v96Ev();
extern void _ZN10S3281C2_nt3v97Ev();
extern void _ZN10S3281C2_nt3v98Ev();
extern void _ZN10S3281C2_nt3v99Ev();
extern void _ZN10S3281C2_nt4v100Ev();
extern void _ZN10S3281C2_nt4v101Ev();
extern void _ZN10S3281C2_nt4v102Ev();
extern void _ZN10S3281C2_nt4v103Ev();
extern void _ZN10S3281C2_nt4v104Ev();
extern void _ZN10S3281C2_nt4v105Ev();
extern void _ZN10S3281C2_nt4v106Ev();
extern void _ZN10S3281C2_nt4v107Ev();
extern void _ZN10S3281C2_nt4v108Ev();
extern void _ZN10S3281C2_nt4v109Ev();
extern void _ZN10S3281C2_nt4v110Ev();
extern void _ZN10S3281C2_nt4v111Ev();
extern void _ZN10S3281C2_nt4v112Ev();
extern void _ZN10S3281C2_nt4v113Ev();
extern void _ZN10S3281C2_nt4v114Ev();
extern void _ZN10S3281C2_nt4v115Ev();
extern void _ZN10S3281C2_nt4v116Ev();
extern void _ZN10S3281C2_nt4v117Ev();
extern void _ZN10S3281C2_nt4v118Ev();
extern void _ZN10S3281C2_nt4v119Ev();
extern void _ZN10S3281C2_nt4v120Ev();
extern void _ZN10S3281C2_nt4v121Ev();
extern void _ZN10S3281C2_nt4v122Ev();
extern void _ZN10S3281C2_nt4v123Ev();
extern void _ZN10S3281C2_nt4v124Ev();
extern void _ZN10S3281C2_nt4v125Ev();
extern void _ZN10S3281C2_nt4v126Ev();
extern void _ZN10S3281C2_nt4v127Ev();
extern void _ZN10S3281C2_nt4v128Ev();
extern void _ZN10S3281C2_nt4v129Ev();
extern void _ZN10S3281C2_nt4v130Ev();
extern void _ZN10S3281C2_nt4v131Ev();
extern void _ZN10S3281C2_nt4v132Ev();
extern void _ZN10S3281C2_nt4v133Ev();
extern void _ZN10S3281C2_nt4v134Ev();
extern void _ZN10S3281C2_nt4v135Ev();
extern void _ZN10S3281C2_nt4v136Ev();
extern void _ZN10S3281C2_nt4v137Ev();
extern void _ZN10S3281C2_nt4v138Ev();
extern void _ZN10S3281C2_nt4v139Ev();
extern void _ZN10S3281C2_nt4v140Ev();
extern void _ZN10S3281C2_nt4v141Ev();
extern void _ZN10S3281C2_nt4v142Ev();
extern void _ZN10S3281C2_nt4v143Ev();
extern void _ZN10S3281C2_nt4v144Ev();
extern void _ZN10S3281C2_nt4v145Ev();
extern void _ZN10S3281C2_nt4v146Ev();
extern void _ZN10S3281C2_nt4v147Ev();
extern void _ZN10S3281C2_nt4v148Ev();
extern void _ZN10S3281C2_nt4v149Ev();
extern void _ZN10S3281C2_nt4v150Ev();
extern void _ZN10S3281C2_nt4v151Ev();
extern void _ZN10S3281C2_nt4v152Ev();
extern void _ZN10S3281C2_nt4v153Ev();
extern void _ZN10S3281C2_nt4v154Ev();
extern void _ZN10S3281C2_nt4v155Ev();
extern void _ZN10S3281C2_nt4v156Ev();
extern void _ZN10S3281C2_nt4v157Ev();
extern void _ZN10S3281C2_nt4v158Ev();
extern void _ZN10S3281C2_nt4v159Ev();
extern void _ZN10S3281C2_nt4v160Ev();
extern void _ZN10S3281C2_nt4v161Ev();
extern void _ZN10S3281C2_nt4v162Ev();
extern void _ZN10S3281C2_nt4v163Ev();
extern void _ZN10S3281C2_nt4v164Ev();
extern void _ZN10S3281C2_nt4v165Ev();
extern void _ZN10S3281C2_nt4v166Ev();
extern void _ZN10S3281C2_nt4v167Ev();
extern void _ZN10S3281C2_nt4v168Ev();
extern void _ZN10S3281C2_nt4v169Ev();
extern void _ZN10S3281C2_nt4v170Ev();
extern void _ZN10S3281C2_nt4v171Ev();
extern void _ZN10S3281C2_nt4v172Ev();
extern void _ZN10S3281C2_nt4v173Ev();
extern void _ZN10S3281C2_nt4v174Ev();
extern void _ZN10S3281C2_nt4v175Ev();
extern void _ZN10S3281C2_nt4v176Ev();
extern void _ZN10S3281C2_nt4v177Ev();
extern void _ZN10S3281C2_nt4v178Ev();
extern void _ZN10S3281C2_nt4v179Ev();
extern void _ZN10S3281C2_nt4v180Ev();
extern void _ZN10S3281C2_nt4v181Ev();
extern void _ZN10S3281C2_nt4v182Ev();
extern void _ZN10S3281C2_nt4v183Ev();
extern void _ZN10S3281C2_nt4v184Ev();
extern void _ZN10S3281C2_nt4v185Ev();
extern void _ZN10S3281C2_nt4v186Ev();
extern void _ZN10S3281C2_nt4v187Ev();
extern void _ZN10S3281C2_nt4v188Ev();
extern void _ZN10S3281C2_nt4v189Ev();
extern void _ZN10S3281C2_nt4v190Ev();
extern void _ZN10S3281C2_nt4v191Ev();
extern void _ZN10S3281C2_nt4v192Ev();
extern void _ZN10S3281C2_nt4v193Ev();
extern void _ZN10S3281C2_nt4v194Ev();
extern void _ZN10S3281C2_nt4v195Ev();
extern void _ZN10S3281C2_nt4v196Ev();
extern void _ZN10S3281C2_nt4v197Ev();
extern void _ZN10S3281C2_nt4v198Ev();
extern void _ZN10S3281C2_nt4v199Ev();
extern void _ZN10S3281C2_nt4v200Ev();
extern void _ZN10S3281C2_nt4v201Ev();
extern void _ZN10S3281C2_nt4v202Ev();
extern void _ZN10S3281C2_nt4v203Ev();
extern void _ZN10S3281C2_nt4v204Ev();
extern void _ZN10S3281C2_nt4v205Ev();
extern void _ZN10S3281C2_nt4v206Ev();
extern void _ZN10S3281C2_nt4v207Ev();
extern void _ZN10S3281C2_nt4v208Ev();
extern void _ZN10S3281C2_nt4v209Ev();
extern void _ZN10S3281C2_nt4v210Ev();
extern void _ZN10S3281C2_nt4v211Ev();
extern void _ZN7S3281C12v1Ev();
extern void _ZN7S3281C12v2Ev();
extern void _ZN7S3281C12v3Ev();
extern void _ZN7S3281C12v4Ev();
static  VTBL_ENTRY vtc_S3281C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3281C1[0]),
  (VTBL_ENTRY)&_ZN7S3281C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3281C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3281C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S3281C2_nt4v211Ev,
  (VTBL_ENTRY)&_ZN7S3281C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3281C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3281C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3281C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3281C1[];
extern  VTBL_ENTRY _ZTV7S3281C1[];
Class_Descriptor cd_S3281C1 = {  "S3281C1", // class name
  bases_S3281C1, 2,
  &(vtc_S3281C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(600,456), // object size
  NSPAIRA(_ZTI7S3281C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3281C1),215, //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  S4224C6_nt  {
  void  mf4224c6(); // _ZN10S4224C6_nt8mf4224c6Ev
};
//SIG(-1 S4224C6_nt) C1{ m}


void  S4224C6_nt ::mf4224c6(){}

//skip512 S4224C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C5_nt  {
  void *s4224c5f0;
  int s4224c5f1;
  ::S4224C6_nt s4224c5f2;
  ::S4224C6_nt s4224c5f3;
  void  mf4224c5(); // _ZN10S4224C5_nt8mf4224c5Ev
};
//SIG(-1 S4224C5_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S4224C5_nt ::mf4224c5(){}

//skip512 S4224C5_nt

#else // __cplusplus

Class_Descriptor cd_S4224C5_nt = {  "S4224C5_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  S4224C4_nt  : S4224C5_nt {
};
//SIG(-1 S4224C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S4224C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S4224C5_nt;
static Base_Class bases_S4224C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S4224C3_nt  {
  void *s4224c3f0;
  int s4224c3f1;
  ::S4224C4_nt s4224c3f2;
  ::S4224C4_nt s4224c3f3;
  int s4224c3f4;
  virtual  ~S4224C3_nt(); // _ZN10S4224C3_ntD1Ev
  virtual void  v11(); // _ZN10S4224C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4224C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4224C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4224C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4224C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4224C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4224C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4224C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4224C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4224C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4224C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4224C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4224C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4224C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4224C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4224C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4224C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4224C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4224C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4224C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4224C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4224C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4224C3_nt3v33Ev
  S4224C3_nt(); // tgen
};
//SIG(-1 S4224C3_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} FC4}} FC2 Fi}


 S4224C3_nt ::~S4224C3_nt(){ note_dtor("S4224C3_nt", this);}
void  S4224C3_nt ::v11(){vfunc_called(this, "_ZN10S4224C3_nt3v11Ev");}
void  S4224C3_nt ::v12(){vfunc_called(this, "_ZN10S4224C3_nt3v12Ev");}
void  S4224C3_nt ::v13(){vfunc_called(this, "_ZN10S4224C3_nt3v13Ev");}
void  S4224C3_nt ::v14(){vfunc_called(this, "_ZN10S4224C3_nt3v14Ev");}
void  S4224C3_nt ::v15(){vfunc_called(this, "_ZN10S4224C3_nt3v15Ev");}
void  S4224C3_nt ::v16(){vfunc_called(this, "_ZN10S4224C3_nt3v16Ev");}
void  S4224C3_nt ::v17(){vfunc_called(this, "_ZN10S4224C3_nt3v17Ev");}
void  S4224C3_nt ::v18(){vfunc_called(this, "_ZN10S4224C3_nt3v18Ev");}
void  S4224C3_nt ::v19(){vfunc_called(this, "_ZN10S4224C3_nt3v19Ev");}
void  S4224C3_nt ::v20(){vfunc_called(this, "_ZN10S4224C3_nt3v20Ev");}
void  S4224C3_nt ::v21(){vfunc_called(this, "_ZN10S4224C3_nt3v21Ev");}
void  S4224C3_nt ::v22(){vfunc_called(this, "_ZN10S4224C3_nt3v22Ev");}
void  S4224C3_nt ::v23(){vfunc_called(this, "_ZN10S4224C3_nt3v23Ev");}
void  S4224C3_nt ::v24(){vfunc_called(this, "_ZN10S4224C3_nt3v24Ev");}
void  S4224C3_nt ::v25(){vfunc_called(this, "_ZN10S4224C3_nt3v25Ev");}
void  S4224C3_nt ::v26(){vfunc_called(this, "_ZN10S4224C3_nt3v26Ev");}
void  S4224C3_nt ::v27(){vfunc_called(this, "_ZN10S4224C3_nt3v27Ev");}
void  S4224C3_nt ::v28(){vfunc_called(this, "_ZN10S4224C3_nt3v28Ev");}
void  S4224C3_nt ::v29(){vfunc_called(this, "_ZN10S4224C3_nt3v29Ev");}
void  S4224C3_nt ::v30(){vfunc_called(this, "_ZN10S4224C3_nt3v30Ev");}
void  S4224C3_nt ::v31(){vfunc_called(this, "_ZN10S4224C3_nt3v31Ev");}
void  S4224C3_nt ::v32(){vfunc_called(this, "_ZN10S4224C3_nt3v32Ev");}
void  S4224C3_nt ::v33(){vfunc_called(this, "_ZN10S4224C3_nt3v33Ev");}
S4224C3_nt ::S4224C3_nt(){ note_ctor("S4224C3_nt", this);} // tgen

//skip512 S4224C3_nt

#else // __cplusplus

extern void _ZN10S4224C3_ntC1Ev();
extern void _ZN10S4224C3_ntD1Ev();
Name_Map name_map_S4224C3_nt[] = {
  NSPAIR(_ZN10S4224C3_ntC1Ev),
  NSPAIR(_ZN10S4224C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4224C3_nt[];
extern void _ZN10S4224C3_ntD1Ev();
extern void _ZN10S4224C3_ntD0Ev();
extern void _ZN10S4224C3_nt3v11Ev();
extern void _ZN10S4224C3_nt3v12Ev();
extern void _ZN10S4224C3_nt3v13Ev();
extern void _ZN10S4224C3_nt3v14Ev();
extern void _ZN10S4224C3_nt3v15Ev();
extern void _ZN10S4224C3_nt3v16Ev();
extern void _ZN10S4224C3_nt3v17Ev();
extern void _ZN10S4224C3_nt3v18Ev();
extern void _ZN10S4224C3_nt3v19Ev();
extern void _ZN10S4224C3_nt3v20Ev();
extern void _ZN10S4224C3_nt3v21Ev();
extern void _ZN10S4224C3_nt3v22Ev();
extern void _ZN10S4224C3_nt3v23Ev();
extern void _ZN10S4224C3_nt3v24Ev();
extern void _ZN10S4224C3_nt3v25Ev();
extern void _ZN10S4224C3_nt3v26Ev();
extern void _ZN10S4224C3_nt3v27Ev();
extern void _ZN10S4224C3_nt3v28Ev();
extern void _ZN10S4224C3_nt3v29Ev();
extern void _ZN10S4224C3_nt3v30Ev();
extern void _ZN10S4224C3_nt3v31Ev();
extern void _ZN10S4224C3_nt3v32Ev();
extern void _ZN10S4224C3_nt3v33Ev();
static  VTBL_ENTRY vtc_S4224C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4224C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4224C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI10S4224C3_nt[];
VTBL_ENTRY *P__ZTI10S4224C3_nt = _ZTI10S4224C3_nt; 
extern  VTBL_ENTRY _ZTV10S4224C3_nt[];
Class_Descriptor cd_S4224C3_nt = {  "S4224C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4224C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S4224C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4224C3_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  S4224C13_nt  {
  __tsi64 s4224c13f0[2];
  void  mf4224c13(); // _ZN11S4224C13_nt9mf4224c13Ev
};
//SIG(-1 S4224C13_nt) C1{ m FL[2]}


void  S4224C13_nt ::mf4224c13(){}

//skip512 S4224C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C12_nt  {
  ::S4224C13_nt s4224c12f0;
  void  mf4224c12(); // _ZN11S4224C12_nt9mf4224c12Ev
};
//SIG(-1 S4224C12_nt) C1{ m FC2{ m FL[2]}}


void  S4224C12_nt ::mf4224c12(){}

//skip512 S4224C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C16_nt  {
  ::S4224C12_nt s4224c16f0;
  void  mf4224c16(); // _ZN11S4224C16_nt9mf4224c16Ev
};
//SIG(-1 S4224C16_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S4224C16_nt ::mf4224c16(){}

//skip512 S4224C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C17_nt  {
  ::S4224C12_nt s4224c17f0;
  ::S4224C12_nt s4224c17f1;
  ::S4224C12_nt s4224c17f2;
  ::S4224C12_nt s4224c17f3;
  void  mf4224c17(); // _ZN11S4224C17_nt9mf4224c17Ev
};
//SIG(-1 S4224C17_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S4224C17_nt ::mf4224c17(){}

//skip512 S4224C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C20  {
  void  mf4224c20(); // _ZN8S4224C209mf4224c20Ev
};
//SIG(-1 S4224C20) C1{ m}


void  S4224C20 ::mf4224c20(){}

static void Test_S4224C20()
{
  {
    init_simple_test("S4224C20");
    S4224C20 lv;
    check2(sizeof(lv), 1, "sizeof(S4224C20)");
    check2(__alignof__(lv), 1, "__alignof__(S4224C20)");
  }
}
static Arrange_To_Call_Me vS4224C20(Test_S4224C20, "S4224C20", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C19_nt  {
  void *s4224c19f0;
  int s4224c19f1;
  ::S4224C20 s4224c19f2;
  void  mf4224c19(); // _ZN11S4224C19_nt9mf4224c19Ev
};
//SIG(-1 S4224C19_nt) C1{ m Fp Fi FC2{ m}}


void  S4224C19_nt ::mf4224c19(){}

//skip512 S4224C19_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C18_nt  {
  ::S4224C19_nt s4224c18f0;
  int s4224c18f1;
  void  mf4224c18(); // _ZN11S4224C18_nt9mf4224c18Ev
};
//SIG(-1 S4224C18_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S4224C18_nt ::mf4224c18(){}

//skip512 S4224C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C23  {
  void  mf4224c23(); // _ZN8S4224C239mf4224c23Ev
};
//SIG(-1 S4224C23) C1{ m}


void  S4224C23 ::mf4224c23(){}

static void Test_S4224C23()
{
  {
    init_simple_test("S4224C23");
    S4224C23 lv;
    check2(sizeof(lv), 1, "sizeof(S4224C23)");
    check2(__alignof__(lv), 1, "__alignof__(S4224C23)");
  }
}
static Arrange_To_Call_Me vS4224C23(Test_S4224C23, "S4224C23", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C21  {
  void *s4224c21f0;
  int s4224c21f1;
  ::S4224C20 s4224c21f2;
  ::S4224C23 s4224c21f3;
  void  mf4224c21(); // _ZN8S4224C219mf4224c21Ev
};
//SIG(-1 S4224C21) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4224C21 ::mf4224c21(){}

static void Test_S4224C21()
{
  {
    init_simple_test("S4224C21");
    S4224C21 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4224C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4224C21)");
    check_field_offset(lv, s4224c21f0, 0, "S4224C21.s4224c21f0");
    check_field_offset(lv, s4224c21f1, ABISELECT(8,4), "S4224C21.s4224c21f1");
    check_field_offset(lv, s4224c21f2, ABISELECT(12,8), "S4224C21.s4224c21f2");
    check_field_offset(lv, s4224c21f3, ABISELECT(13,9), "S4224C21.s4224c21f3");
  }
}
static Arrange_To_Call_Me vS4224C21(Test_S4224C21, "S4224C21", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C27  {
  void  mf4224c27(); // _ZN8S4224C279mf4224c27Ev
};
//SIG(-1 S4224C27) C1{ m}


void  S4224C27 ::mf4224c27(){}

static void Test_S4224C27()
{
  {
    init_simple_test("S4224C27");
    S4224C27 lv;
    check2(sizeof(lv), 1, "sizeof(S4224C27)");
    check2(__alignof__(lv), 1, "__alignof__(S4224C27)");
  }
}
static Arrange_To_Call_Me vS4224C27(Test_S4224C27, "S4224C27", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C25  {
  void *s4224c25f0;
  int s4224c25f1;
  ::S4224C23 s4224c25f2;
  ::S4224C27 s4224c25f3;
  void  mf4224c25(); // _ZN8S4224C259mf4224c25Ev
};
//SIG(-1 S4224C25) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4224C25 ::mf4224c25(){}

static void Test_S4224C25()
{
  {
    init_simple_test("S4224C25");
    S4224C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4224C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4224C25)");
    check_field_offset(lv, s4224c25f0, 0, "S4224C25.s4224c25f0");
    check_field_offset(lv, s4224c25f1, ABISELECT(8,4), "S4224C25.s4224c25f1");
    check_field_offset(lv, s4224c25f2, ABISELECT(12,8), "S4224C25.s4224c25f2");
    check_field_offset(lv, s4224c25f3, ABISELECT(13,9), "S4224C25.s4224c25f3");
  }
}
static Arrange_To_Call_Me vS4224C25(Test_S4224C25, "S4224C25", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S4224C25 = {  "S4224C25", // 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  S4224C24  : S4224C25 {
};
//SIG(-1 S4224C24) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



static void Test_S4224C24()
{
  extern Class_Descriptor cd_S4224C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4224C24, buf);
    S4224C24 &lv = *(new (buf) S4224C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4224C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4224C24)");
    check_base_class_offset(lv, (S4224C25*), 0, "S4224C24");
    test_class_info(&lv, &cd_S4224C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4224C24(Test_S4224C24, "S4224C24", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S4224C25;
static Base_Class bases_S4224C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S4224C24 = {  "S4224C24", // class name
  bases_S4224C24, 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  S4224C28_nt  {
  void *s4224c28f0;
  int s4224c28f1[2];
  ::S4224C27 s4224c28f2;
  void  mf4224c28(); // _ZN11S4224C28_nt9mf4224c28Ev
};
//SIG(-1 S4224C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S4224C28_nt ::mf4224c28(){}

//skip512 S4224C28_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C37  {
  void  mf4224c37(); // _ZN8S4224C379mf4224c37Ev
};
//SIG(-1 S4224C37) C1{ m}


void  S4224C37 ::mf4224c37(){}

static void Test_S4224C37()
{
  {
    init_simple_test("S4224C37");
    S4224C37 lv;
    check2(sizeof(lv), 1, "sizeof(S4224C37)");
    check2(__alignof__(lv), 1, "__alignof__(S4224C37)");
  }
}
static Arrange_To_Call_Me vS4224C37(Test_S4224C37, "S4224C37", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4224C37[];
VTBL_ENTRY *P__ZTI8S4224C37 = _ZTI8S4224C37; 
Class_Descriptor cd_S4224C37 = {  "S4224C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4224C37),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  S4224C36  {
  void *s4224c36f0;
  int s4224c36f1[2];
  ::S4224C37 s4224c36f2;
  void  mf4224c36(); // _ZN8S4224C369mf4224c36Ev
};
//SIG(-1 S4224C36) C1{ m Fp Fi[2] FC2{ m}}


void  S4224C36 ::mf4224c36(){}

static void Test_S4224C36()
{
  {
    init_simple_test("S4224C36");
    S4224C36 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4224C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4224C36)");
    check_field_offset(lv, s4224c36f0, 0, "S4224C36.s4224c36f0");
    check_field_offset(lv, s4224c36f1, ABISELECT(8,4), "S4224C36.s4224c36f1");
    check_field_offset(lv, s4224c36f2, ABISELECT(16,12), "S4224C36.s4224c36f2");
  }
}
static Arrange_To_Call_Me vS4224C36(Test_S4224C36, "S4224C36", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C2_nt  : S4224C3_nt {
  ::S4224C12_nt s4224c2f0;
  ::S4224C12_nt s4224c2f1;
  ::S4224C12_nt s4224c2f2;
  ::S4224C12_nt s4224c2f3;
  ::S4224C16_nt s4224c2f4;
  ::S4224C17_nt s4224c2f5;
  ::S4224C17_nt s4224c2f6;
  ::S4224C12_nt s4224c2f7;
  ::S4224C12_nt s4224c2f8;
  ::S4224C12_nt s4224c2f9;
  void *s4224c2f10;
  ::S4224C16_nt s4224c2f11;
  ::S4224C18_nt s4224c2f12;
  int s4224c2f13;
  void *s4224c2f14[7];
  ::S4224C21 s4224c2f15;
  int s4224c2f16:8;
  int s4224c2f17:8;
  int s4224c2f18:16;
  int s4224c2f19:16;
  int s4224c2f20:8;
  int s4224c2f21:8;
  int s4224c2f22:8;
  int s4224c2f23:32;
  int s4224c2f24:8;
  int s4224c2f25:4;
  int s4224c2f26:4;
  int s4224c2f27:4;
  int s4224c2f28:4;
  int s4224c2f29:4;
  int s4224c2f30:4;
  int s4224c2f31:4;
  int s4224c2f32:4;
  int s4224c2f33:4;
  int s4224c2f34:4;
  unsigned char s4224c2f35:1;
  unsigned char s4224c2f36:1;
  unsigned char s4224c2f37:1;
  unsigned char s4224c2f38:1;
  unsigned char s4224c2f39:1;
  unsigned char s4224c2f40:1;
  unsigned char s4224c2f41:1;
  unsigned char s4224c2f42:1;
  unsigned char s4224c2f43:1;
  unsigned char s4224c2f44:1;
  unsigned char s4224c2f45:1;
  unsigned char s4224c2f46:1;
  unsigned char s4224c2f47:1;
  unsigned char s4224c2f48:1;
  unsigned char s4224c2f49:1;
  unsigned char s4224c2f50:1;
  unsigned char s4224c2f51:1;
  unsigned char s4224c2f52:1;
  unsigned char s4224c2f53:1;
  unsigned char s4224c2f54:1;
  unsigned char s4224c2f55:1;
  unsigned char s4224c2f56:1;
  unsigned char s4224c2f57:1;
  unsigned char s4224c2f58:1;
  unsigned char s4224c2f59:1;
  unsigned char s4224c2f60:1;
  unsigned char s4224c2f61:1;
  unsigned char s4224c2f62:1;
  unsigned char s4224c2f63:1;
  unsigned char s4224c2f64:1;
  unsigned char s4224c2f65:1;
  unsigned char s4224c2f66:1;
  unsigned char s4224c2f67:1;
  unsigned char s4224c2f68:1;
  unsigned char s4224c2f69:1;
  unsigned char s4224c2f70:1;
  unsigned char s4224c2f71:1;
  unsigned char s4224c2f72:1;
  unsigned char s4224c2f73:1;
  unsigned char s4224c2f74:1;
  unsigned char s4224c2f75:1;
  int s4224c2f76[7];
  void *s4224c2f77[6];
  int s4224c2f78:8;
  int s4224c2f79:8;
  int s4224c2f80:8;
  int s4224c2f81:8;
  int s4224c2f82:8;
  int s4224c2f83:8;
  ::S4224C24 s4224c2f84;
  void *s4224c2f85[4];
  int s4224c2f86:8;
  int s4224c2f87:8;
  int s4224c2f88:8;
  int s4224c2f89:8;
  int s4224c2f90:8;
  int s4224c2f91:16;
  int s4224c2f92:16;
  int s4224c2f93:16;
  int s4224c2f94:4;
  int s4224c2f95:4;
  int s4224c2f96:4;
  int s4224c2f97:4;
  int s4224c2f98:4;
  int s4224c2f99:4;
  int s4224c2f100:4;
  int s4224c2f101:4;
  int s4224c2f102:4;
  int s4224c2f103:4;
  int s4224c2f104:4;
  int s4224c2f105:4;
  int s4224c2f106:8;
  int s4224c2f107:8;
  int s4224c2f108:8;
  void *s4224c2f109[7];
  ::S4224C28_nt s4224c2f110;
  void *s4224c2f111[2];
  int s4224c2f112:16;
  int s4224c2f113:16;
  ::S4224C24 s4224c2f114;
  ::S4224C28_nt s4224c2f115;
  ::S4224C36 s4224c2f116;
  void *s4224c2f117[2];
  int s4224c2f118:24;
  int s4224c2f119:8;
  void *s4224c2f120;
  virtual  ~S4224C2_nt(); // _ZN10S4224C2_ntD1Ev
  virtual void  v34(); // _ZN10S4224C2_nt3v34Ev
  virtual void  v35(); // _ZN10S4224C2_nt3v35Ev
  virtual void  v36(); // _ZN10S4224C2_nt3v36Ev
  virtual void  v37(); // _ZN10S4224C2_nt3v37Ev
  virtual void  v38(); // _ZN10S4224C2_nt3v38Ev
  virtual void  v39(); // _ZN10S4224C2_nt3v39Ev
  virtual void  v40(); // _ZN10S4224C2_nt3v40Ev
  virtual void  v41(); // _ZN10S4224C2_nt3v41Ev
  virtual void  v42(); // _ZN10S4224C2_nt3v42Ev
  virtual void  v43(); // _ZN10S4224C2_nt3v43Ev
  virtual void  v44(); // _ZN10S4224C2_nt3v44Ev
  virtual void  v45(); // _ZN10S4224C2_nt3v45Ev
  virtual void  v46(); // _ZN10S4224C2_nt3v46Ev
  virtual void  v47(); // _ZN10S4224C2_nt3v47Ev
  virtual void  v48(); // _ZN10S4224C2_nt3v48Ev
  virtual void  v49(); // _ZN10S4224C2_nt3v49Ev
  virtual void  v50(); // _ZN10S4224C2_nt3v50Ev
  virtual void  v51(); // _ZN10S4224C2_nt3v51Ev
  virtual void  v52(); // _ZN10S4224C2_nt3v52Ev
  virtual void  v53(); // _ZN10S4224C2_nt3v53Ev
  virtual void  v54(); // _ZN10S4224C2_nt3v54Ev
  virtual void  v55(); // _ZN10S4224C2_nt3v55Ev
  virtual void  v56(); // _ZN10S4224C2_nt3v56Ev
  virtual void  v57(); // _ZN10S4224C2_nt3v57Ev
  virtual void  v58(); // _ZN10S4224C2_nt3v58Ev
  virtual void  v59(); // _ZN10S4224C2_nt3v59Ev
  virtual void  v60(); // _ZN10S4224C2_nt3v60Ev
  virtual void  v61(); // _ZN10S4224C2_nt3v61Ev
  virtual void  v62(); // _ZN10S4224C2_nt3v62Ev
  virtual void  v63(); // _ZN10S4224C2_nt3v63Ev
  virtual void  v64(); // _ZN10S4224C2_nt3v64Ev
  virtual void  v65(); // _ZN10S4224C2_nt3v65Ev
  virtual void  v66(); // _ZN10S4224C2_nt3v66Ev
  virtual void  v67(); // _ZN10S4224C2_nt3v67Ev
  virtual void  v68(); // _ZN10S4224C2_nt3v68Ev
  virtual void  v69(); // _ZN10S4224C2_nt3v69Ev
  virtual void  v70(); // _ZN10S4224C2_nt3v70Ev
  virtual void  v71(); // _ZN10S4224C2_nt3v71Ev
  virtual void  v72(); // _ZN10S4224C2_nt3v72Ev
  virtual void  v73(); // _ZN10S4224C2_nt3v73Ev
  virtual void  v74(); // _ZN10S4224C2_nt3v74Ev
  virtual void  v75(); // _ZN10S4224C2_nt3v75Ev
  virtual void  v76(); // _ZN10S4224C2_nt3v76Ev
  virtual void  v77(); // _ZN10S4224C2_nt3v77Ev
  virtual void  v78(); // _ZN10S4224C2_nt3v78Ev
  virtual void  v79(); // _ZN10S4224C2_nt3v79Ev
  virtual void  v80(); // _ZN10S4224C2_nt3v80Ev
  virtual void  v81(); // _ZN10S4224C2_nt3v81Ev
  virtual void  v82(); // _ZN10S4224C2_nt3v82Ev
  virtual void  v83(); // _ZN10S4224C2_nt3v83Ev
  virtual void  v84(); // _ZN10S4224C2_nt3v84Ev
  virtual void  v85(); // _ZN10S4224C2_nt3v85Ev
  virtual void  v86(); // _ZN10S4224C2_nt3v86Ev
  virtual void  v87(); // _ZN10S4224C2_nt3v87Ev
  virtual void  v88(); // _ZN10S4224C2_nt3v88Ev
  virtual void  v89(); // _ZN10S4224C2_nt3v89Ev
  virtual void  v90(); // _ZN10S4224C2_nt3v90Ev
  virtual void  v91(); // _ZN10S4224C2_nt3v91Ev
  virtual void  v92(); // _ZN10S4224C2_nt3v92Ev
  virtual void  v93(); // _ZN10S4224C2_nt3v93Ev
  virtual void  v94(); // _ZN10S4224C2_nt3v94Ev
  virtual void  v95(); // _ZN10S4224C2_nt3v95Ev
  virtual void  v96(); // _ZN10S4224C2_nt3v96Ev
  virtual void  v97(); // _ZN10S4224C2_nt3v97Ev
  virtual void  v98(); // _ZN10S4224C2_nt3v98Ev
  virtual void  v99(); // _ZN10S4224C2_nt3v99Ev
  virtual void  v100(); // _ZN10S4224C2_nt4v100Ev
  virtual void  v101(); // _ZN10S4224C2_nt4v101Ev
  virtual void  v102(); // _ZN10S4224C2_nt4v102Ev
  virtual void  v103(); // _ZN10S4224C2_nt4v103Ev
  virtual void  v104(); // _ZN10S4224C2_nt4v104Ev
  virtual void  v105(); // _ZN10S4224C2_nt4v105Ev
  virtual void  v106(); // _ZN10S4224C2_nt4v106Ev
  virtual void  v107(); // _ZN10S4224C2_nt4v107Ev
  virtual void  v108(); // _ZN10S4224C2_nt4v108Ev
  virtual void  v109(); // _ZN10S4224C2_nt4v109Ev
  virtual void  v110(); // _ZN10S4224C2_nt4v110Ev
  virtual void  v111(); // _ZN10S4224C2_nt4v111Ev
  S4224C2_nt(); // tgen
};
//SIG(-1 S4224C2_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} FC5}} 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 FC6{ m FC7{ m FL[2]}} FC6 FC6 FC6 FC8{ m FC6} FC9{ m FC6 FC6 FC6 FC6} FC9 FC6 FC6 FC6 Fp FC8 FC10{ m FC11{ m Fp Fi FC12{ m}} Fi} Fi Fp[7] FC13{ m Fp Fi FC12 FC14{ m}} 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 FC14 FC17{ m}}} 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] FC17} Fp[2] Fi:16 Fi:16 FC15 FC18 FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:24 Fi:8 Fp}


 S4224C2_nt ::~S4224C2_nt(){ note_dtor("S4224C2_nt", this);}
void  S4224C2_nt ::v34(){vfunc_called(this, "_ZN10S4224C2_nt3v34Ev");}
void  S4224C2_nt ::v35(){vfunc_called(this, "_ZN10S4224C2_nt3v35Ev");}
void  S4224C2_nt ::v36(){vfunc_called(this, "_ZN10S4224C2_nt3v36Ev");}
void  S4224C2_nt ::v37(){vfunc_called(this, "_ZN10S4224C2_nt3v37Ev");}
void  S4224C2_nt ::v38(){vfunc_called(this, "_ZN10S4224C2_nt3v38Ev");}
void  S4224C2_nt ::v39(){vfunc_called(this, "_ZN10S4224C2_nt3v39Ev");}
void  S4224C2_nt ::v40(){vfunc_called(this, "_ZN10S4224C2_nt3v40Ev");}
void  S4224C2_nt ::v41(){vfunc_called(this, "_ZN10S4224C2_nt3v41Ev");}
void  S4224C2_nt ::v42(){vfunc_called(this, "_ZN10S4224C2_nt3v42Ev");}
void  S4224C2_nt ::v43(){vfunc_called(this, "_ZN10S4224C2_nt3v43Ev");}
void  S4224C2_nt ::v44(){vfunc_called(this, "_ZN10S4224C2_nt3v44Ev");}
void  S4224C2_nt ::v45(){vfunc_called(this, "_ZN10S4224C2_nt3v45Ev");}
void  S4224C2_nt ::v46(){vfunc_called(this, "_ZN10S4224C2_nt3v46Ev");}
void  S4224C2_nt ::v47(){vfunc_called(this, "_ZN10S4224C2_nt3v47Ev");}
void  S4224C2_nt ::v48(){vfunc_called(this, "_ZN10S4224C2_nt3v48Ev");}
void  S4224C2_nt ::v49(){vfunc_called(this, "_ZN10S4224C2_nt3v49Ev");}
void  S4224C2_nt ::v50(){vfunc_called(this, "_ZN10S4224C2_nt3v50Ev");}
void  S4224C2_nt ::v51(){vfunc_called(this, "_ZN10S4224C2_nt3v51Ev");}
void  S4224C2_nt ::v52(){vfunc_called(this, "_ZN10S4224C2_nt3v52Ev");}
void  S4224C2_nt ::v53(){vfunc_called(this, "_ZN10S4224C2_nt3v53Ev");}
void  S4224C2_nt ::v54(){vfunc_called(this, "_ZN10S4224C2_nt3v54Ev");}
void  S4224C2_nt ::v55(){vfunc_called(this, "_ZN10S4224C2_nt3v55Ev");}
void  S4224C2_nt ::v56(){vfunc_called(this, "_ZN10S4224C2_nt3v56Ev");}
void  S4224C2_nt ::v57(){vfunc_called(this, "_ZN10S4224C2_nt3v57Ev");}
void  S4224C2_nt ::v58(){vfunc_called(this, "_ZN10S4224C2_nt3v58Ev");}
void  S4224C2_nt ::v59(){vfunc_called(this, "_ZN10S4224C2_nt3v59Ev");}
void  S4224C2_nt ::v60(){vfunc_called(this, "_ZN10S4224C2_nt3v60Ev");}
void  S4224C2_nt ::v61(){vfunc_called(this, "_ZN10S4224C2_nt3v61Ev");}
void  S4224C2_nt ::v62(){vfunc_called(this, "_ZN10S4224C2_nt3v62Ev");}
void  S4224C2_nt ::v63(){vfunc_called(this, "_ZN10S4224C2_nt3v63Ev");}
void  S4224C2_nt ::v64(){vfunc_called(this, "_ZN10S4224C2_nt3v64Ev");}
void  S4224C2_nt ::v65(){vfunc_called(this, "_ZN10S4224C2_nt3v65Ev");}
void  S4224C2_nt ::v66(){vfunc_called(this, "_ZN10S4224C2_nt3v66Ev");}
void  S4224C2_nt ::v67(){vfunc_called(this, "_ZN10S4224C2_nt3v67Ev");}
void  S4224C2_nt ::v68(){vfunc_called(this, "_ZN10S4224C2_nt3v68Ev");}
void  S4224C2_nt ::v69(){vfunc_called(this, "_ZN10S4224C2_nt3v69Ev");}
void  S4224C2_nt ::v70(){vfunc_called(this, "_ZN10S4224C2_nt3v70Ev");}
void  S4224C2_nt ::v71(){vfunc_called(this, "_ZN10S4224C2_nt3v71Ev");}
void  S4224C2_nt ::v72(){vfunc_called(this, "_ZN10S4224C2_nt3v72Ev");}
void  S4224C2_nt ::v73(){vfunc_called(this, "_ZN10S4224C2_nt3v73Ev");}
void  S4224C2_nt ::v74(){vfunc_called(this, "_ZN10S4224C2_nt3v74Ev");}
void  S4224C2_nt ::v75(){vfunc_called(this, "_ZN10S4224C2_nt3v75Ev");}
void  S4224C2_nt ::v76(){vfunc_called(this, "_ZN10S4224C2_nt3v76Ev");}
void  S4224C2_nt ::v77(){vfunc_called(this, "_ZN10S4224C2_nt3v77Ev");}
void  S4224C2_nt ::v78(){vfunc_called(this, "_ZN10S4224C2_nt3v78Ev");}
void  S4224C2_nt ::v79(){vfunc_called(this, "_ZN10S4224C2_nt3v79Ev");}
void  S4224C2_nt ::v80(){vfunc_called(this, "_ZN10S4224C2_nt3v80Ev");}
void  S4224C2_nt ::v81(){vfunc_called(this, "_ZN10S4224C2_nt3v81Ev");}
void  S4224C2_nt ::v82(){vfunc_called(this, "_ZN10S4224C2_nt3v82Ev");}
void  S4224C2_nt ::v83(){vfunc_called(this, "_ZN10S4224C2_nt3v83Ev");}
void  S4224C2_nt ::v84(){vfunc_called(this, "_ZN10S4224C2_nt3v84Ev");}
void  S4224C2_nt ::v85(){vfunc_called(this, "_ZN10S4224C2_nt3v85Ev");}
void  S4224C2_nt ::v86(){vfunc_called(this, "_ZN10S4224C2_nt3v86Ev");}
void  S4224C2_nt ::v87(){vfunc_called(this, "_ZN10S4224C2_nt3v87Ev");}
void  S4224C2_nt ::v88(){vfunc_called(this, "_ZN10S4224C2_nt3v88Ev");}
void  S4224C2_nt ::v89(){vfunc_called(this, "_ZN10S4224C2_nt3v89Ev");}
void  S4224C2_nt ::v90(){vfunc_called(this, "_ZN10S4224C2_nt3v90Ev");}
void  S4224C2_nt ::v91(){vfunc_called(this, "_ZN10S4224C2_nt3v91Ev");}
void  S4224C2_nt ::v92(){vfunc_called(this, "_ZN10S4224C2_nt3v92Ev");}
void  S4224C2_nt ::v93(){vfunc_called(this, "_ZN10S4224C2_nt3v93Ev");}
void  S4224C2_nt ::v94(){vfunc_called(this, "_ZN10S4224C2_nt3v94Ev");}
void  S4224C2_nt ::v95(){vfunc_called(this, "_ZN10S4224C2_nt3v95Ev");}
void  S4224C2_nt ::v96(){vfunc_called(this, "_ZN10S4224C2_nt3v96Ev");}
void  S4224C2_nt ::v97(){vfunc_called(this, "_ZN10S4224C2_nt3v97Ev");}
void  S4224C2_nt ::v98(){vfunc_called(this, "_ZN10S4224C2_nt3v98Ev");}
void  S4224C2_nt ::v99(){vfunc_called(this, "_ZN10S4224C2_nt3v99Ev");}
void  S4224C2_nt ::v100(){vfunc_called(this, "_ZN10S4224C2_nt4v100Ev");}
void  S4224C2_nt ::v101(){vfunc_called(this, "_ZN10S4224C2_nt4v101Ev");}
void  S4224C2_nt ::v102(){vfunc_called(this, "_ZN10S4224C2_nt4v102Ev");}
void  S4224C2_nt ::v103(){vfunc_called(this, "_ZN10S4224C2_nt4v103Ev");}
void  S4224C2_nt ::v104(){vfunc_called(this, "_ZN10S4224C2_nt4v104Ev");}
void  S4224C2_nt ::v105(){vfunc_called(this, "_ZN10S4224C2_nt4v105Ev");}
void  S4224C2_nt ::v106(){vfunc_called(this, "_ZN10S4224C2_nt4v106Ev");}
void  S4224C2_nt ::v107(){vfunc_called(this, "_ZN10S4224C2_nt4v107Ev");}
void  S4224C2_nt ::v108(){vfunc_called(this, "_ZN10S4224C2_nt4v108Ev");}
void  S4224C2_nt ::v109(){vfunc_called(this, "_ZN10S4224C2_nt4v109Ev");}
void  S4224C2_nt ::v110(){vfunc_called(this, "_ZN10S4224C2_nt4v110Ev");}
void  S4224C2_nt ::v111(){vfunc_called(this, "_ZN10S4224C2_nt4v111Ev");}
S4224C2_nt ::S4224C2_nt(){ note_ctor("S4224C2_nt", this);} // tgen

//skip512 S4224C2_nt

#else // __cplusplus

extern void _ZN10S4224C2_ntC1Ev();
extern void _ZN10S4224C2_ntD1Ev();
Name_Map name_map_S4224C2_nt[] = {
  NSPAIR(_ZN10S4224C2_ntC1Ev),
  NSPAIR(_ZN10S4224C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C3_nt;
extern VTBL_ENTRY _ZTI10S4224C3_nt[];
extern  VTBL_ENTRY _ZTV10S4224C3_nt[];
static Base_Class bases_S4224C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4224C2_nt[];
extern void _ZN10S4224C2_ntD1Ev();
extern void _ZN10S4224C2_ntD0Ev();
extern void _ZN10S4224C3_nt3v11Ev();
extern void _ZN10S4224C3_nt3v12Ev();
extern void _ZN10S4224C3_nt3v13Ev();
extern void _ZN10S4224C3_nt3v14Ev();
extern void _ZN10S4224C3_nt3v15Ev();
extern void _ZN10S4224C3_nt3v16Ev();
extern void _ZN10S4224C3_nt3v17Ev();
extern void _ZN10S4224C3_nt3v18Ev();
extern void _ZN10S4224C3_nt3v19Ev();
extern void _ZN10S4224C3_nt3v20Ev();
extern void _ZN10S4224C3_nt3v21Ev();
extern void _ZN10S4224C3_nt3v22Ev();
extern void _ZN10S4224C3_nt3v23Ev();
extern void _ZN10S4224C3_nt3v24Ev();
extern void _ZN10S4224C3_nt3v25Ev();
extern void _ZN10S4224C3_nt3v26Ev();
extern void _ZN10S4224C3_nt3v27Ev();
extern void _ZN10S4224C3_nt3v28Ev();
extern void _ZN10S4224C3_nt3v29Ev();
extern void _ZN10S4224C3_nt3v30Ev();
extern void _ZN10S4224C3_nt3v31Ev();
extern void _ZN10S4224C3_nt3v32Ev();
extern void _ZN10S4224C3_nt3v33Ev();
extern void _ZN10S4224C2_nt3v34Ev();
extern void _ZN10S4224C2_nt3v35Ev();
extern void _ZN10S4224C2_nt3v36Ev();
extern void _ZN10S4224C2_nt3v37Ev();
extern void _ZN10S4224C2_nt3v38Ev();
extern void _ZN10S4224C2_nt3v39Ev();
extern void _ZN10S4224C2_nt3v40Ev();
extern void _ZN10S4224C2_nt3v41Ev();
extern void _ZN10S4224C2_nt3v42Ev();
extern void _ZN10S4224C2_nt3v43Ev();
extern void _ZN10S4224C2_nt3v44Ev();
extern void _ZN10S4224C2_nt3v45Ev();
extern void _ZN10S4224C2_nt3v46Ev();
extern void _ZN10S4224C2_nt3v47Ev();
extern void _ZN10S4224C2_nt3v48Ev();
extern void _ZN10S4224C2_nt3v49Ev();
extern void _ZN10S4224C2_nt3v50Ev();
extern void _ZN10S4224C2_nt3v51Ev();
extern void _ZN10S4224C2_nt3v52Ev();
extern void _ZN10S4224C2_nt3v53Ev();
extern void _ZN10S4224C2_nt3v54Ev();
extern void _ZN10S4224C2_nt3v55Ev();
extern void _ZN10S4224C2_nt3v56Ev();
extern void _ZN10S4224C2_nt3v57Ev();
extern void _ZN10S4224C2_nt3v58Ev();
extern void _ZN10S4224C2_nt3v59Ev();
extern void _ZN10S4224C2_nt3v60Ev();
extern void _ZN10S4224C2_nt3v61Ev();
extern void _ZN10S4224C2_nt3v62Ev();
extern void _ZN10S4224C2_nt3v63Ev();
extern void _ZN10S4224C2_nt3v64Ev();
extern void _ZN10S4224C2_nt3v65Ev();
extern void _ZN10S4224C2_nt3v66Ev();
extern void _ZN10S4224C2_nt3v67Ev();
extern void _ZN10S4224C2_nt3v68Ev();
extern void _ZN10S4224C2_nt3v69Ev();
extern void _ZN10S4224C2_nt3v70Ev();
extern void _ZN10S4224C2_nt3v71Ev();
extern void _ZN10S4224C2_nt3v72Ev();
extern void _ZN10S4224C2_nt3v73Ev();
extern void _ZN10S4224C2_nt3v74Ev();
extern void _ZN10S4224C2_nt3v75Ev();
extern void _ZN10S4224C2_nt3v76Ev();
extern void _ZN10S4224C2_nt3v77Ev();
extern void _ZN10S4224C2_nt3v78Ev();
extern void _ZN10S4224C2_nt3v79Ev();
extern void _ZN10S4224C2_nt3v80Ev();
extern void _ZN10S4224C2_nt3v81Ev();
extern void _ZN10S4224C2_nt3v82Ev();
extern void _ZN10S4224C2_nt3v83Ev();
extern void _ZN10S4224C2_nt3v84Ev();
extern void _ZN10S4224C2_nt3v85Ev();
extern void _ZN10S4224C2_nt3v86Ev();
extern void _ZN10S4224C2_nt3v87Ev();
extern void _ZN10S4224C2_nt3v88Ev();
extern void _ZN10S4224C2_nt3v89Ev();
extern void _ZN10S4224C2_nt3v90Ev();
extern void _ZN10S4224C2_nt3v91Ev();
extern void _ZN10S4224C2_nt3v92Ev();
extern void _ZN10S4224C2_nt3v93Ev();
extern void _ZN10S4224C2_nt3v94Ev();
extern void _ZN10S4224C2_nt3v95Ev();
extern void _ZN10S4224C2_nt3v96Ev();
extern void _ZN10S4224C2_nt3v97Ev();
extern void _ZN10S4224C2_nt3v98Ev();
extern void _ZN10S4224C2_nt3v99Ev();
extern void _ZN10S4224C2_nt4v100Ev();
extern void _ZN10S4224C2_nt4v101Ev();
extern void _ZN10S4224C2_nt4v102Ev();
extern void _ZN10S4224C2_nt4v103Ev();
extern void _ZN10S4224C2_nt4v104Ev();
extern void _ZN10S4224C2_nt4v105Ev();
extern void _ZN10S4224C2_nt4v106Ev();
extern void _ZN10S4224C2_nt4v107Ev();
extern void _ZN10S4224C2_nt4v108Ev();
extern void _ZN10S4224C2_nt4v109Ev();
extern void _ZN10S4224C2_nt4v110Ev();
extern void _ZN10S4224C2_nt4v111Ev();
static  VTBL_ENTRY vtc_S4224C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4224C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4224C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v111Ev,
};
extern VTBL_ENTRY _ZTI10S4224C2_nt[];
VTBL_ENTRY *P__ZTI10S4224C2_nt = _ZTI10S4224C2_nt; 
extern  VTBL_ENTRY _ZTV10S4224C2_nt[];
Class_Descriptor cd_S4224C2_nt = {  "S4224C2_nt", // class name
  bases_S4224C2_nt, 1,
  &(vtc_S4224C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S4224C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4224C2_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  S4224C38_nt  {
  virtual  ~S4224C38_nt(); // _ZN11S4224C38_ntD1Ev
  virtual void  v112(); // _ZN11S4224C38_nt4v112Ev
  virtual void  v113(); // _ZN11S4224C38_nt4v113Ev
  virtual void  v114(); // _ZN11S4224C38_nt4v114Ev
  virtual void  v115(); // _ZN11S4224C38_nt4v115Ev
  S4224C38_nt(); // tgen
};
//SIG(-1 S4224C38_nt) C1{ vd v1 v2 v3 v4}


 S4224C38_nt ::~S4224C38_nt(){ note_dtor("S4224C38_nt", this);}
void  S4224C38_nt ::v112(){vfunc_called(this, "_ZN11S4224C38_nt4v112Ev");}
void  S4224C38_nt ::v113(){vfunc_called(this, "_ZN11S4224C38_nt4v113Ev");}
void  S4224C38_nt ::v114(){vfunc_called(this, "_ZN11S4224C38_nt4v114Ev");}
void  S4224C38_nt ::v115(){vfunc_called(this, "_ZN11S4224C38_nt4v115Ev");}
S4224C38_nt ::S4224C38_nt(){ note_ctor("S4224C38_nt", this);} // tgen

//skip512 S4224C38_nt

#else // __cplusplus

extern void _ZN11S4224C38_ntC1Ev();
extern void _ZN11S4224C38_ntD1Ev();
Name_Map name_map_S4224C38_nt[] = {
  NSPAIR(_ZN11S4224C38_ntC1Ev),
  NSPAIR(_ZN11S4224C38_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S4224C38_nt[];
extern void _ZN11S4224C38_ntD1Ev();
extern void _ZN11S4224C38_ntD0Ev();
extern void _ZN11S4224C38_nt4v112Ev();
extern void _ZN11S4224C38_nt4v113Ev();
extern void _ZN11S4224C38_nt4v114Ev();
extern void _ZN11S4224C38_nt4v115Ev();
static  VTBL_ENTRY vtc_S4224C38_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S4224C38_nt[0]),
  (VTBL_ENTRY)&_ZN11S4224C38_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v112Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v113Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v114Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v115Ev,
};
extern VTBL_ENTRY _ZTI11S4224C38_nt[];
VTBL_ENTRY *P__ZTI11S4224C38_nt = _ZTI11S4224C38_nt; 
extern  VTBL_ENTRY _ZTV11S4224C38_nt[];
Class_Descriptor cd_S4224C38_nt = {  "S4224C38_nt", // class name
  0,0,//no base classes
  &(vtc_S4224C38_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S4224C38_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S4224C38_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C40_nt  {
  __tsi64 s4224c40f0;
  void  mf4224c40(); // _ZN11S4224C40_nt9mf4224c40Ev
};
//SIG(-1 S4224C40_nt) C1{ m FL}


void  S4224C40_nt ::mf4224c40(){}

//skip512 S4224C40_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C39_nt  {
  ::S4224C40_nt s4224c39f0;
  void  mf4224c39(); // _ZN11S4224C39_nt9mf4224c39Ev
};
//SIG(-1 S4224C39_nt) C1{ m FC2{ m FL}}


void  S4224C39_nt ::mf4224c39(){}

//skip512 S4224C39_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C41  {
  ::S4224C13_nt s4224c41f0;
  void  mf4224c41(); // _ZN8S4224C419mf4224c41Ev
};
//SIG(-1 S4224C41) C1{ m FC2{ m FL[2]}}


void  S4224C41 ::mf4224c41(){}

static void Test_S4224C41()
{
  {
    init_simple_test("S4224C41");
    S4224C41 lv;
    check2(sizeof(lv), 16, "sizeof(S4224C41)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4224C41)");
    check_field_offset(lv, s4224c41f0, 0, "S4224C41.s4224c41f0");
  }
}
static Arrange_To_Call_Me vS4224C41(Test_S4224C41, "S4224C41", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4224C43_nt  {
  void *s4224c43f0;
  void  mf4224c43(); // _ZN11S4224C43_nt9mf4224c43Ev
};
//SIG(-1 S4224C43_nt) C1{ m Fp}


void  S4224C43_nt ::mf4224c43(){}

//skip512 S4224C43_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S4224C43_nt[];
VTBL_ENTRY *P__ZTI11S4224C43_nt = _ZTI11S4224C43_nt; 
Class_Descriptor cd_S4224C43_nt = {  "S4224C43_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S4224C43_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  S4224C1  : S4224C2_nt , S4224C38_nt {
  void *s4224c1f0[2];
  char s4224c1f1;
  ::S4224C39_nt s4224c1f2;
  char s4224c1f3[2];
  ::S4224C39_nt s4224c1f4;
  ::S4224C39_nt s4224c1f5;
  ::S4224C39_nt s4224c1f6;
  ::S4224C41 s4224c1f7;
  char s4224c1f8[2];
  ::S4224C43_nt s4224c1f9;
  int s4224c1f10;
  ::S4224C39_nt s4224c1f11;
  ::S4224C39_nt s4224c1f12;
  char s4224c1f13;
  ::S4224C41 s4224c1f14;
  ::S4224C39_nt s4224c1f15;
  void *s4224c1f16;
  ::S4224C39_nt s4224c1f17;
  virtual  ~S4224C1(); // _ZN7S4224C1D1Ev
  virtual void  v1(); // _ZN7S4224C12v1Ev
  virtual void  v2(); // _ZN7S4224C12v2Ev
  virtual void  v3(); // _ZN7S4224C12v3Ev
  virtual void  v4(); // _ZN7S4224C12v4Ev
  virtual void  v5(); // _ZN7S4224C12v5Ev
  virtual void  v6(); // _ZN7S4224C12v6Ev
  virtual void  v7(); // _ZN7S4224C12v7Ev
  virtual void  v8(); // _ZN7S4224C12v8Ev
  virtual void  v9(); // _ZN7S4224C12v9Ev
  virtual void  v10(); // _ZN7S4224C13v10Ev
  S4224C1(); // tgen
};
//SIG(1 S4224C1) 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} FC6}} 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 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 FC13{ m}} Fi} Fi Fp[7] FC14{ m Fp Fi FC13 FC15{ m}} 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 FC15 FC18{ m}}} 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] FC18} Fp[2] Fi:16 Fi:16 FC16 FC19 FC20{ m Fp Fi[2] FC21{ m}} Fp[2] Fi:24 Fi:8 Fp} BC22{ vd v112 v113 v114 v115} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp[2] Fc FC23{ m FC24{ m FL}} Fc[2] FC23 FC23 FC23 FC25{ m FC8} Fc[2] FC26{ m Fp} Fi FC23 FC23 Fc FC25 FC23 Fp FC23}


 S4224C1 ::~S4224C1(){ note_dtor("S4224C1", this);}
void  S4224C1 ::v1(){vfunc_called(this, "_ZN7S4224C12v1Ev");}
void  S4224C1 ::v2(){vfunc_called(this, "_ZN7S4224C12v2Ev");}
void  S4224C1 ::v3(){vfunc_called(this, "_ZN7S4224C12v3Ev");}
void  S4224C1 ::v4(){vfunc_called(this, "_ZN7S4224C12v4Ev");}
void  S4224C1 ::v5(){vfunc_called(this, "_ZN7S4224C12v5Ev");}
void  S4224C1 ::v6(){vfunc_called(this, "_ZN7S4224C12v6Ev");}
void  S4224C1 ::v7(){vfunc_called(this, "_ZN7S4224C12v7Ev");}
void  S4224C1 ::v8(){vfunc_called(this, "_ZN7S4224C12v8Ev");}
void  S4224C1 ::v9(){vfunc_called(this, "_ZN7S4224C12v9Ev");}
void  S4224C1 ::v10(){vfunc_called(this, "_ZN7S4224C13v10Ev");}
S4224C1 ::S4224C1(){ note_ctor("S4224C1", this);} // tgen

static void Test_S4224C1()
{
  extern Class_Descriptor cd_S4224C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,193)];
    init_test(&cd_S4224C1, buf);
    S4224C1 *dp, &lv = *(dp=new (buf) S4224C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,768), "sizeof(S4224C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4224C1)");
    check_base_class_offset(lv, (S4224C3_nt*)(S4224C2_nt*), 0, "S4224C1");
    check_base_class_offset(lv, (S4224C2_nt*), 0, "S4224C1");
    check_base_class_offset(lv, (S4224C38_nt*), ABISELECT(832,632), "S4224C1");
    check_field_offset(lv, s4224c1f0, ABISELECT(840,636), "S4224C1.s4224c1f0");
    check_field_offset(lv, s4224c1f1, ABISELECT(856,644), "S4224C1.s4224c1f1");
    check_field_offset(lv, s4224c1f2, ABISELECT(864,648), "S4224C1.s4224c1f2");
    check_field_offset(lv, s4224c1f3, ABISELECT(872,656), "S4224C1.s4224c1f3");
    check_field_offset(lv, s4224c1f4, ABISELECT(880,660), "S4224C1.s4224c1f4");
    check_field_offset(lv, s4224c1f5, ABISELECT(888,668), "S4224C1.s4224c1f5");
    check_field_offset(lv, s4224c1f6, ABISELECT(896,676), "S4224C1.s4224c1f6");
    check_field_offset(lv, s4224c1f7, ABISELECT(904,684), "S4224C1.s4224c1f7");
    check_field_offset(lv, s4224c1f8, ABISELECT(920,700), "S4224C1.s4224c1f8");
    check_field_offset(lv, s4224c1f9, ABISELECT(928,704), "S4224C1.s4224c1f9");
    check_field_offset(lv, s4224c1f10, ABISELECT(936,708), "S4224C1.s4224c1f10");
    check_field_offset(lv, s4224c1f11, ABISELECT(944,712), "S4224C1.s4224c1f11");
    check_field_offset(lv, s4224c1f12, ABISELECT(952,720), "S4224C1.s4224c1f12");
    check_field_offset(lv, s4224c1f13, ABISELECT(960,728), "S4224C1.s4224c1f13");
    check_field_offset(lv, s4224c1f14, ABISELECT(968,732), "S4224C1.s4224c1f14");
    check_field_offset(lv, s4224c1f15, ABISELECT(984,748), "S4224C1.s4224c1f15");
    check_field_offset(lv, s4224c1f16, ABISELECT(992,756), "S4224C1.s4224c1f16");
    check_field_offset(lv, s4224c1f17, ABISELECT(1000,760), "S4224C1.s4224c1f17");
    test_class_info(&lv, &cd_S4224C1);
    dp->~S4224C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4224C1(Test_S4224C1, "S4224C1", ABISELECT(1008,768));

#else // __cplusplus

extern void _ZN7S4224C1C1Ev();
extern void _ZN7S4224C1D1Ev();
Name_Map name_map_S4224C1[] = {
  NSPAIR(_ZN7S4224C1C1Ev),
  NSPAIR(_ZN7S4224C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C3_nt;
extern VTBL_ENTRY _ZTI10S4224C3_nt[];
extern  VTBL_ENTRY _ZTV10S4224C3_nt[];
extern Class_Descriptor cd_S4224C2_nt;
extern VTBL_ENTRY _ZTI10S4224C2_nt[];
extern  VTBL_ENTRY _ZTV10S4224C2_nt[];
extern Class_Descriptor cd_S4224C38_nt;
extern VTBL_ENTRY _ZTI11S4224C38_nt[];
extern  VTBL_ENTRY _ZTV11S4224C38_nt[];
static Base_Class bases_S4224C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4224C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4224C38_nt,    ABISELECT(832,632), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4224C1[];
extern void _ZN7S4224C1D1Ev();
extern void _ZN7S4224C1D0Ev();
extern void _ZN10S4224C3_nt3v11Ev();
extern void _ZN10S4224C3_nt3v12Ev();
extern void _ZN10S4224C3_nt3v13Ev();
extern void _ZN10S4224C3_nt3v14Ev();
extern void _ZN10S4224C3_nt3v15Ev();
extern void _ZN10S4224C3_nt3v16Ev();
extern void _ZN10S4224C3_nt3v17Ev();
extern void _ZN10S4224C3_nt3v18Ev();
extern void _ZN10S4224C3_nt3v19Ev();
extern void _ZN10S4224C3_nt3v20Ev();
extern void _ZN10S4224C3_nt3v21Ev();
extern void _ZN10S4224C3_nt3v22Ev();
extern void _ZN10S4224C3_nt3v23Ev();
extern void _ZN10S4224C3_nt3v24Ev();
extern void _ZN10S4224C3_nt3v25Ev();
extern void _ZN10S4224C3_nt3v26Ev();
extern void _ZN10S4224C3_nt3v27Ev();
extern void _ZN10S4224C3_nt3v28Ev();
extern void _ZN10S4224C3_nt3v29Ev();
extern void _ZN10S4224C3_nt3v30Ev();
extern void _ZN10S4224C3_nt3v31Ev();
extern void _ZN10S4224C3_nt3v32Ev();
extern void _ZN10S4224C3_nt3v33Ev();
extern void _ZN10S4224C2_nt3v34Ev();
extern void _ZN10S4224C2_nt3v35Ev();
extern void _ZN10S4224C2_nt3v36Ev();
extern void _ZN10S4224C2_nt3v37Ev();
extern void _ZN10S4224C2_nt3v38Ev();
extern void _ZN10S4224C2_nt3v39Ev();
extern void _ZN10S4224C2_nt3v40Ev();
extern void _ZN10S4224C2_nt3v41Ev();
extern void _ZN10S4224C2_nt3v42Ev();
extern void _ZN10S4224C2_nt3v43Ev();
extern void _ZN10S4224C2_nt3v44Ev();
extern void _ZN10S4224C2_nt3v45Ev();
extern void _ZN10S4224C2_nt3v46Ev();
extern void _ZN10S4224C2_nt3v47Ev();
extern void _ZN10S4224C2_nt3v48Ev();
extern void _ZN10S4224C2_nt3v49Ev();
extern void _ZN10S4224C2_nt3v50Ev();
extern void _ZN10S4224C2_nt3v51Ev();
extern void _ZN10S4224C2_nt3v52Ev();
extern void _ZN10S4224C2_nt3v53Ev();
extern void _ZN10S4224C2_nt3v54Ev();
extern void _ZN10S4224C2_nt3v55Ev();
extern void _ZN10S4224C2_nt3v56Ev();
extern void _ZN10S4224C2_nt3v57Ev();
extern void _ZN10S4224C2_nt3v58Ev();
extern void _ZN10S4224C2_nt3v59Ev();
extern void _ZN10S4224C2_nt3v60Ev();
extern void _ZN10S4224C2_nt3v61Ev();
extern void _ZN10S4224C2_nt3v62Ev();
extern void _ZN10S4224C2_nt3v63Ev();
extern void _ZN10S4224C2_nt3v64Ev();
extern void _ZN10S4224C2_nt3v65Ev();
extern void _ZN10S4224C2_nt3v66Ev();
extern void _ZN10S4224C2_nt3v67Ev();
extern void _ZN10S4224C2_nt3v68Ev();
extern void _ZN10S4224C2_nt3v69Ev();
extern void _ZN10S4224C2_nt3v70Ev();
extern void _ZN10S4224C2_nt3v71Ev();
extern void _ZN10S4224C2_nt3v72Ev();
extern void _ZN10S4224C2_nt3v73Ev();
extern void _ZN10S4224C2_nt3v74Ev();
extern void _ZN10S4224C2_nt3v75Ev();
extern void _ZN10S4224C2_nt3v76Ev();
extern void _ZN10S4224C2_nt3v77Ev();
extern void _ZN10S4224C2_nt3v78Ev();
extern void _ZN10S4224C2_nt3v79Ev();
extern void _ZN10S4224C2_nt3v80Ev();
extern void _ZN10S4224C2_nt3v81Ev();
extern void _ZN10S4224C2_nt3v82Ev();
extern void _ZN10S4224C2_nt3v83Ev();
extern void _ZN10S4224C2_nt3v84Ev();
extern void _ZN10S4224C2_nt3v85Ev();
extern void _ZN10S4224C2_nt3v86Ev();
extern void _ZN10S4224C2_nt3v87Ev();
extern void _ZN10S4224C2_nt3v88Ev();
extern void _ZN10S4224C2_nt3v89Ev();
extern void _ZN10S4224C2_nt3v90Ev();
extern void _ZN10S4224C2_nt3v91Ev();
extern void _ZN10S4224C2_nt3v92Ev();
extern void _ZN10S4224C2_nt3v93Ev();
extern void _ZN10S4224C2_nt3v94Ev();
extern void _ZN10S4224C2_nt3v95Ev();
extern void _ZN10S4224C2_nt3v96Ev();
extern void _ZN10S4224C2_nt3v97Ev();
extern void _ZN10S4224C2_nt3v98Ev();
extern void _ZN10S4224C2_nt3v99Ev();
extern void _ZN10S4224C2_nt4v100Ev();
extern void _ZN10S4224C2_nt4v101Ev();
extern void _ZN10S4224C2_nt4v102Ev();
extern void _ZN10S4224C2_nt4v103Ev();
extern void _ZN10S4224C2_nt4v104Ev();
extern void _ZN10S4224C2_nt4v105Ev();
extern void _ZN10S4224C2_nt4v106Ev();
extern void _ZN10S4224C2_nt4v107Ev();
extern void _ZN10S4224C2_nt4v108Ev();
extern void _ZN10S4224C2_nt4v109Ev();
extern void _ZN10S4224C2_nt4v110Ev();
extern void _ZN10S4224C2_nt4v111Ev();
extern void _ZN7S4224C12v1Ev();
extern void _ZN7S4224C12v2Ev();
extern void _ZN7S4224C12v3Ev();
extern void _ZN7S4224C12v4Ev();
extern void _ZN7S4224C12v5Ev();
extern void _ZN7S4224C12v6Ev();
extern void _ZN7S4224C12v7Ev();
extern void _ZN7S4224C12v8Ev();
extern void _ZN7S4224C12v9Ev();
extern void _ZN7S4224C13v10Ev();
extern void ABISELECT(_ZThn832_N7S4224C1D1Ev,_ZThn632_N7S4224C1D1Ev)();
extern void ABISELECT(_ZThn832_N7S4224C1D0Ev,_ZThn632_N7S4224C1D0Ev)();
extern void _ZN11S4224C38_nt4v112Ev();
extern void _ZN11S4224C38_nt4v113Ev();
extern void _ZN11S4224C38_nt4v114Ev();
extern void _ZN11S4224C38_nt4v115Ev();
static  VTBL_ENTRY vtc_S4224C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4224C1[0]),
  (VTBL_ENTRY)&_ZN7S4224C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4224C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4224C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4224C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4224C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4224C13v10Ev,
  ABISELECT(-832,-632),
  (VTBL_ENTRY)&(_ZTI7S4224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn832_N7S4224C1D1Ev,_ZThn632_N7S4224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn832_N7S4224C1D0Ev,_ZThn632_N7S4224C1D0Ev),
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v112Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v113Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v114Ev,
  (VTBL_ENTRY)&_ZN11S4224C38_nt4v115Ev,
};
extern VTBL_ENTRY _ZTI7S4224C1[];
extern  VTBL_ENTRY _ZTV7S4224C1[];
Class_Descriptor cd_S4224C1 = {  "S4224C1", // class name
  bases_S4224C1, 3,
  &(vtc_S4224C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,768), // object size
  NSPAIRA(_ZTI7S4224C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4224C1),123, //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  S15502C3  {
  int s15502c3f0;
  virtual  ~S15502C3(); // _ZN8S15502C3D1Ev
  virtual void  v8(); // _ZN8S15502C32v8Ev
  virtual void  v9(); // _ZN8S15502C32v9Ev
  virtual void  v10(); // _ZN8S15502C33v10Ev
  virtual void  v11(); // _ZN8S15502C33v11Ev
  virtual void  v12(); // _ZN8S15502C33v12Ev
  virtual void  v13(); // _ZN8S15502C33v13Ev
  virtual void  v14(); // _ZN8S15502C33v14Ev
  S15502C3(); // tgen
};
//SIG(-1 S15502C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S15502C3 ::~S15502C3(){ note_dtor("S15502C3", this);}
void  S15502C3 ::v8(){vfunc_called(this, "_ZN8S15502C32v8Ev");}
void  S15502C3 ::v9(){vfunc_called(this, "_ZN8S15502C32v9Ev");}
void  S15502C3 ::v10(){vfunc_called(this, "_ZN8S15502C33v10Ev");}
void  S15502C3 ::v11(){vfunc_called(this, "_ZN8S15502C33v11Ev");}
void  S15502C3 ::v12(){vfunc_called(this, "_ZN8S15502C33v12Ev");}
void  S15502C3 ::v13(){vfunc_called(this, "_ZN8S15502C33v13Ev");}
void  S15502C3 ::v14(){vfunc_called(this, "_ZN8S15502C33v14Ev");}
S15502C3 ::S15502C3(){ note_ctor("S15502C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S15502C3C1Ev();
extern void _ZN8S15502C3D1Ev();
Name_Map name_map_S15502C3[] = {
  NSPAIR(_ZN8S15502C3C1Ev),
  NSPAIR(_ZN8S15502C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15502C3[];
extern void _ZN8S15502C3D1Ev();
extern void _ZN8S15502C3D0Ev();
extern void _ZN8S15502C32v8Ev();
extern void _ZN8S15502C32v9Ev();
extern void _ZN8S15502C33v10Ev();
extern void _ZN8S15502C33v11Ev();
extern void _ZN8S15502C33v12Ev();
extern void _ZN8S15502C33v13Ev();
extern void _ZN8S15502C33v14Ev();
static  VTBL_ENTRY vtc_S15502C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15502C3[0]),
  (VTBL_ENTRY)&_ZN8S15502C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15502C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v13Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v14Ev,
};
extern VTBL_ENTRY _ZTI8S15502C3[];
extern  VTBL_ENTRY _ZTV8S15502C3[];
Class_Descriptor cd_S15502C3 = {  "S15502C3", // class name
  0,0,//no base classes
  &(vtc_S15502C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S15502C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15502C3),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  S15502C5_nt  {
  char s15502c5f0;
  char s15502c5f1[15];
  void  mf15502c5(); // _ZN11S15502C5_nt9mf15502c5Ev
};
//SIG(-1 S15502C5_nt) C1{ m Fc[16]}


void  S15502C5_nt ::mf15502c5(){}

//skip512 S15502C5_nt

#else // __cplusplus

Class_Descriptor cd_S15502C5_nt = {  "S15502C5_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  S15502C4_nt  : S15502C5_nt {
};
//SIG(-1 S15502C4_nt) C1{ BC2{ m Fc[16]}}



//skip512 S15502C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S15502C5_nt;
static Base_Class bases_S15502C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15502C6  {
  void *s15502c6f0;
  ::S15502C4_nt s15502c6f1;
  ::S15502C4_nt s15502c6f2;
  ::S15502C4_nt s15502c6f3;
  int s15502c6f4[3];
  void *s15502c6f5;
  int s15502c6f6[2];
  char s15502c6f7;
  void  mf15502c6(); // _ZN8S15502C69mf15502c6Ev
};
//SIG(-1 S15502C6) C1{ m Fp FC2{ BC3{ m Fc[16]}} FC2 FC2 Fi[3] Fp Fi[2] Fc}


void  S15502C6 ::mf15502c6(){}

static void Test_S15502C6()
{
  {
    init_simple_test("S15502C6");
    S15502C6 lv;
    check2(sizeof(lv), ABISELECT(96,80), "sizeof(S15502C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C6)");
    check_field_offset(lv, s15502c6f0, 0, "S15502C6.s15502c6f0");
    check_field_offset(lv, s15502c6f1, ABISELECT(8,4), "S15502C6.s15502c6f1");
    check_field_offset(lv, s15502c6f2, ABISELECT(24,20), "S15502C6.s15502c6f2");
    check_field_offset(lv, s15502c6f3, ABISELECT(40,36), "S15502C6.s15502c6f3");
    check_field_offset(lv, s15502c6f4, ABISELECT(56,52), "S15502C6.s15502c6f4");
    check_field_offset(lv, s15502c6f5, ABISELECT(72,64), "S15502C6.s15502c6f5");
    check_field_offset(lv, s15502c6f6, ABISELECT(80,68), "S15502C6.s15502c6f6");
    check_field_offset(lv, s15502c6f7, ABISELECT(88,76), "S15502C6.s15502c6f7");
  }
}
static Arrange_To_Call_Me vS15502C6(Test_S15502C6, "S15502C6", ABISELECT(96,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C2  : S15502C3 {
  int s15502c2f0[14];
  char s15502c2f1[2];
  ::S15502C4_nt s15502c2f2;
  ::S15502C4_nt s15502c2f3;
  ::S15502C4_nt s15502c2f4;
  ::S15502C4_nt s15502c2f5;
  ::S15502C4_nt s15502c2f6;
  ::S15502C4_nt s15502c2f7;
  int s15502c2f8[2];
  ::S15502C4_nt s15502c2f9;
  ::S15502C4_nt s15502c2f10;
  ::S15502C4_nt s15502c2f11;
  ::S15502C4_nt s15502c2f12;
  int s15502c2f13[6];
  ::S15502C6 s15502c2f14;
  void *s15502c2f15;
  ::S15502C6 s15502c2f16;
  ::S15502C4_nt s15502c2f17;
  int s15502c2f18[7];
  virtual  ~S15502C2(); // _ZN8S15502C2D1Ev
  virtual void  v1(); // _ZN8S15502C22v1Ev
  virtual void  v2(); // _ZN8S15502C22v2Ev
  virtual void  v3(); // _ZN8S15502C22v3Ev
  virtual void  v4(); // _ZN8S15502C22v4Ev
  virtual void  v5(); // _ZN8S15502C22v5Ev
  virtual void  v6(); // _ZN8S15502C22v6Ev
  virtual void  v7(); // _ZN8S15502C22v7Ev
  S15502C2(); // tgen
};
//SIG(1 S15502C2) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[14] Fc[2] FC3{ BC4{ m Fc[16]}} FC3 FC3 FC3 FC3 FC3 Fi[2] FC3 FC3 FC3 FC3 Fi[6] FC5{ m Fp FC3 FC3 FC3 Fi[3] Fp Fi[2] Fc} Fp FC5 FC3 Fi[7]}


 S15502C2 ::~S15502C2(){ note_dtor("S15502C2", this);}
void  S15502C2 ::v1(){vfunc_called(this, "_ZN8S15502C22v1Ev");}
void  S15502C2 ::v2(){vfunc_called(this, "_ZN8S15502C22v2Ev");}
void  S15502C2 ::v3(){vfunc_called(this, "_ZN8S15502C22v3Ev");}
void  S15502C2 ::v4(){vfunc_called(this, "_ZN8S15502C22v4Ev");}
void  S15502C2 ::v5(){vfunc_called(this, "_ZN8S15502C22v5Ev");}
void  S15502C2 ::v6(){vfunc_called(this, "_ZN8S15502C22v6Ev");}
void  S15502C2 ::v7(){vfunc_called(this, "_ZN8S15502C22v7Ev");}
S15502C2 ::S15502C2(){ note_ctor("S15502C2", this);} // tgen

static void Test_S15502C2()
{
  extern Class_Descriptor cd_S15502C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(65,118)];
    init_test(&cd_S15502C2, buf);
    S15502C2 *dp, &lv = *(dp=new (buf) S15502C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,468), "sizeof(S15502C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C2)");
    check_base_class_offset(lv, (S15502C3*), 0, "S15502C2");
    check_field_offset(lv, s15502c2f0, ABISELECT(12,8), "S15502C2.s15502c2f0");
    check_field_offset(lv, s15502c2f1, ABISELECT(68,64), "S15502C2.s15502c2f1");
    check_field_offset(lv, s15502c2f2, ABISELECT(70,66), "S15502C2.s15502c2f2");
    check_field_offset(lv, s15502c2f3, ABISELECT(86,82), "S15502C2.s15502c2f3");
    check_field_offset(lv, s15502c2f4, ABISELECT(102,98), "S15502C2.s15502c2f4");
    check_field_offset(lv, s15502c2f5, ABISELECT(118,114), "S15502C2.s15502c2f5");
    check_field_offset(lv, s15502c2f6, ABISELECT(134,130), "S15502C2.s15502c2f6");
    check_field_offset(lv, s15502c2f7, ABISELECT(150,146), "S15502C2.s15502c2f7");
    check_field_offset(lv, s15502c2f8, ABISELECT(168,164), "S15502C2.s15502c2f8");
    check_field_offset(lv, s15502c2f9, ABISELECT(176,172), "S15502C2.s15502c2f9");
    check_field_offset(lv, s15502c2f10, ABISELECT(192,188), "S15502C2.s15502c2f10");
    check_field_offset(lv, s15502c2f11, ABISELECT(208,204), "S15502C2.s15502c2f11");
    check_field_offset(lv, s15502c2f12, ABISELECT(224,220), "S15502C2.s15502c2f12");
    check_field_offset(lv, s15502c2f13, ABISELECT(240,236), "S15502C2.s15502c2f13");
    check_field_offset(lv, s15502c2f14, ABISELECT(264,260), "S15502C2.s15502c2f14");
    check_field_offset(lv, s15502c2f15, ABISELECT(360,340), "S15502C2.s15502c2f15");
    check_field_offset(lv, s15502c2f16, ABISELECT(368,344), "S15502C2.s15502c2f16");
    check_field_offset(lv, s15502c2f17, ABISELECT(464,424), "S15502C2.s15502c2f17");
    check_field_offset(lv, s15502c2f18, ABISELECT(480,440), "S15502C2.s15502c2f18");
    test_class_info(&lv, &cd_S15502C2);
    dp->~S15502C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15502C2(Test_S15502C2, "S15502C2", ABISELECT(512,468));

#else // __cplusplus

extern void _ZN8S15502C2C1Ev();
extern void _ZN8S15502C2D1Ev();
Name_Map name_map_S15502C2[] = {
  NSPAIR(_ZN8S15502C2C1Ev),
  NSPAIR(_ZN8S15502C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15502C3;
extern VTBL_ENTRY _ZTI8S15502C3[];
extern  VTBL_ENTRY _ZTV8S15502C3[];
static Base_Class bases_S15502C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15502C2[];
extern void _ZN8S15502C2D1Ev();
extern void _ZN8S15502C2D0Ev();
extern void _ZN8S15502C32v8Ev();
extern void _ZN8S15502C32v9Ev();
extern void _ZN8S15502C33v10Ev();
extern void _ZN8S15502C33v11Ev();
extern void _ZN8S15502C33v12Ev();
extern void _ZN8S15502C33v13Ev();
extern void _ZN8S15502C33v14Ev();
extern void _ZN8S15502C22v1Ev();
extern void _ZN8S15502C22v2Ev();
extern void _ZN8S15502C22v3Ev();
extern void _ZN8S15502C22v4Ev();
extern void _ZN8S15502C22v5Ev();
extern void _ZN8S15502C22v6Ev();
extern void _ZN8S15502C22v7Ev();
static  VTBL_ENTRY vtc_S15502C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15502C2[0]),
  (VTBL_ENTRY)&_ZN8S15502C2D1Ev,
  (VTBL_ENTRY)&_ZN8S15502C2D0Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v13Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v14Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v1Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v2Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v3Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v4Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v5Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v6Ev,
  (VTBL_ENTRY)&_ZN8S15502C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S15502C2[];
extern  VTBL_ENTRY _ZTV8S15502C2[];
Class_Descriptor cd_S15502C2 = {  "S15502C2", // class name
  bases_S15502C2, 1,
  &(vtc_S15502C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(512,468), // object size
  NSPAIRA(_ZTI8S15502C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S15502C2),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  S15502C10_nt  {
  ::S15502C5_nt s15502c10f0;
  ::S15502C5_nt s15502c10f1;
  ::S15502C5_nt s15502c10f2;
  ::S15502C5_nt s15502c10f3;
  void  mf15502c10(); // _ZN12S15502C10_nt10mf15502c10Ev
};
//SIG(-1 S15502C10_nt) C1{ m FC2{ m Fc[16]} FC2 FC2 FC2}


void  S15502C10_nt ::mf15502c10(){}

//skip512 S15502C10_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S15502C9_nt  : S15502C10_nt {
};
//SIG(-1 S15502C9_nt) C1{ BC2{ m FC3{ m Fc[16]} FC3 FC3 FC3}}



//skip512 S15502C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S15502C10_nt;
static Base_Class bases_S15502C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15502C8  {
  int s15502c8f0[14];
  ::S15502C4_nt s15502c8f1;
  ::S15502C4_nt s15502c8f2;
  int s15502c8f3;
  ::S15502C4_nt s15502c8f4;
  ::S15502C4_nt s15502c8f5;
  ::S15502C4_nt s15502c8f6;
  ::S15502C4_nt s15502c8f7;
  ::S15502C4_nt s15502c8f8;
  ::S15502C9_nt s15502c8f9;
  ::S15502C4_nt s15502c8f10;
  ::S15502C4_nt s15502c8f11;
  ::S15502C4_nt s15502c8f12;
  ::S15502C9_nt s15502c8f13;
  char s15502c8f14;
  void  mf15502c8(); // _ZN8S15502C89mf15502c8Ev
  virtual  ~S15502C8(); // _ZN8S15502C8D1Ev
  S15502C8(); // tgen
};
//SIG(-1 S15502C8) C1{ vd m Fi[14] FC2{ BC3{ m Fc[16]}} FC2 Fi FC2 FC2 FC2 FC2 FC2 FC4{ BC5{ m FC3 FC3 FC3 FC3}} FC2 FC2 FC2 FC4 Fc}


void  S15502C8 ::mf15502c8(){}
 S15502C8 ::~S15502C8(){ note_dtor("S15502C8", this);}
S15502C8 ::S15502C8(){ note_ctor("S15502C8", this);} // tgen

static void Test_S15502C8()
{
  extern Class_Descriptor cd_S15502C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,90)];
    init_test(&cd_S15502C8, buf);
    S15502C8 *dp, &lv = *(dp=new (buf) S15502C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,356), "sizeof(S15502C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C8)");
    check_field_offset(lv, s15502c8f0, ABISELECT(8,4), "S15502C8.s15502c8f0");
    check_field_offset(lv, s15502c8f1, ABISELECT(64,60), "S15502C8.s15502c8f1");
    check_field_offset(lv, s15502c8f2, ABISELECT(80,76), "S15502C8.s15502c8f2");
    check_field_offset(lv, s15502c8f3, ABISELECT(96,92), "S15502C8.s15502c8f3");
    check_field_offset(lv, s15502c8f4, ABISELECT(100,96), "S15502C8.s15502c8f4");
    check_field_offset(lv, s15502c8f5, ABISELECT(116,112), "S15502C8.s15502c8f5");
    check_field_offset(lv, s15502c8f6, ABISELECT(132,128), "S15502C8.s15502c8f6");
    check_field_offset(lv, s15502c8f7, ABISELECT(148,144), "S15502C8.s15502c8f7");
    check_field_offset(lv, s15502c8f8, ABISELECT(164,160), "S15502C8.s15502c8f8");
    check_field_offset(lv, s15502c8f9, ABISELECT(180,176), "S15502C8.s15502c8f9");
    check_field_offset(lv, s15502c8f10, ABISELECT(244,240), "S15502C8.s15502c8f10");
    check_field_offset(lv, s15502c8f11, ABISELECT(260,256), "S15502C8.s15502c8f11");
    check_field_offset(lv, s15502c8f12, ABISELECT(276,272), "S15502C8.s15502c8f12");
    check_field_offset(lv, s15502c8f13, ABISELECT(292,288), "S15502C8.s15502c8f13");
    check_field_offset(lv, s15502c8f14, ABISELECT(356,352), "S15502C8.s15502c8f14");
    test_class_info(&lv, &cd_S15502C8);
    dp->~S15502C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15502C8(Test_S15502C8, "S15502C8", ABISELECT(360,356));

#else // __cplusplus

extern void _ZN8S15502C8C1Ev();
extern void _ZN8S15502C8D1Ev();
Name_Map name_map_S15502C8[] = {
  NSPAIR(_ZN8S15502C8C1Ev),
  NSPAIR(_ZN8S15502C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15502C8[];
extern void _ZN8S15502C8D1Ev();
extern void _ZN8S15502C8D0Ev();
static  VTBL_ENTRY vtc_S15502C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15502C8[0]),
  (VTBL_ENTRY)&_ZN8S15502C8D1Ev,
  (VTBL_ENTRY)&_ZN8S15502C8D0Ev,
};
extern VTBL_ENTRY _ZTI8S15502C8[];
extern  VTBL_ENTRY _ZTV8S15502C8[];
Class_Descriptor cd_S15502C8 = {  "S15502C8", // class name
  0,0,//no base classes
  &(vtc_S15502C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(360,356), // object size
  NSPAIRA(_ZTI8S15502C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15502C8),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  S15502C7  : S15502C8 {
  int s15502c7f0[2];
  virtual  ~S15502C7(); // _ZN8S15502C7D1Ev
  S15502C7(); // tgen
};
//SIG(1 S15502C7) C1{ BC2{ vd m Fi[14] FC3{ BC4{ m Fc[16]}} FC3 Fi FC3 FC3 FC3 FC3 FC3 FC5{ BC6{ m FC4 FC4 FC4 FC4}} FC3 FC3 FC3 FC5 Fc} vd Fi[2]}


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

static void Test_S15502C7()
{
  extern Class_Descriptor cd_S15502C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,92)];
    init_test(&cd_S15502C7, buf);
    S15502C7 *dp, &lv = *(dp=new (buf) S15502C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,364), "sizeof(S15502C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C7)");
    check_base_class_offset(lv, (S15502C8*), 0, "S15502C7");
    check_field_offset(lv, s15502c7f0, ABISELECT(360,356), "S15502C7.s15502c7f0");
    test_class_info(&lv, &cd_S15502C7);
    dp->~S15502C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15502C7(Test_S15502C7, "S15502C7", ABISELECT(368,364));

#else // __cplusplus

extern void _ZN8S15502C7C1Ev();
extern void _ZN8S15502C7D1Ev();
Name_Map name_map_S15502C7[] = {
  NSPAIR(_ZN8S15502C7C1Ev),
  NSPAIR(_ZN8S15502C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15502C8;
extern VTBL_ENTRY _ZTI8S15502C8[];
extern  VTBL_ENTRY _ZTV8S15502C8[];
static Base_Class bases_S15502C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15502C7[];
extern void _ZN8S15502C7D1Ev();
extern void _ZN8S15502C7D0Ev();
static  VTBL_ENTRY vtc_S15502C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15502C7[0]),
  (VTBL_ENTRY)&_ZN8S15502C7D1Ev,
  (VTBL_ENTRY)&_ZN8S15502C7D0Ev,
};
extern VTBL_ENTRY _ZTI8S15502C7[];
extern  VTBL_ENTRY _ZTV8S15502C7[];
Class_Descriptor cd_S15502C7 = {  "S15502C7", // class name
  bases_S15502C7, 1,
  &(vtc_S15502C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,364), // object size
  NSPAIRA(_ZTI8S15502C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S15502C7),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  S15502C12_nt  {
  int s15502c12f0[2];
};
//SIG(-1 S15502C12_nt) C1{ Fi[2]}



//skip512 S15502C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C13_nt  {
  int s15502c13f0[4];
  void  mf15502c13(); // _ZN12S15502C13_nt10mf15502c13Ev
};
//SIG(-1 S15502C13_nt) C1{ m Fi[4]}


void  S15502C13_nt ::mf15502c13(){}

//skip512 S15502C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C11  {
  int s15502c11f0[5];
  ::S15502C4_nt s15502c11f1;
  int s15502c11f2[3];
  char s15502c11f3;
  ::S15502C12_nt s15502c11f4[4];
  int s15502c11f5[4];
  void *s15502c11f6;
  ::S15502C13_nt s15502c11f7;
  void  mf15502c11(); // _ZN9S15502C1110mf15502c11Ev
};
//SIG(-1 S15502C11) C1{ m Fi[5] FC2{ BC3{ m Fc[16]}} Fi[3] Fc FC4{ Fi[2]}[4] Fi[4] Fp FC5{ m Fi[4]}}


void  S15502C11 ::mf15502c11(){}

static void Test_S15502C11()
{
  {
    init_simple_test("S15502C11");
    S15502C11 lv;
    check2(sizeof(lv), ABISELECT(128,120), "sizeof(S15502C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C11)");
    check_field_offset(lv, s15502c11f0, 0, "S15502C11.s15502c11f0");
    check_field_offset(lv, s15502c11f1, 20, "S15502C11.s15502c11f1");
    check_field_offset(lv, s15502c11f2, 36, "S15502C11.s15502c11f2");
    check_field_offset(lv, s15502c11f3, 48, "S15502C11.s15502c11f3");
    check_field_offset(lv, s15502c11f4, 52, "S15502C11.s15502c11f4");
    check_field_offset(lv, s15502c11f5, 84, "S15502C11.s15502c11f5");
    check_field_offset(lv, s15502c11f6, ABISELECT(104,100), "S15502C11.s15502c11f6");
    check_field_offset(lv, s15502c11f7, ABISELECT(112,104), "S15502C11.s15502c11f7");
  }
}
static Arrange_To_Call_Me vS15502C11(Test_S15502C11, "S15502C11", ABISELECT(128,120));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C14  : S15502C3 {
  int s15502c14f0[16];
  void *s15502c14f1;
  int s15502c14f2[2];
  char s15502c14f3[3];
  int s15502c14f4[4];
  virtual void  v15(); // _ZN9S15502C143v15Ev
  virtual void  v16(); // _ZN9S15502C143v16Ev
  virtual void  v17(); // _ZN9S15502C143v17Ev
  virtual void  v18(); // _ZN9S15502C143v18Ev
  virtual void  v19(); // _ZN9S15502C143v19Ev
  virtual void  v20(); // _ZN9S15502C143v20Ev
  virtual void  v21(); // _ZN9S15502C143v21Ev
  ~S15502C14(); // tgen
  S15502C14(); // tgen
};
//SIG(-1 S15502C14) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 Fi} v1 v2 v3 v4 v5 v6 v7 Fi[16] Fp Fi[2] Fc[3] Fi[4]}


void  S15502C14 ::v15(){vfunc_called(this, "_ZN9S15502C143v15Ev");}
void  S15502C14 ::v16(){vfunc_called(this, "_ZN9S15502C143v16Ev");}
void  S15502C14 ::v17(){vfunc_called(this, "_ZN9S15502C143v17Ev");}
void  S15502C14 ::v18(){vfunc_called(this, "_ZN9S15502C143v18Ev");}
void  S15502C14 ::v19(){vfunc_called(this, "_ZN9S15502C143v19Ev");}
void  S15502C14 ::v20(){vfunc_called(this, "_ZN9S15502C143v20Ev");}
void  S15502C14 ::v21(){vfunc_called(this, "_ZN9S15502C143v21Ev");}
S15502C14 ::~S15502C14(){ note_dtor("S15502C14", this);} // tgen
S15502C14 ::S15502C14(){ note_ctor("S15502C14", this);} // tgen

static void Test_S15502C14()
{
  extern Class_Descriptor cd_S15502C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,27)];
    init_test(&cd_S15502C14, buf);
    S15502C14 *dp, &lv = *(dp=new (buf) S15502C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,104), "sizeof(S15502C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C14)");
    check_base_class_offset(lv, (S15502C3*), 0, "S15502C14");
    check_field_offset(lv, s15502c14f0, ABISELECT(12,8), "S15502C14.s15502c14f0");
    check_field_offset(lv, s15502c14f1, ABISELECT(80,72), "S15502C14.s15502c14f1");
    check_field_offset(lv, s15502c14f2, ABISELECT(88,76), "S15502C14.s15502c14f2");
    check_field_offset(lv, s15502c14f3, ABISELECT(96,84), "S15502C14.s15502c14f3");
    check_field_offset(lv, s15502c14f4, ABISELECT(100,88), "S15502C14.s15502c14f4");
    test_class_info(&lv, &cd_S15502C14);
    dp->~S15502C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15502C14(Test_S15502C14, "S15502C14", ABISELECT(120,104));

#else // __cplusplus

extern void _ZN9S15502C14C1Ev();
extern void _ZN9S15502C14D1Ev();
Name_Map name_map_S15502C14[] = {
  NSPAIR(_ZN9S15502C14C1Ev),
  NSPAIR(_ZN9S15502C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15502C3;
extern VTBL_ENTRY _ZTI8S15502C3[];
extern  VTBL_ENTRY _ZTV8S15502C3[];
static Base_Class bases_S15502C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S15502C14[];
extern void _ZN9S15502C14D1Ev();
extern void _ZN9S15502C14D0Ev();
extern void _ZN8S15502C32v8Ev();
extern void _ZN8S15502C32v9Ev();
extern void _ZN8S15502C33v10Ev();
extern void _ZN8S15502C33v11Ev();
extern void _ZN8S15502C33v12Ev();
extern void _ZN8S15502C33v13Ev();
extern void _ZN8S15502C33v14Ev();
extern void _ZN9S15502C143v15Ev();
extern void _ZN9S15502C143v16Ev();
extern void _ZN9S15502C143v17Ev();
extern void _ZN9S15502C143v18Ev();
extern void _ZN9S15502C143v19Ev();
extern void _ZN9S15502C143v20Ev();
extern void _ZN9S15502C143v21Ev();
static  VTBL_ENTRY vtc_S15502C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15502C14[0]),
  (VTBL_ENTRY)&_ZN9S15502C14D1Ev,
  (VTBL_ENTRY)&_ZN9S15502C14D0Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v13Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v14Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v15Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v16Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v17Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v18Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v19Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v20Ev,
  (VTBL_ENTRY)&_ZN9S15502C143v21Ev,
};
extern VTBL_ENTRY _ZTI9S15502C14[];
extern  VTBL_ENTRY _ZTV9S15502C14[];
Class_Descriptor cd_S15502C14 = {  "S15502C14", // class name
  bases_S15502C14, 1,
  &(vtc_S15502C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,104), // object size
  NSPAIRA(_ZTI9S15502C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S15502C14),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C16_nt  {
  void *s15502c16f0;
  int s15502c16f1[5];
  void  mf15502c16(); // _ZN12S15502C16_nt10mf15502c16Ev
};
//SIG(1 S15502C16_nt) C1{ m Fp Fi[5]}


void  S15502C16_nt ::mf15502c16(){}

//skip512 S15502C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C15  : S15502C3 {
  int s15502c15f0[3];
  ::S15502C16_nt s15502c15f1[4];
  int s15502c15f2;
  virtual void  v22(); // _ZN9S15502C153v22Ev
  virtual void  v23(); // _ZN9S15502C153v23Ev
  virtual void  v24(); // _ZN9S15502C153v24Ev
  virtual void  v25(); // _ZN9S15502C153v25Ev
  virtual void  v26(); // _ZN9S15502C153v26Ev
  virtual void  v27(); // _ZN9S15502C153v27Ev
  virtual void  v28(); // _ZN9S15502C153v28Ev
  ~S15502C15(); // tgen
  S15502C15(); // tgen
};
//SIG(1 S15502C15) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 Fi} v1 v2 v3 v4 v5 v6 v7 Fi[3] FC3{ m Fp Fi[5]}[4] Fi}


void  S15502C15 ::v22(){vfunc_called(this, "_ZN9S15502C153v22Ev");}
void  S15502C15 ::v23(){vfunc_called(this, "_ZN9S15502C153v23Ev");}
void  S15502C15 ::v24(){vfunc_called(this, "_ZN9S15502C153v24Ev");}
void  S15502C15 ::v25(){vfunc_called(this, "_ZN9S15502C153v25Ev");}
void  S15502C15 ::v26(){vfunc_called(this, "_ZN9S15502C153v26Ev");}
void  S15502C15 ::v27(){vfunc_called(this, "_ZN9S15502C153v27Ev");}
void  S15502C15 ::v28(){vfunc_called(this, "_ZN9S15502C153v28Ev");}
S15502C15 ::~S15502C15(){ note_dtor("S15502C15", this);} // tgen
S15502C15 ::S15502C15(){ note_ctor("S15502C15", this);} // tgen

static void Test_S15502C15()
{
  extern Class_Descriptor cd_S15502C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,31)];
    init_test(&cd_S15502C15, buf);
    S15502C15 *dp, &lv = *(dp=new (buf) S15502C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,120), "sizeof(S15502C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C15)");
    check_base_class_offset(lv, (S15502C3*), 0, "S15502C15");
    check_field_offset(lv, s15502c15f0, ABISELECT(12,8), "S15502C15.s15502c15f0");
    check_field_offset(lv, s15502c15f1, ABISELECT(24,20), "S15502C15.s15502c15f1");
    check_field_offset(lv, s15502c15f2, ABISELECT(152,116), "S15502C15.s15502c15f2");
    test_class_info(&lv, &cd_S15502C15);
    dp->~S15502C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15502C15(Test_S15502C15, "S15502C15", ABISELECT(160,120));

#else // __cplusplus

extern void _ZN9S15502C15C1Ev();
extern void _ZN9S15502C15D1Ev();
Name_Map name_map_S15502C15[] = {
  NSPAIR(_ZN9S15502C15C1Ev),
  NSPAIR(_ZN9S15502C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15502C3;
extern VTBL_ENTRY _ZTI8S15502C3[];
extern  VTBL_ENTRY _ZTV8S15502C3[];
static Base_Class bases_S15502C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S15502C15[];
extern void _ZN9S15502C15D1Ev();
extern void _ZN9S15502C15D0Ev();
extern void _ZN8S15502C32v8Ev();
extern void _ZN8S15502C32v9Ev();
extern void _ZN8S15502C33v10Ev();
extern void _ZN8S15502C33v11Ev();
extern void _ZN8S15502C33v12Ev();
extern void _ZN8S15502C33v13Ev();
extern void _ZN8S15502C33v14Ev();
extern void _ZN9S15502C153v22Ev();
extern void _ZN9S15502C153v23Ev();
extern void _ZN9S15502C153v24Ev();
extern void _ZN9S15502C153v25Ev();
extern void _ZN9S15502C153v26Ev();
extern void _ZN9S15502C153v27Ev();
extern void _ZN9S15502C153v28Ev();
static  VTBL_ENTRY vtc_S15502C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15502C15[0]),
  (VTBL_ENTRY)&_ZN9S15502C15D1Ev,
  (VTBL_ENTRY)&_ZN9S15502C15D0Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15502C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v13Ev,
  (VTBL_ENTRY)&_ZN8S15502C33v14Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v22Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v23Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v24Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v25Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v26Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v27Ev,
  (VTBL_ENTRY)&_ZN9S15502C153v28Ev,
};
extern VTBL_ENTRY _ZTI9S15502C15[];
extern  VTBL_ENTRY _ZTV9S15502C15[];
Class_Descriptor cd_S15502C15 = {  "S15502C15", // class name
  bases_S15502C15, 1,
  &(vtc_S15502C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,120), // object size
  NSPAIRA(_ZTI9S15502C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S15502C15),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  S15502C17  {
  int s15502c17f0[4];
  char s15502c17f1[2];
  int s15502c17f2;
  void  mf15502c17(); // _ZN9S15502C1710mf15502c17Ev
};
//SIG(-1 S15502C17) C1{ m Fi[4] Fc[2] Fi}


void  S15502C17 ::mf15502c17(){}

static void Test_S15502C17()
{
  {
    init_simple_test("S15502C17");
    S15502C17 lv;
    check2(sizeof(lv), 24, "sizeof(S15502C17)");
    check2(__alignof__(lv), 4, "__alignof__(S15502C17)");
    check_field_offset(lv, s15502c17f0, 0, "S15502C17.s15502c17f0");
    check_field_offset(lv, s15502c17f1, 16, "S15502C17.s15502c17f1");
    check_field_offset(lv, s15502c17f2, 20, "S15502C17.s15502c17f2");
  }
}
static Arrange_To_Call_Me vS15502C17(Test_S15502C17, "S15502C17", 24);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C18  {
  int s15502c18f0[3];
  ::S15502C4_nt s15502c18f1;
  ::S15502C4_nt s15502c18f2;
  ::S15502C4_nt s15502c18f3;
  ::S15502C4_nt s15502c18f4;
  int s15502c18f5;
  ::S15502C4_nt s15502c18f6;
  ::S15502C4_nt s15502c18f7;
  ::S15502C4_nt s15502c18f8;
  ::S15502C9_nt s15502c18f9;
  ::S15502C4_nt s15502c18f10;
  ::S15502C4_nt s15502c18f11;
  ::S15502C4_nt s15502c18f12;
  int s15502c18f13[3];
  ::S15502C4_nt s15502c18f14;
  ::S15502C4_nt s15502c18f15;
  ::S15502C4_nt s15502c18f16;
  ::S15502C4_nt s15502c18f17;
  int s15502c18f18[5];
  ::S15502C4_nt s15502c18f19;
  ::S15502C4_nt s15502c18f20;
  ::S15502C4_nt s15502c18f21;
  ::S15502C4_nt s15502c18f22;
  void  mf15502c18(); // _ZN9S15502C1810mf15502c18Ev
};
//SIG(-1 S15502C18) C1{ m Fi[3] FC2{ BC3{ m Fc[16]}} FC2 FC2 FC2 Fi FC2 FC2 FC2 FC4{ BC5{ m FC3 FC3 FC3 FC3}} FC2 FC2 FC2 Fi[3] FC2 FC2 FC2 FC2 Fi[5] FC2 FC2 FC2 FC2}


void  S15502C18 ::mf15502c18(){}

static void Test_S15502C18()
{
  {
    init_simple_test("S15502C18");
    S15502C18 lv;
    check2(sizeof(lv), 400, "sizeof(S15502C18)");
    check2(__alignof__(lv), 4, "__alignof__(S15502C18)");
    check_field_offset(lv, s15502c18f0, 0, "S15502C18.s15502c18f0");
    check_field_offset(lv, s15502c18f1, 12, "S15502C18.s15502c18f1");
    check_field_offset(lv, s15502c18f2, 28, "S15502C18.s15502c18f2");
    check_field_offset(lv, s15502c18f3, 44, "S15502C18.s15502c18f3");
    check_field_offset(lv, s15502c18f4, 60, "S15502C18.s15502c18f4");
    check_field_offset(lv, s15502c18f5, 76, "S15502C18.s15502c18f5");
    check_field_offset(lv, s15502c18f6, 80, "S15502C18.s15502c18f6");
    check_field_offset(lv, s15502c18f7, 96, "S15502C18.s15502c18f7");
    check_field_offset(lv, s15502c18f8, 112, "S15502C18.s15502c18f8");
    check_field_offset(lv, s15502c18f9, 128, "S15502C18.s15502c18f9");
    check_field_offset(lv, s15502c18f10, 192, "S15502C18.s15502c18f10");
    check_field_offset(lv, s15502c18f11, 208, "S15502C18.s15502c18f11");
    check_field_offset(lv, s15502c18f12, 224, "S15502C18.s15502c18f12");
    check_field_offset(lv, s15502c18f13, 240, "S15502C18.s15502c18f13");
    check_field_offset(lv, s15502c18f14, 252, "S15502C18.s15502c18f14");
    check_field_offset(lv, s15502c18f15, 268, "S15502C18.s15502c18f15");
    check_field_offset(lv, s15502c18f16, 284, "S15502C18.s15502c18f16");
    check_field_offset(lv, s15502c18f17, 300, "S15502C18.s15502c18f17");
    check_field_offset(lv, s15502c18f18, 316, "S15502C18.s15502c18f18");
    check_field_offset(lv, s15502c18f19, 336, "S15502C18.s15502c18f19");
    check_field_offset(lv, s15502c18f20, 352, "S15502C18.s15502c18f20");
    check_field_offset(lv, s15502c18f21, 368, "S15502C18.s15502c18f21");
    check_field_offset(lv, s15502c18f22, 384, "S15502C18.s15502c18f22");
  }
}
static Arrange_To_Call_Me vS15502C18(Test_S15502C18, "S15502C18", 400);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C19  {
  int s15502c19f0[13];
  char s15502c19f1[2];
  int s15502c19f2[10];
  char s15502c19f3;
  ::S15502C4_nt s15502c19f4;
  ::S15502C4_nt s15502c19f5;
  ::S15502C4_nt s15502c19f6[4];
  ::S15502C4_nt s15502c19f7[4];
  ::S15502C9_nt s15502c19f8[4];
  ::S15502C9_nt s15502c19f9[4];
  int s15502c19f10[4];
  ::S15502C6 s15502c19f11[4];
  int s15502c19f12[4];
  ::S15502C4_nt s15502c19f13[4];
  char s15502c19f14[4];
  ::S15502C4_nt s15502c19f15[4];
  int s15502c19f16[16];
  ::S15502C9_nt s15502c19f17[4];
  ::S15502C4_nt s15502c19f18[4];
  void  mf15502c19(); // _ZN9S15502C1910mf15502c19Ev
};
//SIG(-1 S15502C19) C1{ m Fi[13] Fc[2] Fi[10] Fc FC2{ BC3{ m Fc[16]}} FC2 FC2[4] FC2[4] FC4{ BC5{ m FC3 FC3 FC3 FC3}}[4] FC4[4] Fi[4] FC6{ m Fp FC2 FC2 FC2 Fi[3] Fp Fi[2] Fc}[4] Fi[4] FC2[4] Fc[4] FC2[4] Fi[16] FC4[4] FC2[4]}


void  S15502C19 ::mf15502c19(){}

static void Test_S15502C19()
{
  {
    init_simple_test("S15502C19");
    S15502C19 lv;
    check2(sizeof(lv), ABISELECT(1712,1640), "sizeof(S15502C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C19)");
    check_field_offset(lv, s15502c19f0, 0, "S15502C19.s15502c19f0");
    check_field_offset(lv, s15502c19f1, 52, "S15502C19.s15502c19f1");
    check_field_offset(lv, s15502c19f2, 56, "S15502C19.s15502c19f2");
    check_field_offset(lv, s15502c19f3, 96, "S15502C19.s15502c19f3");
    check_field_offset(lv, s15502c19f4, 97, "S15502C19.s15502c19f4");
    check_field_offset(lv, s15502c19f5, 113, "S15502C19.s15502c19f5");
    check_field_offset(lv, s15502c19f6, 129, "S15502C19.s15502c19f6");
    check_field_offset(lv, s15502c19f7, 193, "S15502C19.s15502c19f7");
    check_field_offset(lv, s15502c19f8, 257, "S15502C19.s15502c19f8");
    check_field_offset(lv, s15502c19f9, 513, "S15502C19.s15502c19f9");
    check_field_offset(lv, s15502c19f10, 772, "S15502C19.s15502c19f10");
    check_field_offset(lv, s15502c19f11, ABISELECT(792,788), "S15502C19.s15502c19f11");
    check_field_offset(lv, s15502c19f12, ABISELECT(1176,1108), "S15502C19.s15502c19f12");
    check_field_offset(lv, s15502c19f13, ABISELECT(1192,1124), "S15502C19.s15502c19f13");
    check_field_offset(lv, s15502c19f14, ABISELECT(1256,1188), "S15502C19.s15502c19f14");
    check_field_offset(lv, s15502c19f15, ABISELECT(1260,1192), "S15502C19.s15502c19f15");
    check_field_offset(lv, s15502c19f16, ABISELECT(1324,1256), "S15502C19.s15502c19f16");
    check_field_offset(lv, s15502c19f17, ABISELECT(1388,1320), "S15502C19.s15502c19f17");
    check_field_offset(lv, s15502c19f18, ABISELECT(1644,1576), "S15502C19.s15502c19f18");
  }
}
static Arrange_To_Call_Me vS15502C19(Test_S15502C19, "S15502C19", ABISELECT(1712,1640));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C21  {
  ::S15502C4_nt s15502c21f0[4];
  ::S15502C9_nt s15502c21f1[4];
  ::S15502C4_nt s15502c21f2[4];
  ::S15502C4_nt s15502c21f3[4];
  ::S15502C4_nt s15502c21f4[4];
  ::S15502C4_nt s15502c21f5[4];
  ::S15502C4_nt s15502c21f6[4];
  ::S15502C4_nt s15502c21f7[4];
  ::S15502C4_nt s15502c21f8[4];
  ::S15502C4_nt s15502c21f9[4];
  ::S15502C4_nt s15502c21f10;
  ::S15502C4_nt s15502c21f11;
};
//SIG(-1 S15502C21) C1{ FC2{ BC3{ m Fc[16]}}[4] FC4{ BC5{ m FC3 FC3 FC3 FC3}}[4] FC2[4] FC2[4] FC2[4] FC2[4] FC2[4] FC2[4] FC2[4] FC2[4] FC2 FC2}



static void Test_S15502C21()
{
  {
    init_simple_test("S15502C21");
    S15502C21 lv;
    check2(sizeof(lv), 864, "sizeof(S15502C21)");
    check2(__alignof__(lv), 1, "__alignof__(S15502C21)");
    check_field_offset(lv, s15502c21f0, 0, "S15502C21.s15502c21f0");
    check_field_offset(lv, s15502c21f1, 64, "S15502C21.s15502c21f1");
    check_field_offset(lv, s15502c21f2, 320, "S15502C21.s15502c21f2");
    check_field_offset(lv, s15502c21f3, 384, "S15502C21.s15502c21f3");
    check_field_offset(lv, s15502c21f4, 448, "S15502C21.s15502c21f4");
    check_field_offset(lv, s15502c21f5, 512, "S15502C21.s15502c21f5");
    check_field_offset(lv, s15502c21f6, 576, "S15502C21.s15502c21f6");
    check_field_offset(lv, s15502c21f7, 640, "S15502C21.s15502c21f7");
    check_field_offset(lv, s15502c21f8, 704, "S15502C21.s15502c21f8");
    check_field_offset(lv, s15502c21f9, 768, "S15502C21.s15502c21f9");
    check_field_offset(lv, s15502c21f10, 832, "S15502C21.s15502c21f10");
    check_field_offset(lv, s15502c21f11, 848, "S15502C21.s15502c21f11");
  }
}
static Arrange_To_Call_Me vS15502C21(Test_S15502C21, "S15502C21", 864);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15502C1  {
  ::S15502C2 s15502c1f0[4];
  ::S15502C7 s15502c1f1[4];
  ::S15502C11 s15502c1f2;
  ::S15502C14 s15502c1f3;
  ::S15502C15 s15502c1f4[4];
  ::S15502C17 s15502c1f5;
  ::S15502C4_nt s15502c1f6[4];
  int s15502c1f7[8];
  ::S15502C4_nt s15502c1f8;
  ::S15502C4_nt s15502c1f9;
  int s15502c1f10[8];
  ::S15502C18 s15502c1f11;
  ::S15502C19 s15502c1f12;
  ::S3281C13_nt s15502c1f13;
  ::S15502C4_nt s15502c1f14;
  ::S15502C4_nt s15502c1f15;
  void *s15502c1f16;
  int s15502c1f17;
  ::S15502C21 s15502c1f18;
  void  mf15502c1(); // _ZN8S15502C19mf15502c1Ev
};
//SIG(1 S15502C1) C1{ m FC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[14] Fc[2] FC4{ BC5{ m Fc[16]}} FC4 FC4 FC4 FC4 FC4 Fi[2] FC4 FC4 FC4 FC4 Fi[6] FC6{ m Fp FC4 FC4 FC4 Fi[3] Fp Fi[2] Fc} Fp FC6 FC4 Fi[7]}[4] FC7{ BC8{ vd m Fi[14] FC4 FC4 Fi FC4 FC4 FC4 FC4 FC4 FC9{ BC10{ m FC5 FC5 FC5 FC5}} FC4 FC4 FC4 FC9 Fc} vd Fi[2]}[4] FC11{ m Fi[5] FC4 Fi[3] Fc FC12{ Fi[2]}[4] Fi[4] Fp FC13{ m Fi[4]}} FC14{ BC3 v15 v16 v17 v18 v19 v20 v21 Fi[16] Fp Fi[2] Fc[3] Fi[4]} FC15{ BC3 v22 v23 v24 v25 v26 v27 v28 Fi[3] FC16{ m Fp Fi[5]}[4] Fi}[4] FC17{ m Fi[4] Fc[2] Fi} FC4[4] Fi[8] FC4 FC4 Fi[8] FC18{ m Fi[3] FC4 FC4 FC4 FC4 Fi FC4 FC4 FC4 FC9 FC4 FC4 FC4 Fi[3] FC4 FC4 FC4 FC4 Fi[5] FC4 FC4 FC4 FC4} FC19{ m Fi[13] Fc[2] Fi[10] Fc FC4 FC4 FC4[4] FC4[4] FC9[4] FC9[4] Fi[4] FC6[4] Fi[4] FC4[4] Fc[4] FC4[4] Fi[16] FC9[4] FC4[4]} FC20{ m Fi[3]} FC4 FC4 Fp Fi FC21{ FC4[4] FC9[4] FC4[4] FC4[4] FC4[4] FC4[4] FC4[4] FC4[4] FC4[4] FC4[4] FC4 FC4}}


void  S15502C1 ::mf15502c1(){}

static void Test_S15502C1()
{
  {
    init_simple_test("S15502C1");
    S15502C1 lv;
    check2(sizeof(lv), ABISELECT(7632,7172), "sizeof(S15502C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15502C1)");
    check_field_offset(lv, s15502c1f0, 0, "S15502C1.s15502c1f0");
    check_field_offset(lv, s15502c1f1, ABISELECT(2048,1872), "S15502C1.s15502c1f1");
    check_field_offset(lv, s15502c1f2, ABISELECT(3520,3328), "S15502C1.s15502c1f2");
    check_field_offset(lv, s15502c1f3, ABISELECT(3648,3448), "S15502C1.s15502c1f3");
    check_field_offset(lv, s15502c1f4, ABISELECT(3768,3552), "S15502C1.s15502c1f4");
    check_field_offset(lv, s15502c1f5, ABISELECT(4408,4032), "S15502C1.s15502c1f5");
    check_field_offset(lv, s15502c1f6, ABISELECT(4432,4056), "S15502C1.s15502c1f6");
    check_field_offset(lv, s15502c1f7, ABISELECT(4496,4120), "S15502C1.s15502c1f7");
    check_field_offset(lv, s15502c1f8, ABISELECT(4528,4152), "S15502C1.s15502c1f8");
    check_field_offset(lv, s15502c1f9, ABISELECT(4544,4168), "S15502C1.s15502c1f9");
    check_field_offset(lv, s15502c1f10, ABISELECT(4560,4184), "S15502C1.s15502c1f10");
    check_field_offset(lv, s15502c1f11, ABISELECT(4592,4216), "S15502C1.s15502c1f11");
    check_field_offset(lv, s15502c1f12, ABISELECT(4992,4616), "S15502C1.s15502c1f12");
    check_field_offset(lv, s15502c1f13, ABISELECT(6704,6256), "S15502C1.s15502c1f13");
    check_field_offset(lv, s15502c1f14, ABISELECT(6716,6268), "S15502C1.s15502c1f14");
    check_field_offset(lv, s15502c1f15, ABISELECT(6732,6284), "S15502C1.s15502c1f15");
    check_field_offset(lv, s15502c1f16, ABISELECT(6752,6300), "S15502C1.s15502c1f16");
    check_field_offset(lv, s15502c1f17, ABISELECT(6760,6304), "S15502C1.s15502c1f17");
    check_field_offset(lv, s15502c1f18, ABISELECT(6764,6308), "S15502C1.s15502c1f18");
  }
}
static Arrange_To_Call_Me vS15502C1(Test_S15502C1, "S15502C1", ABISELECT(7632,7172));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S638C5  {
  int s638c5f0;
  __tsi64 s638c5f1;
  void *s638c5f2[4];
  int s638c5f3[2];
  void *s638c5f4;
  ::S3281C4_nt s638c5f5;
  void *s638c5f6[2];
  virtual  ~S638C5(); // _ZN6S638C5D1Ev
  virtual void  v5(); // _ZN6S638C52v5Ev
  virtual void  v6(); // _ZN6S638C52v6Ev
  virtual void  v7(); // _ZN6S638C52v7Ev
  virtual void  v8(); // _ZN6S638C52v8Ev
  virtual void  v9(); // _ZN6S638C52v9Ev
  virtual void  v10(); // _ZN6S638C53v10Ev
  virtual void  v11(); // _ZN6S638C53v11Ev
  virtual void  v12(); // _ZN6S638C53v12Ev
  virtual void  v13(); // _ZN6S638C53v13Ev
  virtual void  v14(); // _ZN6S638C53v14Ev
  virtual void  v15(); // _ZN6S638C53v15Ev
  virtual void  v16(); // _ZN6S638C53v16Ev
  virtual void  v17(); // _ZN6S638C53v17Ev
  virtual void  v18(); // _ZN6S638C53v18Ev
  virtual void  v19(); // _ZN6S638C53v19Ev
  virtual void  v20(); // _ZN6S638C53v20Ev
  virtual void  v21(); // _ZN6S638C53v21Ev
  virtual void  v22(); // _ZN6S638C53v22Ev
  virtual void  v23(); // _ZN6S638C53v23Ev
  virtual void  v24(); // _ZN6S638C53v24Ev
  virtual void  v25(); // _ZN6S638C53v25Ev
  virtual void  v26(); // _ZN6S638C53v26Ev
  virtual void  v27(); // _ZN6S638C53v27Ev
  virtual void  v28(); // _ZN6S638C53v28Ev
  virtual void  v29(); // _ZN6S638C53v29Ev
  virtual void  v30(); // _ZN6S638C53v30Ev
  virtual void  v31(); // _ZN6S638C53v31Ev
  virtual void  v32(); // _ZN6S638C53v32Ev
  virtual void  v33(); // _ZN6S638C53v33Ev
  virtual void  v34(); // _ZN6S638C53v34Ev
  virtual void  v35(); // _ZN6S638C53v35Ev
  virtual void  v36(); // _ZN6S638C53v36Ev
  virtual void  v37(); // _ZN6S638C53v37Ev
  virtual void  v38(); // _ZN6S638C53v38Ev
  virtual void  v39(); // _ZN6S638C53v39Ev
  virtual void  v40(); // _ZN6S638C53v40Ev
  virtual void  v41(); // _ZN6S638C53v41Ev
  virtual void  v42(); // _ZN6S638C53v42Ev
  virtual void  v43(); // _ZN6S638C53v43Ev
  virtual void  v44(); // _ZN6S638C53v44Ev
  virtual void  v45(); // _ZN6S638C53v45Ev
  virtual void  v46(); // _ZN6S638C53v46Ev
  virtual void  v47(); // _ZN6S638C53v47Ev
  virtual void  v48(); // _ZN6S638C53v48Ev
  virtual void  v49(); // _ZN6S638C53v49Ev
  virtual void  v50(); // _ZN6S638C53v50Ev
  virtual void  v51(); // _ZN6S638C53v51Ev
  virtual void  v52(); // _ZN6S638C53v52Ev
  virtual void  v53(); // _ZN6S638C53v53Ev
  virtual void  v54(); // _ZN6S638C53v54Ev
  virtual void  v55(); // _ZN6S638C53v55Ev
  virtual void  v56(); // _ZN6S638C53v56Ev
  virtual void  v57(); // _ZN6S638C53v57Ev
  virtual void  v58(); // _ZN6S638C53v58Ev
  virtual void  v59(); // _ZN6S638C53v59Ev
  virtual void  v60(); // _ZN6S638C53v60Ev
  virtual void  v61(); // _ZN6S638C53v61Ev
  virtual void  v62(); // _ZN6S638C53v62Ev
  virtual void  v63(); // _ZN6S638C53v63Ev
  virtual void  v64(); // _ZN6S638C53v64Ev
  virtual void  v65(); // _ZN6S638C53v65Ev
  virtual void  v66(); // _ZN6S638C53v66Ev
  virtual void  v67(); // _ZN6S638C53v67Ev
  virtual void  v68(); // _ZN6S638C53v68Ev
  S638C5(); // tgen
};
//SIG(-1 S638C5) 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]}


 S638C5 ::~S638C5(){ note_dtor("S638C5", this);}
void  S638C5 ::v5(){vfunc_called(this, "_ZN6S638C52v5Ev");}
void  S638C5 ::v6(){vfunc_called(this, "_ZN6S638C52v6Ev");}
void  S638C5 ::v7(){vfunc_called(this, "_ZN6S638C52v7Ev");}
void  S638C5 ::v8(){vfunc_called(this, "_ZN6S638C52v8Ev");}
void  S638C5 ::v9(){vfunc_called(this, "_ZN6S638C52v9Ev");}
void  S638C5 ::v10(){vfunc_called(this, "_ZN6S638C53v10Ev");}
void  S638C5 ::v11(){vfunc_called(this, "_ZN6S638C53v11Ev");}
void  S638C5 ::v12(){vfunc_called(this, "_ZN6S638C53v12Ev");}
void  S638C5 ::v13(){vfunc_called(this, "_ZN6S638C53v13Ev");}
void  S638C5 ::v14(){vfunc_called(this, "_ZN6S638C53v14Ev");}
void  S638C5 ::v15(){vfunc_called(this, "_ZN6S638C53v15Ev");}
void  S638C5 ::v16(){vfunc_called(this, "_ZN6S638C53v16Ev");}
void  S638C5 ::v17(){vfunc_called(this, "_ZN6S638C53v17Ev");}
void  S638C5 ::v18(){vfunc_called(this, "_ZN6S638C53v18Ev");}
void  S638C5 ::v19(){vfunc_called(this, "_ZN6S638C53v19Ev");}
void  S638C5 ::v20(){vfunc_called(this, "_ZN6S638C53v20Ev");}
void  S638C5 ::v21(){vfunc_called(this, "_ZN6S638C53v21Ev");}
void  S638C5 ::v22(){vfunc_called(this, "_ZN6S638C53v22Ev");}
void  S638C5 ::v23(){vfunc_called(this, "_ZN6S638C53v23Ev");}
void  S638C5 ::v24(){vfunc_called(this, "_ZN6S638C53v24Ev");}
void  S638C5 ::v25(){vfunc_called(this, "_ZN6S638C53v25Ev");}
void  S638C5 ::v26(){vfunc_called(this, "_ZN6S638C53v26Ev");}
void  S638C5 ::v27(){vfunc_called(this, "_ZN6S638C53v27Ev");}
void  S638C5 ::v28(){vfunc_called(this, "_ZN6S638C53v28Ev");}
void  S638C5 ::v29(){vfunc_called(this, "_ZN6S638C53v29Ev");}
void  S638C5 ::v30(){vfunc_called(this, "_ZN6S638C53v30Ev");}
void  S638C5 ::v31(){vfunc_called(this, "_ZN6S638C53v31Ev");}
void  S638C5 ::v32(){vfunc_called(this, "_ZN6S638C53v32Ev");}
void  S638C5 ::v33(){vfunc_called(this, "_ZN6S638C53v33Ev");}
void  S638C5 ::v34(){vfunc_called(this, "_ZN6S638C53v34Ev");}
void  S638C5 ::v35(){vfunc_called(this, "_ZN6S638C53v35Ev");}
void  S638C5 ::v36(){vfunc_called(this, "_ZN6S638C53v36Ev");}
void  S638C5 ::v37(){vfunc_called(this, "_ZN6S638C53v37Ev");}
void  S638C5 ::v38(){vfunc_called(this, "_ZN6S638C53v38Ev");}
void  S638C5 ::v39(){vfunc_called(this, "_ZN6S638C53v39Ev");}
void  S638C5 ::v40(){vfunc_called(this, "_ZN6S638C53v40Ev");}
void  S638C5 ::v41(){vfunc_called(this, "_ZN6S638C53v41Ev");}
void  S638C5 ::v42(){vfunc_called(this, "_ZN6S638C53v42Ev");}
void  S638C5 ::v43(){vfunc_called(this, "_ZN6S638C53v43Ev");}
void  S638C5 ::v44(){vfunc_called(this, "_ZN6S638C53v44Ev");}
void  S638C5 ::v45(){vfunc_called(this, "_ZN6S638C53v45Ev");}
void  S638C5 ::v46(){vfunc_called(this, "_ZN6S638C53v46Ev");}
void  S638C5 ::v47(){vfunc_called(this, "_ZN6S638C53v47Ev");}
void  S638C5 ::v48(){vfunc_called(this, "_ZN6S638C53v48Ev");}
void  S638C5 ::v49(){vfunc_called(this, "_ZN6S638C53v49Ev");}
void  S638C5 ::v50(){vfunc_called(this, "_ZN6S638C53v50Ev");}
void  S638C5 ::v51(){vfunc_called(this, "_ZN6S638C53v51Ev");}
void  S638C5 ::v52(){vfunc_called(this, "_ZN6S638C53v52Ev");}
void  S638C5 ::v53(){vfunc_called(this, "_ZN6S638C53v53Ev");}
void  S638C5 ::v54(){vfunc_called(this, "_ZN6S638C53v54Ev");}
void  S638C5 ::v55(){vfunc_called(this, "_ZN6S638C53v55Ev");}
void  S638C5 ::v56(){vfunc_called(this, "_ZN6S638C53v56Ev");}
void  S638C5 ::v57(){vfunc_called(this, "_ZN6S638C53v57Ev");}
void  S638C5 ::v58(){vfunc_called(this, "_ZN6S638C53v58Ev");}
void  S638C5 ::v59(){vfunc_called(this, "_ZN6S638C53v59Ev");}
void  S638C5 ::v60(){vfunc_called(this, "_ZN6S638C53v60Ev");}
void  S638C5 ::v61(){vfunc_called(this, "_ZN6S638C53v61Ev");}
void  S638C5 ::v62(){vfunc_called(this, "_ZN6S638C53v62Ev");}
void  S638C5 ::v63(){vfunc_called(this, "_ZN6S638C53v63Ev");}
void  S638C5 ::v64(){vfunc_called(this, "_ZN6S638C53v64Ev");}
void  S638C5 ::v65(){vfunc_called(this, "_ZN6S638C53v65Ev");}
void  S638C5 ::v66(){vfunc_called(this, "_ZN6S638C53v66Ev");}
void  S638C5 ::v67(){vfunc_called(this, "_ZN6S638C53v67Ev");}
void  S638C5 ::v68(){vfunc_called(this, "_ZN6S638C53v68Ev");}
S638C5 ::S638C5(){ note_ctor("S638C5", this);} // tgen

static void Test_S638C5()
{
  extern Class_Descriptor cd_S638C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S638C5, buf);
    S638C5 *dp, &lv = *(dp=new (buf) S638C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S638C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S638C5)");
    check_field_offset(lv, s638c5f0, ABISELECT(8,4), "S638C5.s638c5f0");
    check_field_offset(lv, s638c5f1, ABISELECT(16,8), "S638C5.s638c5f1");
    check_field_offset(lv, s638c5f2, ABISELECT(24,16), "S638C5.s638c5f2");
    check_field_offset(lv, s638c5f3, ABISELECT(56,32), "S638C5.s638c5f3");
    check_field_offset(lv, s638c5f4, ABISELECT(64,40), "S638C5.s638c5f4");
    check_field_offset(lv, s638c5f5, ABISELECT(72,44), "S638C5.s638c5f5");
    check_field_offset(lv, s638c5f6, ABISELECT(80,52), "S638C5.s638c5f6");
    test_class_info(&lv, &cd_S638C5);
    dp->~S638C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS638C5(Test_S638C5, "S638C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S638C5C1Ev();
extern void _ZN6S638C5D1Ev();
Name_Map name_map_S638C5[] = {
  NSPAIR(_ZN6S638C5C1Ev),
  NSPAIR(_ZN6S638C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S638C5[];
extern void _ZN6S638C5D1Ev();
extern void _ZN6S638C5D0Ev();
extern void _ZN6S638C52v5Ev();
extern void _ZN6S638C52v6Ev();
extern void _ZN6S638C52v7Ev();
extern void _ZN6S638C52v8Ev();
extern void _ZN6S638C52v9Ev();
extern void _ZN6S638C53v10Ev();
extern void _ZN6S638C53v11Ev();
extern void _ZN6S638C53v12Ev();
extern void _ZN6S638C53v13Ev();
extern void _ZN6S638C53v14Ev();
extern void _ZN6S638C53v15Ev();
extern void _ZN6S638C53v16Ev();
extern void _ZN6S638C53v17Ev();
extern void _ZN6S638C53v18Ev();
extern void _ZN6S638C53v19Ev();
extern void _ZN6S638C53v20Ev();
extern void _ZN6S638C53v21Ev();
extern void _ZN6S638C53v22Ev();
extern void _ZN6S638C53v23Ev();
extern void _ZN6S638C53v24Ev();
extern void _ZN6S638C53v25Ev();
extern void _ZN6S638C53v26Ev();
extern void _ZN6S638C53v27Ev();
extern void _ZN6S638C53v28Ev();
extern void _ZN6S638C53v29Ev();
extern void _ZN6S638C53v30Ev();
extern void _ZN6S638C53v31Ev();
extern void _ZN6S638C53v32Ev();
extern void _ZN6S638C53v33Ev();
extern void _ZN6S638C53v34Ev();
extern void _ZN6S638C53v35Ev();
extern void _ZN6S638C53v36Ev();
extern void _ZN6S638C53v37Ev();
extern void _ZN6S638C53v38Ev();
extern void _ZN6S638C53v39Ev();
extern void _ZN6S638C53v40Ev();
extern void _ZN6S638C53v41Ev();
extern void _ZN6S638C53v42Ev();
extern void _ZN6S638C53v43Ev();
extern void _ZN6S638C53v44Ev();
extern void _ZN6S638C53v45Ev();
extern void _ZN6S638C53v46Ev();
extern void _ZN6S638C53v47Ev();
extern void _ZN6S638C53v48Ev();
extern void _ZN6S638C53v49Ev();
extern void _ZN6S638C53v50Ev();
extern void _ZN6S638C53v51Ev();
extern void _ZN6S638C53v52Ev();
extern void _ZN6S638C53v53Ev();
extern void _ZN6S638C53v54Ev();
extern void _ZN6S638C53v55Ev();
extern void _ZN6S638C53v56Ev();
extern void _ZN6S638C53v57Ev();
extern void _ZN6S638C53v58Ev();
extern void _ZN6S638C53v59Ev();
extern void _ZN6S638C53v60Ev();
extern void _ZN6S638C53v61Ev();
extern void _ZN6S638C53v62Ev();
extern void _ZN6S638C53v63Ev();
extern void _ZN6S638C53v64Ev();
extern void _ZN6S638C53v65Ev();
extern void _ZN6S638C53v66Ev();
extern void _ZN6S638C53v67Ev();
extern void _ZN6S638C53v68Ev();
static  VTBL_ENTRY vtc_S638C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S638C5[0]),
  (VTBL_ENTRY)&_ZN6S638C5D1Ev,
  (VTBL_ENTRY)&_ZN6S638C5D0Ev,
  (VTBL_ENTRY)&_ZN6S638C52v5Ev,
  (VTBL_ENTRY)&_ZN6S638C52v6Ev,
  (VTBL_ENTRY)&_ZN6S638C52v7Ev,
  (VTBL_ENTRY)&_ZN6S638C52v8Ev,
  (VTBL_ENTRY)&_ZN6S638C52v9Ev,
  (VTBL_ENTRY)&_ZN6S638C53v10Ev,
  (VTBL_ENTRY)&_ZN6S638C53v11Ev,
  (VTBL_ENTRY)&_ZN6S638C53v12Ev,
  (VTBL_ENTRY)&_ZN6S638C53v13Ev,
  (VTBL_ENTRY)&_ZN6S638C53v14Ev,
  (VTBL_ENTRY)&_ZN6S638C53v15Ev,
  (VTBL_ENTRY)&_ZN6S638C53v16Ev,
  (VTBL_ENTRY)&_ZN6S638C53v17Ev,
  (VTBL_ENTRY)&_ZN6S638C53v18Ev,
  (VTBL_ENTRY)&_ZN6S638C53v19Ev,
  (VTBL_ENTRY)&_ZN6S638C53v20Ev,
  (VTBL_ENTRY)&_ZN6S638C53v21Ev,
  (VTBL_ENTRY)&_ZN6S638C53v22Ev,
  (VTBL_ENTRY)&_ZN6S638C53v23Ev,
  (VTBL_ENTRY)&_ZN6S638C53v24Ev,
  (VTBL_ENTRY)&_ZN6S638C53v25Ev,
  (VTBL_ENTRY)&_ZN6S638C53v26Ev,
  (VTBL_ENTRY)&_ZN6S638C53v27Ev,
  (VTBL_ENTRY)&_ZN6S638C53v28Ev,
  (VTBL_ENTRY)&_ZN6S638C53v29Ev,
  (VTBL_ENTRY)&_ZN6S638C53v30Ev,
  (VTBL_ENTRY)&_ZN6S638C53v31Ev,
  (VTBL_ENTRY)&_ZN6S638C53v32Ev,
  (VTBL_ENTRY)&_ZN6S638C53v33Ev,
  (VTBL_ENTRY)&_ZN6S638C53v34Ev,
  (VTBL_ENTRY)&_ZN6S638C53v35Ev,
  (VTBL_ENTRY)&_ZN6S638C53v36Ev,
  (VTBL_ENTRY)&_ZN6S638C53v37Ev,
  (VTBL_ENTRY)&_ZN6S638C53v38Ev,
  (VTBL_ENTRY)&_ZN6S638C53v39Ev,
  (VTBL_ENTRY)&_ZN6S638C53v40Ev,
  (VTBL_ENTRY)&_ZN6S638C53v41Ev,
  (VTBL_ENTRY)&_ZN6S638C53v42Ev,
  (VTBL_ENTRY)&_ZN6S638C53v43Ev,
  (VTBL_ENTRY)&_ZN6S638C53v44Ev,
  (VTBL_ENTRY)&_ZN6S638C53v45Ev,
  (VTBL_ENTRY)&_ZN6S638C53v46Ev,
  (VTBL_ENTRY)&_ZN6S638C53v47Ev,
  (VTBL_ENTRY)&_ZN6S638C53v48Ev,
  (VTBL_ENTRY)&_ZN6S638C53v49Ev,
  (VTBL_ENTRY)&_ZN6S638C53v50Ev,
  (VTBL_ENTRY)&_ZN6S638C53v51Ev,
  (VTBL_ENTRY)&_ZN6S638C53v52Ev,
  (VTBL_ENTRY)&_ZN6S638C53v53Ev,
  (VTBL_ENTRY)&_ZN6S638C53v54Ev,
  (VTBL_ENTRY)&_ZN6S638C53v55Ev,
  (VTBL_ENTRY)&_ZN6S638C53v56Ev,
  (VTBL_ENTRY)&_ZN6S638C53v57Ev,
  (VTBL_ENTRY)&_ZN6S638C53v58Ev,
  (VTBL_ENTRY)&_ZN6S638C53v59Ev,
  (VTBL_ENTRY)&_ZN6S638C53v60Ev,
  (VTBL_ENTRY)&_ZN6S638C53v61Ev,
  (VTBL_ENTRY)&_ZN6S638C53v62Ev,
  (VTBL_ENTRY)&_ZN6S638C53v63Ev,
  (VTBL_ENTRY)&_ZN6S638C53v64Ev,
  (VTBL_ENTRY)&_ZN6S638C53v65Ev,
  (VTBL_ENTRY)&_ZN6S638C53v66Ev,
  (VTBL_ENTRY)&_ZN6S638C53v67Ev,
  (VTBL_ENTRY)&_ZN6S638C53v68Ev,
};
extern VTBL_ENTRY _ZTI6S638C5[];
extern  VTBL_ENTRY _ZTV6S638C5[];
Class_Descriptor cd_S638C5 = {  "S638C5", // class name
  0,0,//no base classes
  &(vtc_S638C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S638C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S638C5),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  S638C9  : S3281C7_nt {
};
//SIG(-1 S638C9) C1{ BC2{ m Fp Fi[2]}}



static void Test_S638C9()
{
  extern Class_Descriptor cd_S638C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S638C9, buf);
    S638C9 &lv = *(new (buf) S638C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S638C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S638C9)");
    check_base_class_offset(lv, (S3281C7_nt*), 0, "S638C9");
    test_class_info(&lv, &cd_S638C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS638C9(Test_S638C9, "S638C9", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S638C8()
{
  extern Class_Descriptor cd_S638C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S638C8, buf);
    S638C8 &lv = *(new (buf) S638C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S638C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S638C8)");
    check_base_class_offset(lv, (S3281C7_nt*)(S638C9*), 0, "S638C8");
    check_base_class_offset(lv, (S638C9*), 0, "S638C8");
    test_class_info(&lv, &cd_S638C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS638C8(Test_S638C8, "S638C8", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S638C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S3281C7_nt;
extern Class_Descriptor cd_S638C9;
extern Class_Descriptor cd_S638C8;
static Base_Class bases_S638C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S638C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S638C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S638C4_nt  : S638C5 {
  int s638c4f0[2];
  void *s638c4f1;
  int s638c4f2[2];
  ::S638C7_nt s638c4f3;
  ::S638C7_nt s638c4f4;
  ::S4224C37 s638c4f5;
  ::S638C7_nt s638c4f6;
  unsigned int s638c4f7:1;
  unsigned int s638c4f8:1;
  unsigned int s638c4f9:1;
  unsigned int s638c4f10:1;
  unsigned int s638c4f11:1;
  int s638c4f12[2];
  virtual  ~S638C4_nt(); // _ZN9S638C4_ntD1Ev
  virtual void  v69(); // _ZN9S638C4_nt3v69Ev
  virtual void  v70(); // _ZN9S638C4_nt3v70Ev
  virtual void  v71(); // _ZN9S638C4_nt3v71Ev
  virtual void  v72(); // _ZN9S638C4_nt3v72Ev
  virtual void  v73(); // _ZN9S638C4_nt3v73Ev
  virtual void  v74(); // _ZN9S638C4_nt3v74Ev
  virtual void  v75(); // _ZN9S638C4_nt3v75Ev
  virtual void  v76(); // _ZN9S638C4_nt3v76Ev
  virtual void  v77(); // _ZN9S638C4_nt3v77Ev
  virtual void  v78(); // _ZN9S638C4_nt3v78Ev
  virtual void  v79(); // _ZN9S638C4_nt3v79Ev
  virtual void  v80(); // _ZN9S638C4_nt3v80Ev
  virtual void  v81(); // _ZN9S638C4_nt3v81Ev
  virtual void  v82(); // _ZN9S638C4_nt3v82Ev
  virtual void  v83(); // _ZN9S638C4_nt3v83Ev
  virtual void  v84(); // _ZN9S638C4_nt3v84Ev
  virtual void  v85(); // _ZN9S638C4_nt3v85Ev
  virtual void  v86(); // _ZN9S638C4_nt3v86Ev
  virtual void  v87(); // _ZN9S638C4_nt3v87Ev
  virtual void  v88(); // _ZN9S638C4_nt3v88Ev
  virtual void  v89(); // _ZN9S638C4_nt3v89Ev
  virtual void  v90(); // _ZN9S638C4_nt3v90Ev
  S638C4_nt(); // tgen
};
//SIG(-1 S638C4_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]}


 S638C4_nt ::~S638C4_nt(){ note_dtor("S638C4_nt", this);}
void  S638C4_nt ::v69(){vfunc_called(this, "_ZN9S638C4_nt3v69Ev");}
void  S638C4_nt ::v70(){vfunc_called(this, "_ZN9S638C4_nt3v70Ev");}
void  S638C4_nt ::v71(){vfunc_called(this, "_ZN9S638C4_nt3v71Ev");}
void  S638C4_nt ::v72(){vfunc_called(this, "_ZN9S638C4_nt3v72Ev");}
void  S638C4_nt ::v73(){vfunc_called(this, "_ZN9S638C4_nt3v73Ev");}
void  S638C4_nt ::v74(){vfunc_called(this, "_ZN9S638C4_nt3v74Ev");}
void  S638C4_nt ::v75(){vfunc_called(this, "_ZN9S638C4_nt3v75Ev");}
void  S638C4_nt ::v76(){vfunc_called(this, "_ZN9S638C4_nt3v76Ev");}
void  S638C4_nt ::v77(){vfunc_called(this, "_ZN9S638C4_nt3v77Ev");}
void  S638C4_nt ::v78(){vfunc_called(this, "_ZN9S638C4_nt3v78Ev");}
void  S638C4_nt ::v79(){vfunc_called(this, "_ZN9S638C4_nt3v79Ev");}
void  S638C4_nt ::v80(){vfunc_called(this, "_ZN9S638C4_nt3v80Ev");}
void  S638C4_nt ::v81(){vfunc_called(this, "_ZN9S638C4_nt3v81Ev");}
void  S638C4_nt ::v82(){vfunc_called(this, "_ZN9S638C4_nt3v82Ev");}
void  S638C4_nt ::v83(){vfunc_called(this, "_ZN9S638C4_nt3v83Ev");}
void  S638C4_nt ::v84(){vfunc_called(this, "_ZN9S638C4_nt3v84Ev");}
void  S638C4_nt ::v85(){vfunc_called(this, "_ZN9S638C4_nt3v85Ev");}
void  S638C4_nt ::v86(){vfunc_called(this, "_ZN9S638C4_nt3v86Ev");}
void  S638C4_nt ::v87(){vfunc_called(this, "_ZN9S638C4_nt3v87Ev");}
void  S638C4_nt ::v88(){vfunc_called(this, "_ZN9S638C4_nt3v88Ev");}
void  S638C4_nt ::v89(){vfunc_called(this, "_ZN9S638C4_nt3v89Ev");}
void  S638C4_nt ::v90(){vfunc_called(this, "_ZN9S638C4_nt3v90Ev");}
S638C4_nt ::S638C4_nt(){ note_ctor("S638C4_nt", this);} // tgen

//skip512 S638C4_nt

#else // __cplusplus

extern void _ZN9S638C4_ntC1Ev();
extern void _ZN9S638C4_ntD1Ev();
Name_Map name_map_S638C4_nt[] = {
  NSPAIR(_ZN9S638C4_ntC1Ev),
  NSPAIR(_ZN9S638C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S638C5;
extern VTBL_ENTRY _ZTI6S638C5[];
extern  VTBL_ENTRY _ZTV6S638C5[];
static Base_Class bases_S638C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S638C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S638C4_nt[];
extern void _ZN9S638C4_ntD1Ev();
extern void _ZN9S638C4_ntD0Ev();
extern void _ZN6S638C52v5Ev();
extern void _ZN6S638C52v6Ev();
extern void _ZN6S638C52v7Ev();
extern void _ZN6S638C52v8Ev();
extern void _ZN6S638C52v9Ev();
extern void _ZN6S638C53v10Ev();
extern void _ZN6S638C53v11Ev();
extern void _ZN6S638C53v12Ev();
extern void _ZN6S638C53v13Ev();
extern void _ZN6S638C53v14Ev();
extern void _ZN6S638C53v15Ev();
extern void _ZN6S638C53v16Ev();
extern void _ZN6S638C53v17Ev();
extern void _ZN6S638C53v18Ev();
extern void _ZN6S638C53v19Ev();
extern void _ZN6S638C53v20Ev();
extern void _ZN6S638C53v21Ev();
extern void _ZN6S638C53v22Ev();
extern void _ZN6S638C53v23Ev();
extern void _ZN6S638C53v24Ev();
extern void _ZN6S638C53v25Ev();
extern void _ZN6S638C53v26Ev();
extern void _ZN6S638C53v27Ev();
extern void _ZN6S638C53v28Ev();
extern void _ZN6S638C53v29Ev();
extern void _ZN6S638C53v30Ev();
extern void _ZN6S638C53v31Ev();
extern void _ZN6S638C53v32Ev();
extern void _ZN6S638C53v33Ev();
extern void _ZN6S638C53v34Ev();
extern void _ZN6S638C53v35Ev();
extern void _ZN6S638C53v36Ev();
extern void _ZN6S638C53v37Ev();
extern void _ZN6S638C53v38Ev();
extern void _ZN6S638C53v39Ev();
extern void _ZN6S638C53v40Ev();
extern void _ZN6S638C53v41Ev();
extern void _ZN6S638C53v42Ev();
extern void _ZN6S638C53v43Ev();
extern void _ZN6S638C53v44Ev();
extern void _ZN6S638C53v45Ev();
extern void _ZN6S638C53v46Ev();
extern void _ZN6S638C53v47Ev();
extern void _ZN6S638C53v48Ev();
extern void _ZN6S638C53v49Ev();
extern void _ZN6S638C53v50Ev();
extern void _ZN6S638C53v51Ev();
extern void _ZN6S638C53v52Ev();
extern void _ZN6S638C53v53Ev();
extern void _ZN6S638C53v54Ev();
extern void _ZN6S638C53v55Ev();
extern void _ZN6S638C53v56Ev();
extern void _ZN6S638C53v57Ev();
extern void _ZN6S638C53v58Ev();
extern void _ZN6S638C53v59Ev();
extern void _ZN6S638C53v60Ev();
extern void _ZN6S638C53v61Ev();
extern void _ZN6S638C53v62Ev();
extern void _ZN6S638C53v63Ev();
extern void _ZN6S638C53v64Ev();
extern void _ZN6S638C53v65Ev();
extern void _ZN6S638C53v66Ev();
extern void _ZN6S638C53v67Ev();
extern void _ZN6S638C53v68Ev();
extern void _ZN9S638C4_nt3v69Ev();
extern void _ZN9S638C4_nt3v70Ev();
extern void _ZN9S638C4_nt3v71Ev();
extern void _ZN9S638C4_nt3v72Ev();
extern void _ZN9S638C4_nt3v73Ev();
extern void _ZN9S638C4_nt3v74Ev();
extern void _ZN9S638C4_nt3v75Ev();
extern void _ZN9S638C4_nt3v76Ev();
extern void _ZN9S638C4_nt3v77Ev();
extern void _ZN9S638C4_nt3v78Ev();
extern void _ZN9S638C4_nt3v79Ev();
extern void _ZN9S638C4_nt3v80Ev();
extern void _ZN9S638C4_nt3v81Ev();
extern void _ZN9S638C4_nt3v82Ev();
extern void _ZN9S638C4_nt3v83Ev();
extern void _ZN9S638C4_nt3v84Ev();
extern void _ZN9S638C4_nt3v85Ev();
extern void _ZN9S638C4_nt3v86Ev();
extern void _ZN9S638C4_nt3v87Ev();
extern void _ZN9S638C4_nt3v88Ev();
extern void _ZN9S638C4_nt3v89Ev();
extern void _ZN9S638C4_nt3v90Ev();
static  VTBL_ENTRY vtc_S638C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S638C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S638C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S638C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S638C52v5Ev,
  (VTBL_ENTRY)&_ZN6S638C52v6Ev,
  (VTBL_ENTRY)&_ZN6S638C52v7Ev,
  (VTBL_ENTRY)&_ZN6S638C52v8Ev,
  (VTBL_ENTRY)&_ZN6S638C52v9Ev,
  (VTBL_ENTRY)&_ZN6S638C53v10Ev,
  (VTBL_ENTRY)&_ZN6S638C53v11Ev,
  (VTBL_ENTRY)&_ZN6S638C53v12Ev,
  (VTBL_ENTRY)&_ZN6S638C53v13Ev,
  (VTBL_ENTRY)&_ZN6S638C53v14Ev,
  (VTBL_ENTRY)&_ZN6S638C53v15Ev,
  (VTBL_ENTRY)&_ZN6S638C53v16Ev,
  (VTBL_ENTRY)&_ZN6S638C53v17Ev,
  (VTBL_ENTRY)&_ZN6S638C53v18Ev,
  (VTBL_ENTRY)&_ZN6S638C53v19Ev,
  (VTBL_ENTRY)&_ZN6S638C53v20Ev,
  (VTBL_ENTRY)&_ZN6S638C53v21Ev,
  (VTBL_ENTRY)&_ZN6S638C53v22Ev,
  (VTBL_ENTRY)&_ZN6S638C53v23Ev,
  (VTBL_ENTRY)&_ZN6S638C53v24Ev,
  (VTBL_ENTRY)&_ZN6S638C53v25Ev,
  (VTBL_ENTRY)&_ZN6S638C53v26Ev,
  (VTBL_ENTRY)&_ZN6S638C53v27Ev,
  (VTBL_ENTRY)&_ZN6S638C53v28Ev,
  (VTBL_ENTRY)&_ZN6S638C53v29Ev,
  (VTBL_ENTRY)&_ZN6S638C53v30Ev,
  (VTBL_ENTRY)&_ZN6S638C53v31Ev,
  (VTBL_ENTRY)&_ZN6S638C53v32Ev,
  (VTBL_ENTRY)&_ZN6S638C53v33Ev,
  (VTBL_ENTRY)&_ZN6S638C53v34Ev,
  (VTBL_ENTRY)&_ZN6S638C53v35Ev,
  (VTBL_ENTRY)&_ZN6S638C53v36Ev,
  (VTBL_ENTRY)&_ZN6S638C53v37Ev,
  (VTBL_ENTRY)&_ZN6S638C53v38Ev,
  (VTBL_ENTRY)&_ZN6S638C53v39Ev,
  (VTBL_ENTRY)&_ZN6S638C53v40Ev,
  (VTBL_ENTRY)&_ZN6S638C53v41Ev,
  (VTBL_ENTRY)&_ZN6S638C53v42Ev,
  (VTBL_ENTRY)&_ZN6S638C53v43Ev,
  (VTBL_ENTRY)&_ZN6S638C53v44Ev,
  (VTBL_ENTRY)&_ZN6S638C53v45Ev,
  (VTBL_ENTRY)&_ZN6S638C53v46Ev,
  (VTBL_ENTRY)&_ZN6S638C53v47Ev,
  (VTBL_ENTRY)&_ZN6S638C53v48Ev,
  (VTBL_ENTRY)&_ZN6S638C53v49Ev,
  (VTBL_ENTRY)&_ZN6S638C53v50Ev,
  (VTBL_ENTRY)&_ZN6S638C53v51Ev,
  (VTBL_ENTRY)&_ZN6S638C53v52Ev,
  (VTBL_ENTRY)&_ZN6S638C53v53Ev,
  (VTBL_ENTRY)&_ZN6S638C53v54Ev,
  (VTBL_ENTRY)&_ZN6S638C53v55Ev,
  (VTBL_ENTRY)&_ZN6S638C53v56Ev,
  (VTBL_ENTRY)&_ZN6S638C53v57Ev,
  (VTBL_ENTRY)&_ZN6S638C53v58Ev,
  (VTBL_ENTRY)&_ZN6S638C53v59Ev,
  (VTBL_ENTRY)&_ZN6S638C53v60Ev,
  (VTBL_ENTRY)&_ZN6S638C53v61Ev,
  (VTBL_ENTRY)&_ZN6S638C53v62Ev,
  (VTBL_ENTRY)&_ZN6S638C53v63Ev,
  (VTBL_ENTRY)&_ZN6S638C53v64Ev,
  (VTBL_ENTRY)&_ZN6S638C53v65Ev,
  (VTBL_ENTRY)&_ZN6S638C53v66Ev,
  (VTBL_ENTRY)&_ZN6S638C53v67Ev,
  (VTBL_ENTRY)&_ZN6S638C53v68Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v90Ev,
};
extern VTBL_ENTRY _ZTI9S638C4_nt[];
VTBL_ENTRY *P__ZTI9S638C4_nt = _ZTI9S638C4_nt; 
extern  VTBL_ENTRY _ZTV9S638C4_nt[];
Class_Descriptor cd_S638C4_nt = {  "S638C4_nt", // class name
  bases_S638C4_nt, 1,
  &(vtc_S638C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S638C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S638C4_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  S638C19  : S3281C7_nt {
};
//SIG(-1 S638C19) C1{ BC2{ m Fp Fi[2]}}



static void Test_S638C19()
{
  extern Class_Descriptor cd_S638C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S638C19, buf);
    S638C19 &lv = *(new (buf) S638C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S638C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S638C19)");
    check_base_class_offset(lv, (S3281C7_nt*), 0, "S638C19");
    test_class_info(&lv, &cd_S638C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS638C19(Test_S638C19, "S638C19", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S638C18()
{
  extern Class_Descriptor cd_S638C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S638C18, buf);
    S638C18 &lv = *(new (buf) S638C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S638C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S638C18)");
    check_base_class_offset(lv, (S3281C7_nt*)(S638C19*), 0, "S638C18");
    check_base_class_offset(lv, (S638C19*), 0, "S638C18");
    test_class_info(&lv, &cd_S638C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS638C18(Test_S638C18, "S638C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3281C7_nt;
extern Class_Descriptor cd_S638C19;
static Base_Class bases_S638C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3281C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S638C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S638C18 = {  "S638C18", // class name
  bases_S638C18, 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  S638C3_nt  : S638C4_nt {
  unsigned int s638c3f0:1;
  unsigned int s638c3f1:1;
  unsigned int s638c3f2:1;
  ::S3281C17 s638c3f3;
  ::S3281C11 s638c3f4;
  ::S3281C5_nt s638c3f5;
  ::S638C18 s638c3f6;
  int s638c3f7[3];
  virtual  ~S638C3_nt(); // _ZN9S638C3_ntD1Ev
  virtual void  v91(); // _ZN9S638C3_nt3v91Ev
  virtual void  v92(); // _ZN9S638C3_nt3v92Ev
  virtual void  v93(); // _ZN9S638C3_nt3v93Ev
  virtual void  v94(); // _ZN9S638C3_nt3v94Ev
  virtual void  v95(); // _ZN9S638C3_nt3v95Ev
  virtual void  v96(); // _ZN9S638C3_nt3v96Ev
  virtual void  v97(); // _ZN9S638C3_nt3v97Ev
  virtual void  v98(); // _ZN9S638C3_nt3v98Ev
  virtual void  v99(); // _ZN9S638C3_nt3v99Ev
  virtual void  v100(); // _ZN9S638C3_nt4v100Ev
  virtual void  v101(); // _ZN9S638C3_nt4v101Ev
  virtual void  v102(); // _ZN9S638C3_nt4v102Ev
  virtual void  v103(); // _ZN9S638C3_nt4v103Ev
  virtual void  v104(); // _ZN9S638C3_nt4v104Ev
  virtual void  v105(); // _ZN9S638C3_nt4v105Ev
  virtual void  v106(); // _ZN9S638C3_nt4v106Ev
  virtual void  v107(); // _ZN9S638C3_nt4v107Ev
  virtual void  v108(); // _ZN9S638C3_nt4v108Ev
  virtual void  v109(); // _ZN9S638C3_nt4v109Ev
  virtual void  v110(); // _ZN9S638C3_nt4v110Ev
  S638C3_nt(); // tgen
};
//SIG(-1 S638C3_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]}


 S638C3_nt ::~S638C3_nt(){ note_dtor("S638C3_nt", this);}
void  S638C3_nt ::v91(){vfunc_called(this, "_ZN9S638C3_nt3v91Ev");}
void  S638C3_nt ::v92(){vfunc_called(this, "_ZN9S638C3_nt3v92Ev");}
void  S638C3_nt ::v93(){vfunc_called(this, "_ZN9S638C3_nt3v93Ev");}
void  S638C3_nt ::v94(){vfunc_called(this, "_ZN9S638C3_nt3v94Ev");}
void  S638C3_nt ::v95(){vfunc_called(this, "_ZN9S638C3_nt3v95Ev");}
void  S638C3_nt ::v96(){vfunc_called(this, "_ZN9S638C3_nt3v96Ev");}
void  S638C3_nt ::v97(){vfunc_called(this, "_ZN9S638C3_nt3v97Ev");}
void  S638C3_nt ::v98(){vfunc_called(this, "_ZN9S638C3_nt3v98Ev");}
void  S638C3_nt ::v99(){vfunc_called(this, "_ZN9S638C3_nt3v99Ev");}
void  S638C3_nt ::v100(){vfunc_called(this, "_ZN9S638C3_nt4v100Ev");}
void  S638C3_nt ::v101(){vfunc_called(this, "_ZN9S638C3_nt4v101Ev");}
void  S638C3_nt ::v102(){vfunc_called(this, "_ZN9S638C3_nt4v102Ev");}
void  S638C3_nt ::v103(){vfunc_called(this, "_ZN9S638C3_nt4v103Ev");}
void  S638C3_nt ::v104(){vfunc_called(this, "_ZN9S638C3_nt4v104Ev");}
void  S638C3_nt ::v105(){vfunc_called(this, "_ZN9S638C3_nt4v105Ev");}
void  S638C3_nt ::v106(){vfunc_called(this, "_ZN9S638C3_nt4v106Ev");}
void  S638C3_nt ::v107(){vfunc_called(this, "_ZN9S638C3_nt4v107Ev");}
void  S638C3_nt ::v108(){vfunc_called(this, "_ZN9S638C3_nt4v108Ev");}
void  S638C3_nt ::v109(){vfunc_called(this, "_ZN9S638C3_nt4v109Ev");}
void  S638C3_nt ::v110(){vfunc_called(this, "_ZN9S638C3_nt4v110Ev");}
S638C3_nt ::S638C3_nt(){ note_ctor("S638C3_nt", this);} // tgen

//skip512 S638C3_nt

#else // __cplusplus

extern void _ZN9S638C3_ntC1Ev();
extern void _ZN9S638C3_ntD1Ev();
Name_Map name_map_S638C3_nt[] = {
  NSPAIR(_ZN9S638C3_ntC1Ev),
  NSPAIR(_ZN9S638C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S638C5;
extern VTBL_ENTRY _ZTI6S638C5[];
extern  VTBL_ENTRY _ZTV6S638C5[];
extern Class_Descriptor cd_S638C4_nt;
extern VTBL_ENTRY _ZTI9S638C4_nt[];
extern  VTBL_ENTRY _ZTV9S638C4_nt[];
static Base_Class bases_S638C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S638C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S638C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S638C3_nt[];
extern void _ZN9S638C3_ntD1Ev();
extern void _ZN9S638C3_ntD0Ev();
extern void _ZN6S638C52v5Ev();
extern void _ZN6S638C52v6Ev();
extern void _ZN6S638C52v7Ev();
extern void _ZN6S638C52v8Ev();
extern void _ZN6S638C52v9Ev();
extern void _ZN6S638C53v10Ev();
extern void _ZN6S638C53v11Ev();
extern void _ZN6S638C53v12Ev();
extern void _ZN6S638C53v13Ev();
extern void _ZN6S638C53v14Ev();
extern void _ZN6S638C53v15Ev();
extern void _ZN6S638C53v16Ev();
extern void _ZN6S638C53v17Ev();
extern void _ZN6S638C53v18Ev();
extern void _ZN6S638C53v19Ev();
extern void _ZN6S638C53v20Ev();
extern void _ZN6S638C53v21Ev();
extern void _ZN6S638C53v22Ev();
extern void _ZN6S638C53v23Ev();
extern void _ZN6S638C53v24Ev();
extern void _ZN6S638C53v25Ev();
extern void _ZN6S638C53v26Ev();
extern void _ZN6S638C53v27Ev();
extern void _ZN6S638C53v28Ev();
extern void _ZN6S638C53v29Ev();
extern void _ZN6S638C53v30Ev();
extern void _ZN6S638C53v31Ev();
extern void _ZN6S638C53v32Ev();
extern void _ZN6S638C53v33Ev();
extern void _ZN6S638C53v34Ev();
extern void _ZN6S638C53v35Ev();
extern void _ZN6S638C53v36Ev();
extern void _ZN6S638C53v37Ev();
extern void _ZN6S638C53v38Ev();
extern void _ZN6S638C53v39Ev();
extern void _ZN6S638C53v40Ev();
extern void _ZN6S638C53v41Ev();
extern void _ZN6S638C53v42Ev();
extern void _ZN6S638C53v43Ev();
extern void _ZN6S638C53v44Ev();
extern void _ZN6S638C53v45Ev();
extern void _ZN6S638C53v46Ev();
extern void _ZN6S638C53v47Ev();
extern void _ZN6S638C53v48Ev();
extern void _ZN6S638C53v49Ev();
extern void _ZN6S638C53v50Ev();
extern void _ZN6S638C53v51Ev();
extern void _ZN6S638C53v52Ev();
extern void _ZN6S638C53v53Ev();
extern void _ZN6S638C53v54Ev();
extern void _ZN6S638C53v55Ev();
extern void _ZN6S638C53v56Ev();
extern void _ZN6S638C53v57Ev();
extern void _ZN6S638C53v58Ev();
extern void _ZN6S638C53v59Ev();
extern void _ZN6S638C53v60Ev();
extern void _ZN6S638C53v61Ev();
extern void _ZN6S638C53v62Ev();
extern void _ZN6S638C53v63Ev();
extern void _ZN6S638C53v64Ev();
extern void _ZN6S638C53v65Ev();
extern void _ZN6S638C53v66Ev();
extern void _ZN6S638C53v67Ev();
extern void _ZN6S638C53v68Ev();
extern void _ZN9S638C4_nt3v69Ev();
extern void _ZN9S638C4_nt3v70Ev();
extern void _ZN9S638C4_nt3v71Ev();
extern void _ZN9S638C4_nt3v72Ev();
extern void _ZN9S638C4_nt3v73Ev();
extern void _ZN9S638C4_nt3v74Ev();
extern void _ZN9S638C4_nt3v75Ev();
extern void _ZN9S638C4_nt3v76Ev();
extern void _ZN9S638C4_nt3v77Ev();
extern void _ZN9S638C4_nt3v78Ev();
extern void _ZN9S638C4_nt3v79Ev();
extern void _ZN9S638C4_nt3v80Ev();
extern void _ZN9S638C4_nt3v81Ev();
extern void _ZN9S638C4_nt3v82Ev();
extern void _ZN9S638C4_nt3v83Ev();
extern void _ZN9S638C4_nt3v84Ev();
extern void _ZN9S638C4_nt3v85Ev();
extern void _ZN9S638C4_nt3v86Ev();
extern void _ZN9S638C4_nt3v87Ev();
extern void _ZN9S638C4_nt3v88Ev();
extern void _ZN9S638C4_nt3v89Ev();
extern void _ZN9S638C4_nt3v90Ev();
extern void _ZN9S638C3_nt3v91Ev();
extern void _ZN9S638C3_nt3v92Ev();
extern void _ZN9S638C3_nt3v93Ev();
extern void _ZN9S638C3_nt3v94Ev();
extern void _ZN9S638C3_nt3v95Ev();
extern void _ZN9S638C3_nt3v96Ev();
extern void _ZN9S638C3_nt3v97Ev();
extern void _ZN9S638C3_nt3v98Ev();
extern void _ZN9S638C3_nt3v99Ev();
extern void _ZN9S638C3_nt4v100Ev();
extern void _ZN9S638C3_nt4v101Ev();
extern void _ZN9S638C3_nt4v102Ev();
extern void _ZN9S638C3_nt4v103Ev();
extern void _ZN9S638C3_nt4v104Ev();
extern void _ZN9S638C3_nt4v105Ev();
extern void _ZN9S638C3_nt4v106Ev();
extern void _ZN9S638C3_nt4v107Ev();
extern void _ZN9S638C3_nt4v108Ev();
extern void _ZN9S638C3_nt4v109Ev();
extern void _ZN9S638C3_nt4v110Ev();
static  VTBL_ENTRY vtc_S638C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S638C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S638C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S638C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S638C52v5Ev,
  (VTBL_ENTRY)&_ZN6S638C52v6Ev,
  (VTBL_ENTRY)&_ZN6S638C52v7Ev,
  (VTBL_ENTRY)&_ZN6S638C52v8Ev,
  (VTBL_ENTRY)&_ZN6S638C52v9Ev,
  (VTBL_ENTRY)&_ZN6S638C53v10Ev,
  (VTBL_ENTRY)&_ZN6S638C53v11Ev,
  (VTBL_ENTRY)&_ZN6S638C53v12Ev,
  (VTBL_ENTRY)&_ZN6S638C53v13Ev,
  (VTBL_ENTRY)&_ZN6S638C53v14Ev,
  (VTBL_ENTRY)&_ZN6S638C53v15Ev,
  (VTBL_ENTRY)&_ZN6S638C53v16Ev,
  (VTBL_ENTRY)&_ZN6S638C53v17Ev,
  (VTBL_ENTRY)&_ZN6S638C53v18Ev,
  (VTBL_ENTRY)&_ZN6S638C53v19Ev,
  (VTBL_ENTRY)&_ZN6S638C53v20Ev,
  (VTBL_ENTRY)&_ZN6S638C53v21Ev,
  (VTBL_ENTRY)&_ZN6S638C53v22Ev,
  (VTBL_ENTRY)&_ZN6S638C53v23Ev,
  (VTBL_ENTRY)&_ZN6S638C53v24Ev,
  (VTBL_ENTRY)&_ZN6S638C53v25Ev,
  (VTBL_ENTRY)&_ZN6S638C53v26Ev,
  (VTBL_ENTRY)&_ZN6S638C53v27Ev,
  (VTBL_ENTRY)&_ZN6S638C53v28Ev,
  (VTBL_ENTRY)&_ZN6S638C53v29Ev,
  (VTBL_ENTRY)&_ZN6S638C53v30Ev,
  (VTBL_ENTRY)&_ZN6S638C53v31Ev,
  (VTBL_ENTRY)&_ZN6S638C53v32Ev,
  (VTBL_ENTRY)&_ZN6S638C53v33Ev,
  (VTBL_ENTRY)&_ZN6S638C53v34Ev,
  (VTBL_ENTRY)&_ZN6S638C53v35Ev,
  (VTBL_ENTRY)&_ZN6S638C53v36Ev,
  (VTBL_ENTRY)&_ZN6S638C53v37Ev,
  (VTBL_ENTRY)&_ZN6S638C53v38Ev,
  (VTBL_ENTRY)&_ZN6S638C53v39Ev,
  (VTBL_ENTRY)&_ZN6S638C53v40Ev,
  (VTBL_ENTRY)&_ZN6S638C53v41Ev,
  (VTBL_ENTRY)&_ZN6S638C53v42Ev,
  (VTBL_ENTRY)&_ZN6S638C53v43Ev,
  (VTBL_ENTRY)&_ZN6S638C53v44Ev,
  (VTBL_ENTRY)&_ZN6S638C53v45Ev,
  (VTBL_ENTRY)&_ZN6S638C53v46Ev,
  (VTBL_ENTRY)&_ZN6S638C53v47Ev,
  (VTBL_ENTRY)&_ZN6S638C53v48Ev,
  (VTBL_ENTRY)&_ZN6S638C53v49Ev,
  (VTBL_ENTRY)&_ZN6S638C53v50Ev,
  (VTBL_ENTRY)&_ZN6S638C53v51Ev,
  (VTBL_ENTRY)&_ZN6S638C53v52Ev,
  (VTBL_ENTRY)&_ZN6S638C53v53Ev,
  (VTBL_ENTRY)&_ZN6S638C53v54Ev,
  (VTBL_ENTRY)&_ZN6S638C53v55Ev,
  (VTBL_ENTRY)&_ZN6S638C53v56Ev,
  (VTBL_ENTRY)&_ZN6S638C53v57Ev,
  (VTBL_ENTRY)&_ZN6S638C53v58Ev,
  (VTBL_ENTRY)&_ZN6S638C53v59Ev,
  (VTBL_ENTRY)&_ZN6S638C53v60Ev,
  (VTBL_ENTRY)&_ZN6S638C53v61Ev,
  (VTBL_ENTRY)&_ZN6S638C53v62Ev,
  (VTBL_ENTRY)&_ZN6S638C53v63Ev,
  (VTBL_ENTRY)&_ZN6S638C53v64Ev,
  (VTBL_ENTRY)&_ZN6S638C53v65Ev,
  (VTBL_ENTRY)&_ZN6S638C53v66Ev,
  (VTBL_ENTRY)&_ZN6S638C53v67Ev,
  (VTBL_ENTRY)&_ZN6S638C53v68Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v110Ev,
};
extern VTBL_ENTRY _ZTI9S638C3_nt[];
VTBL_ENTRY *P__ZTI9S638C3_nt = _ZTI9S638C3_nt; 
extern  VTBL_ENTRY _ZTV9S638C3_nt[];
Class_Descriptor cd_S638C3_nt = {  "S638C3_nt", // class name
  bases_S638C3_nt, 2,
  &(vtc_S638C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S638C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S638C3_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  S638C2_nt  : S638C3_nt {
  void *s638c2f0[2];
  int s638c2f1[4];
  unsigned int s638c2f2:1;
  unsigned int s638c2f3:1;
  unsigned int s638c2f4:1;
  char s638c2f5;
  int s638c2f6;
  unsigned int s638c2f7:1;
  ::S638C18 s638c2f8;
  virtual  ~S638C2_nt(); // _ZN9S638C2_ntD1Ev
  virtual void  v111(); // _ZN9S638C2_nt4v111Ev
  virtual void  v112(); // _ZN9S638C2_nt4v112Ev
  virtual void  v113(); // _ZN9S638C2_nt4v113Ev
  virtual void  v114(); // _ZN9S638C2_nt4v114Ev
  virtual void  v115(); // _ZN9S638C2_nt4v115Ev
  virtual void  v116(); // _ZN9S638C2_nt4v116Ev
  virtual void  v117(); // _ZN9S638C2_nt4v117Ev
  virtual void  v118(); // _ZN9S638C2_nt4v118Ev
  virtual void  v119(); // _ZN9S638C2_nt4v119Ev
  virtual void  v120(); // _ZN9S638C2_nt4v120Ev
  virtual void  v121(); // _ZN9S638C2_nt4v121Ev
  virtual void  v122(); // _ZN9S638C2_nt4v122Ev
  virtual void  v123(); // _ZN9S638C2_nt4v123Ev
  virtual void  v124(); // _ZN9S638C2_nt4v124Ev
  S638C2_nt(); // tgen
};
//SIG(-1 S638C2_nt) C1{ BC2{ BC3{ BC4{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 Fi[2] Fp Fi[2] FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC6 FC10{ m} FC6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 Fi:1 Fi:1 Fi:1 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} FC17{ BC18{ BC9}} Fi[3]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2] Fi[4] Fi:1 Fi:1 Fi:1 Fc Fi Fi:1 FC17}


 S638C2_nt ::~S638C2_nt(){ note_dtor("S638C2_nt", this);}
void  S638C2_nt ::v111(){vfunc_called(this, "_ZN9S638C2_nt4v111Ev");}
void  S638C2_nt ::v112(){vfunc_called(this, "_ZN9S638C2_nt4v112Ev");}
void  S638C2_nt ::v113(){vfunc_called(this, "_ZN9S638C2_nt4v113Ev");}
void  S638C2_nt ::v114(){vfunc_called(this, "_ZN9S638C2_nt4v114Ev");}
void  S638C2_nt ::v115(){vfunc_called(this, "_ZN9S638C2_nt4v115Ev");}
void  S638C2_nt ::v116(){vfunc_called(this, "_ZN9S638C2_nt4v116Ev");}
void  S638C2_nt ::v117(){vfunc_called(this, "_ZN9S638C2_nt4v117Ev");}
void  S638C2_nt ::v118(){vfunc_called(this, "_ZN9S638C2_nt4v118Ev");}
void  S638C2_nt ::v119(){vfunc_called(this, "_ZN9S638C2_nt4v119Ev");}
void  S638C2_nt ::v120(){vfunc_called(this, "_ZN9S638C2_nt4v120Ev");}
void  S638C2_nt ::v121(){vfunc_called(this, "_ZN9S638C2_nt4v121Ev");}
void  S638C2_nt ::v122(){vfunc_called(this, "_ZN9S638C2_nt4v122Ev");}
void  S638C2_nt ::v123(){vfunc_called(this, "_ZN9S638C2_nt4v123Ev");}
void  S638C2_nt ::v124(){vfunc_called(this, "_ZN9S638C2_nt4v124Ev");}
S638C2_nt ::S638C2_nt(){ note_ctor("S638C2_nt", this);} // tgen

//skip512 S638C2_nt

#else // __cplusplus

extern void _ZN9S638C2_ntC1Ev();
extern void _ZN9S638C2_ntD1Ev();
Name_Map name_map_S638C2_nt[] = {
  NSPAIR(_ZN9S638C2_ntC1Ev),
  NSPAIR(_ZN9S638C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S638C5;
extern VTBL_ENTRY _ZTI6S638C5[];
extern  VTBL_ENTRY _ZTV6S638C5[];
extern Class_Descriptor cd_S638C4_nt;
extern VTBL_ENTRY _ZTI9S638C4_nt[];
extern  VTBL_ENTRY _ZTV9S638C4_nt[];
extern Class_Descriptor cd_S638C3_nt;
extern VTBL_ENTRY _ZTI9S638C3_nt[];
extern  VTBL_ENTRY _ZTV9S638C3_nt[];
static Base_Class bases_S638C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S638C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S638C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S638C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S638C2_nt[];
extern void _ZN9S638C2_ntD1Ev();
extern void _ZN9S638C2_ntD0Ev();
extern void _ZN6S638C52v5Ev();
extern void _ZN6S638C52v6Ev();
extern void _ZN6S638C52v7Ev();
extern void _ZN6S638C52v8Ev();
extern void _ZN6S638C52v9Ev();
extern void _ZN6S638C53v10Ev();
extern void _ZN6S638C53v11Ev();
extern void _ZN6S638C53v12Ev();
extern void _ZN6S638C53v13Ev();
extern void _ZN6S638C53v14Ev();
extern void _ZN6S638C53v15Ev();
extern void _ZN6S638C53v16Ev();
extern void _ZN6S638C53v17Ev();
extern void _ZN6S638C53v18Ev();
extern void _ZN6S638C53v19Ev();
extern void _ZN6S638C53v20Ev();
extern void _ZN6S638C53v21Ev();
extern void _ZN6S638C53v22Ev();
extern void _ZN6S638C53v23Ev();
extern void _ZN6S638C53v24Ev();
extern void _ZN6S638C53v25Ev();
extern void _ZN6S638C53v26Ev();
extern void _ZN6S638C53v27Ev();
extern void _ZN6S638C53v28Ev();
extern void _ZN6S638C53v29Ev();
extern void _ZN6S638C53v30Ev();
extern void _ZN6S638C53v31Ev();
extern void _ZN6S638C53v32Ev();
extern void _ZN6S638C53v33Ev();
extern void _ZN6S638C53v34Ev();
extern void _ZN6S638C53v35Ev();
extern void _ZN6S638C53v36Ev();
extern void _ZN6S638C53v37Ev();
extern void _ZN6S638C53v38Ev();
extern void _ZN6S638C53v39Ev();
extern void _ZN6S638C53v40Ev();
extern void _ZN6S638C53v41Ev();
extern void _ZN6S638C53v42Ev();
extern void _ZN6S638C53v43Ev();
extern void _ZN6S638C53v44Ev();
extern void _ZN6S638C53v45Ev();
extern void _ZN6S638C53v46Ev();
extern void _ZN6S638C53v47Ev();
extern void _ZN6S638C53v48Ev();
extern void _ZN6S638C53v49Ev();
extern void _ZN6S638C53v50Ev();
extern void _ZN6S638C53v51Ev();
extern void _ZN6S638C53v52Ev();
extern void _ZN6S638C53v53Ev();
extern void _ZN6S638C53v54Ev();
extern void _ZN6S638C53v55Ev();
extern void _ZN6S638C53v56Ev();
extern void _ZN6S638C53v57Ev();
extern void _ZN6S638C53v58Ev();
extern void _ZN6S638C53v59Ev();
extern void _ZN6S638C53v60Ev();
extern void _ZN6S638C53v61Ev();
extern void _ZN6S638C53v62Ev();
extern void _ZN6S638C53v63Ev();
extern void _ZN6S638C53v64Ev();
extern void _ZN6S638C53v65Ev();
extern void _ZN6S638C53v66Ev();
extern void _ZN6S638C53v67Ev();
extern void _ZN6S638C53v68Ev();
extern void _ZN9S638C4_nt3v69Ev();
extern void _ZN9S638C4_nt3v70Ev();
extern void _ZN9S638C4_nt3v71Ev();
extern void _ZN9S638C4_nt3v72Ev();
extern void _ZN9S638C4_nt3v73Ev();
extern void _ZN9S638C4_nt3v74Ev();
extern void _ZN9S638C4_nt3v75Ev();
extern void _ZN9S638C4_nt3v76Ev();
extern void _ZN9S638C4_nt3v77Ev();
extern void _ZN9S638C4_nt3v78Ev();
extern void _ZN9S638C4_nt3v79Ev();
extern void _ZN9S638C4_nt3v80Ev();
extern void _ZN9S638C4_nt3v81Ev();
extern void _ZN9S638C4_nt3v82Ev();
extern void _ZN9S638C4_nt3v83Ev();
extern void _ZN9S638C4_nt3v84Ev();
extern void _ZN9S638C4_nt3v85Ev();
extern void _ZN9S638C4_nt3v86Ev();
extern void _ZN9S638C4_nt3v87Ev();
extern void _ZN9S638C4_nt3v88Ev();
extern void _ZN9S638C4_nt3v89Ev();
extern void _ZN9S638C4_nt3v90Ev();
extern void _ZN9S638C3_nt3v91Ev();
extern void _ZN9S638C3_nt3v92Ev();
extern void _ZN9S638C3_nt3v93Ev();
extern void _ZN9S638C3_nt3v94Ev();
extern void _ZN9S638C3_nt3v95Ev();
extern void _ZN9S638C3_nt3v96Ev();
extern void _ZN9S638C3_nt3v97Ev();
extern void _ZN9S638C3_nt3v98Ev();
extern void _ZN9S638C3_nt3v99Ev();
extern void _ZN9S638C3_nt4v100Ev();
extern void _ZN9S638C3_nt4v101Ev();
extern void _ZN9S638C3_nt4v102Ev();
extern void _ZN9S638C3_nt4v103Ev();
extern void _ZN9S638C3_nt4v104Ev();
extern void _ZN9S638C3_nt4v105Ev();
extern void _ZN9S638C3_nt4v106Ev();
extern void _ZN9S638C3_nt4v107Ev();
extern void _ZN9S638C3_nt4v108Ev();
extern void _ZN9S638C3_nt4v109Ev();
extern void _ZN9S638C3_nt4v110Ev();
extern void _ZN9S638C2_nt4v111Ev();
extern void _ZN9S638C2_nt4v112Ev();
extern void _ZN9S638C2_nt4v113Ev();
extern void _ZN9S638C2_nt4v114Ev();
extern void _ZN9S638C2_nt4v115Ev();
extern void _ZN9S638C2_nt4v116Ev();
extern void _ZN9S638C2_nt4v117Ev();
extern void _ZN9S638C2_nt4v118Ev();
extern void _ZN9S638C2_nt4v119Ev();
extern void _ZN9S638C2_nt4v120Ev();
extern void _ZN9S638C2_nt4v121Ev();
extern void _ZN9S638C2_nt4v122Ev();
extern void _ZN9S638C2_nt4v123Ev();
extern void _ZN9S638C2_nt4v124Ev();
static  VTBL_ENTRY vtc_S638C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S638C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S638C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S638C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S638C52v5Ev,
  (VTBL_ENTRY)&_ZN6S638C52v6Ev,
  (VTBL_ENTRY)&_ZN6S638C52v7Ev,
  (VTBL_ENTRY)&_ZN6S638C52v8Ev,
  (VTBL_ENTRY)&_ZN6S638C52v9Ev,
  (VTBL_ENTRY)&_ZN6S638C53v10Ev,
  (VTBL_ENTRY)&_ZN6S638C53v11Ev,
  (VTBL_ENTRY)&_ZN6S638C53v12Ev,
  (VTBL_ENTRY)&_ZN6S638C53v13Ev,
  (VTBL_ENTRY)&_ZN6S638C53v14Ev,
  (VTBL_ENTRY)&_ZN6S638C53v15Ev,
  (VTBL_ENTRY)&_ZN6S638C53v16Ev,
  (VTBL_ENTRY)&_ZN6S638C53v17Ev,
  (VTBL_ENTRY)&_ZN6S638C53v18Ev,
  (VTBL_ENTRY)&_ZN6S638C53v19Ev,
  (VTBL_ENTRY)&_ZN6S638C53v20Ev,
  (VTBL_ENTRY)&_ZN6S638C53v21Ev,
  (VTBL_ENTRY)&_ZN6S638C53v22Ev,
  (VTBL_ENTRY)&_ZN6S638C53v23Ev,
  (VTBL_ENTRY)&_ZN6S638C53v24Ev,
  (VTBL_ENTRY)&_ZN6S638C53v25Ev,
  (VTBL_ENTRY)&_ZN6S638C53v26Ev,
  (VTBL_ENTRY)&_ZN6S638C53v27Ev,
  (VTBL_ENTRY)&_ZN6S638C53v28Ev,
  (VTBL_ENTRY)&_ZN6S638C53v29Ev,
  (VTBL_ENTRY)&_ZN6S638C53v30Ev,
  (VTBL_ENTRY)&_ZN6S638C53v31Ev,
  (VTBL_ENTRY)&_ZN6S638C53v32Ev,
  (VTBL_ENTRY)&_ZN6S638C53v33Ev,
  (VTBL_ENTRY)&_ZN6S638C53v34Ev,
  (VTBL_ENTRY)&_ZN6S638C53v35Ev,
  (VTBL_ENTRY)&_ZN6S638C53v36Ev,
  (VTBL_ENTRY)&_ZN6S638C53v37Ev,
  (VTBL_ENTRY)&_ZN6S638C53v38Ev,
  (VTBL_ENTRY)&_ZN6S638C53v39Ev,
  (VTBL_ENTRY)&_ZN6S638C53v40Ev,
  (VTBL_ENTRY)&_ZN6S638C53v41Ev,
  (VTBL_ENTRY)&_ZN6S638C53v42Ev,
  (VTBL_ENTRY)&_ZN6S638C53v43Ev,
  (VTBL_ENTRY)&_ZN6S638C53v44Ev,
  (VTBL_ENTRY)&_ZN6S638C53v45Ev,
  (VTBL_ENTRY)&_ZN6S638C53v46Ev,
  (VTBL_ENTRY)&_ZN6S638C53v47Ev,
  (VTBL_ENTRY)&_ZN6S638C53v48Ev,
  (VTBL_ENTRY)&_ZN6S638C53v49Ev,
  (VTBL_ENTRY)&_ZN6S638C53v50Ev,
  (VTBL_ENTRY)&_ZN6S638C53v51Ev,
  (VTBL_ENTRY)&_ZN6S638C53v52Ev,
  (VTBL_ENTRY)&_ZN6S638C53v53Ev,
  (VTBL_ENTRY)&_ZN6S638C53v54Ev,
  (VTBL_ENTRY)&_ZN6S638C53v55Ev,
  (VTBL_ENTRY)&_ZN6S638C53v56Ev,
  (VTBL_ENTRY)&_ZN6S638C53v57Ev,
  (VTBL_ENTRY)&_ZN6S638C53v58Ev,
  (VTBL_ENTRY)&_ZN6S638C53v59Ev,
  (VTBL_ENTRY)&_ZN6S638C53v60Ev,
  (VTBL_ENTRY)&_ZN6S638C53v61Ev,
  (VTBL_ENTRY)&_ZN6S638C53v62Ev,
  (VTBL_ENTRY)&_ZN6S638C53v63Ev,
  (VTBL_ENTRY)&_ZN6S638C53v64Ev,
  (VTBL_ENTRY)&_ZN6S638C53v65Ev,
  (VTBL_ENTRY)&_ZN6S638C53v66Ev,
  (VTBL_ENTRY)&_ZN6S638C53v67Ev,
  (VTBL_ENTRY)&_ZN6S638C53v68Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v124Ev,
};
extern VTBL_ENTRY _ZTI9S638C2_nt[];
VTBL_ENTRY *P__ZTI9S638C2_nt = _ZTI9S638C2_nt; 
extern  VTBL_ENTRY _ZTV9S638C2_nt[];
Class_Descriptor cd_S638C2_nt = {  "S638C2_nt", // class name
  bases_S638C2_nt, 3,
  &(vtc_S638C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(336,244), // object size
  NSPAIRA(_ZTI9S638C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S638C2_nt),124, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S638C1  : S638C2_nt {
  ::S638C7_nt s638c1f0;
  virtual  ~S638C1(); // _ZN6S638C1D1Ev
  virtual void  v1(); // _ZN6S638C12v1Ev
  virtual void  v2(); // _ZN6S638C12v2Ev
  virtual void  v3(); // _ZN6S638C12v3Ev
  virtual void  v4(); // _ZN6S638C12v4Ev
  S638C1(); // tgen
};
//SIG(1 S638C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v69 v70 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] 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 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 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 Fp[2] Fi[4] Fi:1 Fi:1 Fi:1 Fc Fi Fi:1 FC18} vd v1 v2 v3 v4 FC7}


 S638C1 ::~S638C1(){ note_dtor("S638C1", this);}
void  S638C1 ::v1(){vfunc_called(this, "_ZN6S638C12v1Ev");}
void  S638C1 ::v2(){vfunc_called(this, "_ZN6S638C12v2Ev");}
void  S638C1 ::v3(){vfunc_called(this, "_ZN6S638C12v3Ev");}
void  S638C1 ::v4(){vfunc_called(this, "_ZN6S638C12v4Ev");}
S638C1 ::S638C1(){ note_ctor("S638C1", this);} // tgen

static void Test_S638C1()
{
  extern Class_Descriptor cd_S638C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,65)];
    init_test(&cd_S638C1, buf);
    S638C1 *dp, &lv = *(dp=new (buf) S638C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,256), "sizeof(S638C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S638C1)");
    check_base_class_offset(lv, (S638C5*)(S638C4_nt*)(S638C3_nt*)(S638C2_nt*), 0, "S638C1");
    check_base_class_offset(lv, (S638C4_nt*)(S638C3_nt*)(S638C2_nt*), 0, "S638C1");
    check_base_class_offset(lv, (S638C3_nt*)(S638C2_nt*), 0, "S638C1");
    check_base_class_offset(lv, (S638C2_nt*), 0, "S638C1");
    check_field_offset(lv, s638c1f0, ABISELECT(336,244), "S638C1.s638c1f0");
    test_class_info(&lv, &cd_S638C1);
    dp->~S638C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS638C1(Test_S638C1, "S638C1", ABISELECT(352,256));

#else // __cplusplus

extern void _ZN6S638C1C1Ev();
extern void _ZN6S638C1D1Ev();
Name_Map name_map_S638C1[] = {
  NSPAIR(_ZN6S638C1C1Ev),
  NSPAIR(_ZN6S638C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S638C5;
extern VTBL_ENTRY _ZTI6S638C5[];
extern  VTBL_ENTRY _ZTV6S638C5[];
extern Class_Descriptor cd_S638C4_nt;
extern VTBL_ENTRY _ZTI9S638C4_nt[];
extern  VTBL_ENTRY _ZTV9S638C4_nt[];
extern Class_Descriptor cd_S638C3_nt;
extern VTBL_ENTRY _ZTI9S638C3_nt[];
extern  VTBL_ENTRY _ZTV9S638C3_nt[];
extern Class_Descriptor cd_S638C2_nt;
extern VTBL_ENTRY _ZTI9S638C2_nt[];
extern  VTBL_ENTRY _ZTV9S638C2_nt[];
static Base_Class bases_S638C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S638C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S638C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S638C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S638C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S638C1[];
extern void _ZN6S638C1D1Ev();
extern void _ZN6S638C1D0Ev();
extern void _ZN6S638C52v5Ev();
extern void _ZN6S638C52v6Ev();
extern void _ZN6S638C52v7Ev();
extern void _ZN6S638C52v8Ev();
extern void _ZN6S638C52v9Ev();
extern void _ZN6S638C53v10Ev();
extern void _ZN6S638C53v11Ev();
extern void _ZN6S638C53v12Ev();
extern void _ZN6S638C53v13Ev();
extern void _ZN6S638C53v14Ev();
extern void _ZN6S638C53v15Ev();
extern void _ZN6S638C53v16Ev();
extern void _ZN6S638C53v17Ev();
extern void _ZN6S638C53v18Ev();
extern void _ZN6S638C53v19Ev();
extern void _ZN6S638C53v20Ev();
extern void _ZN6S638C53v21Ev();
extern void _ZN6S638C53v22Ev();
extern void _ZN6S638C53v23Ev();
extern void _ZN6S638C53v24Ev();
extern void _ZN6S638C53v25Ev();
extern void _ZN6S638C53v26Ev();
extern void _ZN6S638C53v27Ev();
extern void _ZN6S638C53v28Ev();
extern void _ZN6S638C53v29Ev();
extern void _ZN6S638C53v30Ev();
extern void _ZN6S638C53v31Ev();
extern void _ZN6S638C53v32Ev();
extern void _ZN6S638C53v33Ev();
extern void _ZN6S638C53v34Ev();
extern void _ZN6S638C53v35Ev();
extern void _ZN6S638C53v36Ev();
extern void _ZN6S638C53v37Ev();
extern void _ZN6S638C53v38Ev();
extern void _ZN6S638C53v39Ev();
extern void _ZN6S638C53v40Ev();
extern void _ZN6S638C53v41Ev();
extern void _ZN6S638C53v42Ev();
extern void _ZN6S638C53v43Ev();
extern void _ZN6S638C53v44Ev();
extern void _ZN6S638C53v45Ev();
extern void _ZN6S638C53v46Ev();
extern void _ZN6S638C53v47Ev();
extern void _ZN6S638C53v48Ev();
extern void _ZN6S638C53v49Ev();
extern void _ZN6S638C53v50Ev();
extern void _ZN6S638C53v51Ev();
extern void _ZN6S638C53v52Ev();
extern void _ZN6S638C53v53Ev();
extern void _ZN6S638C53v54Ev();
extern void _ZN6S638C53v55Ev();
extern void _ZN6S638C53v56Ev();
extern void _ZN6S638C53v57Ev();
extern void _ZN6S638C53v58Ev();
extern void _ZN6S638C53v59Ev();
extern void _ZN6S638C53v60Ev();
extern void _ZN6S638C53v61Ev();
extern void _ZN6S638C53v62Ev();
extern void _ZN6S638C53v63Ev();
extern void _ZN6S638C53v64Ev();
extern void _ZN6S638C53v65Ev();
extern void _ZN6S638C53v66Ev();
extern void _ZN6S638C53v67Ev();
extern void _ZN6S638C53v68Ev();
extern void _ZN9S638C4_nt3v69Ev();
extern void _ZN9S638C4_nt3v70Ev();
extern void _ZN9S638C4_nt3v71Ev();
extern void _ZN9S638C4_nt3v72Ev();
extern void _ZN9S638C4_nt3v73Ev();
extern void _ZN9S638C4_nt3v74Ev();
extern void _ZN9S638C4_nt3v75Ev();
extern void _ZN9S638C4_nt3v76Ev();
extern void _ZN9S638C4_nt3v77Ev();
extern void _ZN9S638C4_nt3v78Ev();
extern void _ZN9S638C4_nt3v79Ev();
extern void _ZN9S638C4_nt3v80Ev();
extern void _ZN9S638C4_nt3v81Ev();
extern void _ZN9S638C4_nt3v82Ev();
extern void _ZN9S638C4_nt3v83Ev();
extern void _ZN9S638C4_nt3v84Ev();
extern void _ZN9S638C4_nt3v85Ev();
extern void _ZN9S638C4_nt3v86Ev();
extern void _ZN9S638C4_nt3v87Ev();
extern void _ZN9S638C4_nt3v88Ev();
extern void _ZN9S638C4_nt3v89Ev();
extern void _ZN9S638C4_nt3v90Ev();
extern void _ZN9S638C3_nt3v91Ev();
extern void _ZN9S638C3_nt3v92Ev();
extern void _ZN9S638C3_nt3v93Ev();
extern void _ZN9S638C3_nt3v94Ev();
extern void _ZN9S638C3_nt3v95Ev();
extern void _ZN9S638C3_nt3v96Ev();
extern void _ZN9S638C3_nt3v97Ev();
extern void _ZN9S638C3_nt3v98Ev();
extern void _ZN9S638C3_nt3v99Ev();
extern void _ZN9S638C3_nt4v100Ev();
extern void _ZN9S638C3_nt4v101Ev();
extern void _ZN9S638C3_nt4v102Ev();
extern void _ZN9S638C3_nt4v103Ev();
extern void _ZN9S638C3_nt4v104Ev();
extern void _ZN9S638C3_nt4v105Ev();
extern void _ZN9S638C3_nt4v106Ev();
extern void _ZN9S638C3_nt4v107Ev();
extern void _ZN9S638C3_nt4v108Ev();
extern void _ZN9S638C3_nt4v109Ev();
extern void _ZN9S638C3_nt4v110Ev();
extern void _ZN9S638C2_nt4v111Ev();
extern void _ZN9S638C2_nt4v112Ev();
extern void _ZN9S638C2_nt4v113Ev();
extern void _ZN9S638C2_nt4v114Ev();
extern void _ZN9S638C2_nt4v115Ev();
extern void _ZN9S638C2_nt4v116Ev();
extern void _ZN9S638C2_nt4v117Ev();
extern void _ZN9S638C2_nt4v118Ev();
extern void _ZN9S638C2_nt4v119Ev();
extern void _ZN9S638C2_nt4v120Ev();
extern void _ZN9S638C2_nt4v121Ev();
extern void _ZN9S638C2_nt4v122Ev();
extern void _ZN9S638C2_nt4v123Ev();
extern void _ZN9S638C2_nt4v124Ev();
extern void _ZN6S638C12v1Ev();
extern void _ZN6S638C12v2Ev();
extern void _ZN6S638C12v3Ev();
extern void _ZN6S638C12v4Ev();
static  VTBL_ENTRY vtc_S638C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S638C1[0]),
  (VTBL_ENTRY)&_ZN6S638C1D1Ev,
  (VTBL_ENTRY)&_ZN6S638C1D0Ev,
  (VTBL_ENTRY)&_ZN6S638C52v5Ev,
  (VTBL_ENTRY)&_ZN6S638C52v6Ev,
  (VTBL_ENTRY)&_ZN6S638C52v7Ev,
  (VTBL_ENTRY)&_ZN6S638C52v8Ev,
  (VTBL_ENTRY)&_ZN6S638C52v9Ev,
  (VTBL_ENTRY)&_ZN6S638C53v10Ev,
  (VTBL_ENTRY)&_ZN6S638C53v11Ev,
  (VTBL_ENTRY)&_ZN6S638C53v12Ev,
  (VTBL_ENTRY)&_ZN6S638C53v13Ev,
  (VTBL_ENTRY)&_ZN6S638C53v14Ev,
  (VTBL_ENTRY)&_ZN6S638C53v15Ev,
  (VTBL_ENTRY)&_ZN6S638C53v16Ev,
  (VTBL_ENTRY)&_ZN6S638C53v17Ev,
  (VTBL_ENTRY)&_ZN6S638C53v18Ev,
  (VTBL_ENTRY)&_ZN6S638C53v19Ev,
  (VTBL_ENTRY)&_ZN6S638C53v20Ev,
  (VTBL_ENTRY)&_ZN6S638C53v21Ev,
  (VTBL_ENTRY)&_ZN6S638C53v22Ev,
  (VTBL_ENTRY)&_ZN6S638C53v23Ev,
  (VTBL_ENTRY)&_ZN6S638C53v24Ev,
  (VTBL_ENTRY)&_ZN6S638C53v25Ev,
  (VTBL_ENTRY)&_ZN6S638C53v26Ev,
  (VTBL_ENTRY)&_ZN6S638C53v27Ev,
  (VTBL_ENTRY)&_ZN6S638C53v28Ev,
  (VTBL_ENTRY)&_ZN6S638C53v29Ev,
  (VTBL_ENTRY)&_ZN6S638C53v30Ev,
  (VTBL_ENTRY)&_ZN6S638C53v31Ev,
  (VTBL_ENTRY)&_ZN6S638C53v32Ev,
  (VTBL_ENTRY)&_ZN6S638C53v33Ev,
  (VTBL_ENTRY)&_ZN6S638C53v34Ev,
  (VTBL_ENTRY)&_ZN6S638C53v35Ev,
  (VTBL_ENTRY)&_ZN6S638C53v36Ev,
  (VTBL_ENTRY)&_ZN6S638C53v37Ev,
  (VTBL_ENTRY)&_ZN6S638C53v38Ev,
  (VTBL_ENTRY)&_ZN6S638C53v39Ev,
  (VTBL_ENTRY)&_ZN6S638C53v40Ev,
  (VTBL_ENTRY)&_ZN6S638C53v41Ev,
  (VTBL_ENTRY)&_ZN6S638C53v42Ev,
  (VTBL_ENTRY)&_ZN6S638C53v43Ev,
  (VTBL_ENTRY)&_ZN6S638C53v44Ev,
  (VTBL_ENTRY)&_ZN6S638C53v45Ev,
  (VTBL_ENTRY)&_ZN6S638C53v46Ev,
  (VTBL_ENTRY)&_ZN6S638C53v47Ev,
  (VTBL_ENTRY)&_ZN6S638C53v48Ev,
  (VTBL_ENTRY)&_ZN6S638C53v49Ev,
  (VTBL_ENTRY)&_ZN6S638C53v50Ev,
  (VTBL_ENTRY)&_ZN6S638C53v51Ev,
  (VTBL_ENTRY)&_ZN6S638C53v52Ev,
  (VTBL_ENTRY)&_ZN6S638C53v53Ev,
  (VTBL_ENTRY)&_ZN6S638C53v54Ev,
  (VTBL_ENTRY)&_ZN6S638C53v55Ev,
  (VTBL_ENTRY)&_ZN6S638C53v56Ev,
  (VTBL_ENTRY)&_ZN6S638C53v57Ev,
  (VTBL_ENTRY)&_ZN6S638C53v58Ev,
  (VTBL_ENTRY)&_ZN6S638C53v59Ev,
  (VTBL_ENTRY)&_ZN6S638C53v60Ev,
  (VTBL_ENTRY)&_ZN6S638C53v61Ev,
  (VTBL_ENTRY)&_ZN6S638C53v62Ev,
  (VTBL_ENTRY)&_ZN6S638C53v63Ev,
  (VTBL_ENTRY)&_ZN6S638C53v64Ev,
  (VTBL_ENTRY)&_ZN6S638C53v65Ev,
  (VTBL_ENTRY)&_ZN6S638C53v66Ev,
  (VTBL_ENTRY)&_ZN6S638C53v67Ev,
  (VTBL_ENTRY)&_ZN6S638C53v68Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S638C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S638C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN9S638C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN6S638C12v1Ev,
  (VTBL_ENTRY)&_ZN6S638C12v2Ev,
  (VTBL_ENTRY)&_ZN6S638C12v3Ev,
  (VTBL_ENTRY)&_ZN6S638C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S638C1[];
extern  VTBL_ENTRY _ZTV6S638C1[];
Class_Descriptor cd_S638C1 = {  "S638C1", // class name
  bases_S638C1, 4,
  &(vtc_S638C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,256), // object size
  NSPAIRA(_ZTI6S638C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S638C1),128, //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  S204C6  {
  int s204c6f0;
  __tsi64 s204c6f1;
  void *s204c6f2[4];
  int s204c6f3[2];
  void *s204c6f4;
  ::S3281C4_nt s204c6f5;
  void *s204c6f6[2];
  virtual  ~S204C6(); // _ZN6S204C6D1Ev
  virtual void  v4(); // _ZN6S204C62v4Ev
  virtual void  v5(); // _ZN6S204C62v5Ev
  virtual void  v6(); // _ZN6S204C62v6Ev
  virtual void  v7(); // _ZN6S204C62v7Ev
  virtual void  v8(); // _ZN6S204C62v8Ev
  virtual void  v9(); // _ZN6S204C62v9Ev
  virtual void  v10(); // _ZN6S204C63v10Ev
  virtual void  v11(); // _ZN6S204C63v11Ev
  virtual void  v12(); // _ZN6S204C63v12Ev
  virtual void  v13(); // _ZN6S204C63v13Ev
  virtual void  v14(); // _ZN6S204C63v14Ev
  virtual void  v15(); // _ZN6S204C63v15Ev
  virtual void  v16(); // _ZN6S204C63v16Ev
  virtual void  v17(); // _ZN6S204C63v17Ev
  virtual void  v18(); // _ZN6S204C63v18Ev
  virtual void  v19(); // _ZN6S204C63v19Ev
  virtual void  v20(); // _ZN6S204C63v20Ev
  virtual void  v21(); // _ZN6S204C63v21Ev
  virtual void  v22(); // _ZN6S204C63v22Ev
  virtual void  v23(); // _ZN6S204C63v23Ev
  virtual void  v24(); // _ZN6S204C63v24Ev
  virtual void  v25(); // _ZN6S204C63v25Ev
  virtual void  v26(); // _ZN6S204C63v26Ev
  virtual void  v27(); // _ZN6S204C63v27Ev
  virtual void  v28(); // _ZN6S204C63v28Ev
  virtual void  v29(); // _ZN6S204C63v29Ev
  virtual void  v30(); // _ZN6S204C63v30Ev
  virtual void  v31(); // _ZN6S204C63v31Ev
  virtual void  v32(); // _ZN6S204C63v32Ev
  virtual void  v33(); // _ZN6S204C63v33Ev
  virtual void  v34(); // _ZN6S204C63v34Ev
  virtual void  v35(); // _ZN6S204C63v35Ev
  virtual void  v36(); // _ZN6S204C63v36Ev
  virtual void  v37(); // _ZN6S204C63v37Ev
  virtual void  v38(); // _ZN6S204C63v38Ev
  virtual void  v39(); // _ZN6S204C63v39Ev
  virtual void  v40(); // _ZN6S204C63v40Ev
  virtual void  v41(); // _ZN6S204C63v41Ev
  virtual void  v42(); // _ZN6S204C63v42Ev
  virtual void  v43(); // _ZN6S204C63v43Ev
  virtual void  v44(); // _ZN6S204C63v44Ev
  virtual void  v45(); // _ZN6S204C63v45Ev
  virtual void  v46(); // _ZN6S204C63v46Ev
  virtual void  v47(); // _ZN6S204C63v47Ev
  virtual void  v48(); // _ZN6S204C63v48Ev
  virtual void  v49(); // _ZN6S204C63v49Ev
  virtual void  v50(); // _ZN6S204C63v50Ev
  virtual void  v51(); // _ZN6S204C63v51Ev
  virtual void  v52(); // _ZN6S204C63v52Ev
  virtual void  v53(); // _ZN6S204C63v53Ev
  virtual void  v54(); // _ZN6S204C63v54Ev
  virtual void  v55(); // _ZN6S204C63v55Ev
  virtual void  v56(); // _ZN6S204C63v56Ev
  virtual void  v57(); // _ZN6S204C63v57Ev
  virtual void  v58(); // _ZN6S204C63v58Ev
  virtual void  v59(); // _ZN6S204C63v59Ev
  virtual void  v60(); // _ZN6S204C63v60Ev
  virtual void  v61(); // _ZN6S204C63v61Ev
  virtual void  v62(); // _ZN6S204C63v62Ev
  virtual void  v63(); // _ZN6S204C63v63Ev
  virtual void  v64(); // _ZN6S204C63v64Ev
  virtual void  v65(); // _ZN6S204C63v65Ev
  virtual void  v66(); // _ZN6S204C63v66Ev
  virtual void  v67(); // _ZN6S204C63v67Ev
  S204C6(); // tgen
};
//SIG(-1 S204C6) 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]}


 S204C6 ::~S204C6(){ note_dtor("S204C6", this);}
void  S204C6 ::v4(){vfunc_called(this, "_ZN6S204C62v4Ev");}
void  S204C6 ::v5(){vfunc_called(this, "_ZN6S204C62v5Ev");}
void  S204C6 ::v6(){vfunc_called(this, "_ZN6S204C62v6Ev");}
void  S204C6 ::v7(){vfunc_called(this, "_ZN6S204C62v7Ev");}
void  S204C6 ::v8(){vfunc_called(this, "_ZN6S204C62v8Ev");}
void  S204C6 ::v9(){vfunc_called(this, "_ZN6S204C62v9Ev");}
void  S204C6 ::v10(){vfunc_called(this, "_ZN6S204C63v10Ev");}
void  S204C6 ::v11(){vfunc_called(this, "_ZN6S204C63v11Ev");}
void  S204C6 ::v12(){vfunc_called(this, "_ZN6S204C63v12Ev");}
void  S204C6 ::v13(){vfunc_called(this, "_ZN6S204C63v13Ev");}
void  S204C6 ::v14(){vfunc_called(this, "_ZN6S204C63v14Ev");}
void  S204C6 ::v15(){vfunc_called(this, "_ZN6S204C63v15Ev");}
void  S204C6 ::v16(){vfunc_called(this, "_ZN6S204C63v16Ev");}
void  S204C6 ::v17(){vfunc_called(this, "_ZN6S204C63v17Ev");}
void  S204C6 ::v18(){vfunc_called(this, "_ZN6S204C63v18Ev");}
void  S204C6 ::v19(){vfunc_called(this, "_ZN6S204C63v19Ev");}
void  S204C6 ::v20(){vfunc_called(this, "_ZN6S204C63v20Ev");}
void  S204C6 ::v21(){vfunc_called(this, "_ZN6S204C63v21Ev");}
void  S204C6 ::v22(){vfunc_called(this, "_ZN6S204C63v22Ev");}
void  S204C6 ::v23(){vfunc_called(this, "_ZN6S204C63v23Ev");}
void  S204C6 ::v24(){vfunc_called(this, "_ZN6S204C63v24Ev");}
void  S204C6 ::v25(){vfunc_called(this, "_ZN6S204C63v25Ev");}
void  S204C6 ::v26(){vfunc_called(this, "_ZN6S204C63v26Ev");}
void  S204C6 ::v27(){vfunc_called(this, "_ZN6S204C63v27Ev");}
void  S204C6 ::v28(){vfunc_called(this, "_ZN6S204C63v28Ev");}
void  S204C6 ::v29(){vfunc_called(this, "_ZN6S204C63v29Ev");}
void  S204C6 ::v30(){vfunc_called(this, "_ZN6S204C63v30Ev");}
void  S204C6 ::v31(){vfunc_called(this, "_ZN6S204C63v31Ev");}
void  S204C6 ::v32(){vfunc_called(this, "_ZN6S204C63v32Ev");}
void  S204C6 ::v33(){vfunc_called(this, "_ZN6S204C63v33Ev");}
void  S204C6 ::v34(){vfunc_called(this, "_ZN6S204C63v34Ev");}
void  S204C6 ::v35(){vfunc_called(this, "_ZN6S204C63v35Ev");}
void  S204C6 ::v36(){vfunc_called(this, "_ZN6S204C63v36Ev");}
void  S204C6 ::v37(){vfunc_called(this, "_ZN6S204C63v37Ev");}
void  S204C6 ::v38(){vfunc_called(this, "_ZN6S204C63v38Ev");}
void  S204C6 ::v39(){vfunc_called(this, "_ZN6S204C63v39Ev");}
void  S204C6 ::v40(){vfunc_called(this, "_ZN6S204C63v40Ev");}
void  S204C6 ::v41(){vfunc_called(this, "_ZN6S204C63v41Ev");}
void  S204C6 ::v42(){vfunc_called(this, "_ZN6S204C63v42Ev");}
void  S204C6 ::v43(){vfunc_called(this, "_ZN6S204C63v43Ev");}
void  S204C6 ::v44(){vfunc_called(this, "_ZN6S204C63v44Ev");}
void  S204C6 ::v45(){vfunc_called(this, "_ZN6S204C63v45Ev");}
void  S204C6 ::v46(){vfunc_called(this, "_ZN6S204C63v46Ev");}
void  S204C6 ::v47(){vfunc_called(this, "_ZN6S204C63v47Ev");}
void  S204C6 ::v48(){vfunc_called(this, "_ZN6S204C63v48Ev");}
void  S204C6 ::v49(){vfunc_called(this, "_ZN6S204C63v49Ev");}
void  S204C6 ::v50(){vfunc_called(this, "_ZN6S204C63v50Ev");}
void  S204C6 ::v51(){vfunc_called(this, "_ZN6S204C63v51Ev");}
void  S204C6 ::v52(){vfunc_called(this, "_ZN6S204C63v52Ev");}
void  S204C6 ::v53(){vfunc_called(this, "_ZN6S204C63v53Ev");}
void  S204C6 ::v54(){vfunc_called(this, "_ZN6S204C63v54Ev");}
void  S204C6 ::v55(){vfunc_called(this, "_ZN6S204C63v55Ev");}
void  S204C6 ::v56(){vfunc_called(this, "_ZN6S204C63v56Ev");}
void  S204C6 ::v57(){vfunc_called(this, "_ZN6S204C63v57Ev");}
void  S204C6 ::v58(){vfunc_called(this, "_ZN6S204C63v58Ev");}
void  S204C6 ::v59(){vfunc_called(this, "_ZN6S204C63v59Ev");}
void  S204C6 ::v60(){vfunc_called(this, "_ZN6S204C63v60Ev");}
void  S204C6 ::v61(){vfunc_called(this, "_ZN6S204C63v61Ev");}
void  S204C6 ::v62(){vfunc_called(this, "_ZN6S204C63v62Ev");}
void  S204C6 ::v63(){vfunc_called(this, "_ZN6S204C63v63Ev");}
void  S204C6 ::v64(){vfunc_called(this, "_ZN6S204C63v64Ev");}
void  S204C6 ::v65(){vfunc_called(this, "_ZN6S204C63v65Ev");}
void  S204C6 ::v66(){vfunc_called(this, "_ZN6S204C63v66Ev");}
void  S204C6 ::v67(){vfunc_called(this, "_ZN6S204C63v67Ev");}
S204C6 ::S204C6(){ note_ctor("S204C6", this);} // tgen

static void Test_S204C6()
{
  extern Class_Descriptor cd_S204C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S204C6, buf);
    S204C6 *dp, &lv = *(dp=new (buf) S204C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S204C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S204C6)");
    check_field_offset(lv, s204c6f0, ABISELECT(8,4), "S204C6.s204c6f0");
    check_field_offset(lv, s204c6f1, ABISELECT(16,8), "S204C6.s204c6f1");
    check_field_offset(lv, s204c6f2, ABISELECT(24,16), "S204C6.s204c6f2");
    check_field_offset(lv, s204c6f3, ABISELECT(56,32), "S204C6.s204c6f3");
    check_field_offset(lv, s204c6f4, ABISELECT(64,40), "S204C6.s204c6f4");
    check_field_offset(lv, s204c6f5, ABISELECT(72,44), "S204C6.s204c6f5");
    check_field_offset(lv, s204c6f6, ABISELECT(80,52), "S204C6.s204c6f6");
    test_class_info(&lv, &cd_S204C6);
    dp->~S204C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS204C6(Test_S204C6, "S204C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S204C6C1Ev();
extern void _ZN6S204C6D1Ev();
Name_Map name_map_S204C6[] = {
  NSPAIR(_ZN6S204C6C1Ev),
  NSPAIR(_ZN6S204C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S204C6[];
extern void _ZN6S204C6D1Ev();
extern void _ZN6S204C6D0Ev();
extern void _ZN6S204C62v4Ev();
extern void _ZN6S204C62v5Ev();
extern void _ZN6S204C62v6Ev();
extern void _ZN6S204C62v7Ev();
extern void _ZN6S204C62v8Ev();
extern void _ZN6S204C62v9Ev();
extern void _ZN6S204C63v10Ev();
extern void _ZN6S204C63v11Ev();
extern void _ZN6S204C63v12Ev();
extern void _ZN6S204C63v13Ev();
extern void _ZN6S204C63v14Ev();
extern void _ZN6S204C63v15Ev();
extern void _ZN6S204C63v16Ev();
extern void _ZN6S204C63v17Ev();
extern void _ZN6S204C63v18Ev();
extern void _ZN6S204C63v19Ev();
extern void _ZN6S204C63v20Ev();
extern void _ZN6S204C63v21Ev();
extern void _ZN6S204C63v22Ev();
extern void _ZN6S204C63v23Ev();
extern void _ZN6S204C63v24Ev();
extern void _ZN6S204C63v25Ev();
extern void _ZN6S204C63v26Ev();
extern void _ZN6S204C63v27Ev();
extern void _ZN6S204C63v28Ev();
extern void _ZN6S204C63v29Ev();
extern void _ZN6S204C63v30Ev();
extern void _ZN6S204C63v31Ev();
extern void _ZN6S204C63v32Ev();
extern void _ZN6S204C63v33Ev();
extern void _ZN6S204C63v34Ev();
extern void _ZN6S204C63v35Ev();
extern void _ZN6S204C63v36Ev();
extern void _ZN6S204C63v37Ev();
extern void _ZN6S204C63v38Ev();
extern void _ZN6S204C63v39Ev();
extern void _ZN6S204C63v40Ev();
extern void _ZN6S204C63v41Ev();
extern void _ZN6S204C63v42Ev();
extern void _ZN6S204C63v43Ev();
extern void _ZN6S204C63v44Ev();
extern void _ZN6S204C63v45Ev();
extern void _ZN6S204C63v46Ev();
extern void _ZN6S204C63v47Ev();
extern void _ZN6S204C63v48Ev();
extern void _ZN6S204C63v49Ev();
extern void _ZN6S204C63v50Ev();
extern void _ZN6S204C63v51Ev();
extern void _ZN6S204C63v52Ev();
extern void _ZN6S204C63v53Ev();
extern void _ZN6S204C63v54Ev();
extern void _ZN6S204C63v55Ev();
extern void _ZN6S204C63v56Ev();
extern void _ZN6S204C63v57Ev();
extern void _ZN6S204C63v58Ev();
extern void _ZN6S204C63v59Ev();
extern void _ZN6S204C63v60Ev();
extern void _ZN6S204C63v61Ev();
extern void _ZN6S204C63v62Ev();
extern void _ZN6S204C63v63Ev();
extern void _ZN6S204C63v64Ev();
extern void _ZN6S204C63v65Ev();
extern void _ZN6S204C63v66Ev();
extern void _ZN6S204C63v67Ev();
static  VTBL_ENTRY vtc_S204C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S204C6[0]),
  (VTBL_ENTRY)&_ZN6S204C6D1Ev,
  (VTBL_ENTRY)&_ZN6S204C6D0Ev,
  (VTBL_ENTRY)&_ZN6S204C62v4Ev,
  (VTBL_ENTRY)&_ZN6S204C62v5Ev,
  (VTBL_ENTRY)&_ZN6S204C62v6Ev,
  (VTBL_ENTRY)&_ZN6S204C62v7Ev,
  (VTBL_ENTRY)&_ZN6S204C62v8Ev,
  (VTBL_ENTRY)&_ZN6S204C62v9Ev,
  (VTBL_ENTRY)&_ZN6S204C63v10Ev,
  (VTBL_ENTRY)&_ZN6S204C63v11Ev,
  (VTBL_ENTRY)&_ZN6S204C63v12Ev,
  (VTBL_ENTRY)&_ZN6S204C63v13Ev,
  (VTBL_ENTRY)&_ZN6S204C63v14Ev,
  (VTBL_ENTRY)&_ZN6S204C63v15Ev,
  (VTBL_ENTRY)&_ZN6S204C63v16Ev,
  (VTBL_ENTRY)&_ZN6S204C63v17Ev,
  (VTBL_ENTRY)&_ZN6S204C63v18Ev,
  (VTBL_ENTRY)&_ZN6S204C63v19Ev,
  (VTBL_ENTRY)&_ZN6S204C63v20Ev,
  (VTBL_ENTRY)&_ZN6S204C63v21Ev,
  (VTBL_ENTRY)&_ZN6S204C63v22Ev,
  (VTBL_ENTRY)&_ZN6S204C63v23Ev,
  (VTBL_ENTRY)&_ZN6S204C63v24Ev,
  (VTBL_ENTRY)&_ZN6S204C63v25Ev,
  (VTBL_ENTRY)&_ZN6S204C63v26Ev,
  (VTBL_ENTRY)&_ZN6S204C63v27Ev,
  (VTBL_ENTRY)&_ZN6S204C63v28Ev,
  (VTBL_ENTRY)&_ZN6S204C63v29Ev,
  (VTBL_ENTRY)&_ZN6S204C63v30Ev,
  (VTBL_ENTRY)&_ZN6S204C63v31Ev,
  (VTBL_ENTRY)&_ZN6S204C63v32Ev,
  (VTBL_ENTRY)&_ZN6S204C63v33Ev,
  (VTBL_ENTRY)&_ZN6S204C63v34Ev,
  (VTBL_ENTRY)&_ZN6S204C63v35Ev,
  (VTBL_ENTRY)&_ZN6S204C63v36Ev,
  (VTBL_ENTRY)&_ZN6S204C63v37Ev,
  (VTBL_ENTRY)&_ZN6S204C63v38Ev,
  (VTBL_ENTRY)&_ZN6S204C63v39Ev,
  (VTBL_ENTRY)&_ZN6S204C63v40Ev,
  (VTBL_ENTRY)&_ZN6S204C63v41Ev,
  (VTBL_ENTRY)&_ZN6S204C63v42Ev,
  (VTBL_ENTRY)&_ZN6S204C63v43Ev,
  (VTBL_ENTRY)&_ZN6S204C63v44Ev,
  (VTBL_ENTRY)&_ZN6S204C63v45Ev,
  (VTBL_ENTRY)&_ZN6S204C63v46Ev,
  (VTBL_ENTRY)&_ZN6S204C63v47Ev,
  (VTBL_ENTRY)&_ZN6S204C63v48Ev,
  (VTBL_ENTRY)&_ZN6S204C63v49Ev,
  (VTBL_ENTRY)&_ZN6S204C63v50Ev,
  (VTBL_ENTRY)&_ZN6S204C63v51Ev,
  (VTBL_ENTRY)&_ZN6S204C63v52Ev,
  (VTBL_ENTRY)&_ZN6S204C63v53Ev,
  (VTBL_ENTRY)&_ZN6S204C63v54Ev,
  (VTBL_ENTRY)&_ZN6S204C63v55Ev,
  (VTBL_ENTRY)&_ZN6S204C63v56Ev,
  (VTBL_ENTRY)&_ZN6S204C63v57Ev,
  (VTBL_ENTRY)&_ZN6S204C63v58Ev,
  (VTBL_ENTRY)&_ZN6S204C63v59Ev,
  (VTBL_ENTRY)&_ZN6S204C63v60Ev,
  (VTBL_ENTRY)&_ZN6S204C63v61Ev,
  (VTBL_ENTRY)&_ZN6S204C63v62Ev,
  (VTBL_ENTRY)&_ZN6S204C63v63Ev,
  (VTBL_ENTRY)&_ZN6S204C63v64Ev,
  (VTBL_ENTRY)&_ZN6S204C63v65Ev,
  (VTBL_ENTRY)&_ZN6S204C63v66Ev,
  (VTBL_ENTRY)&_ZN6S204C63v67Ev,
};
extern VTBL_ENTRY _ZTI6S204C6[];
extern  VTBL_ENTRY _ZTV6S204C6[];
Class_Descriptor cd_S204C6 = {  "S204C6", // class name
  0,0,//no base classes
  &(vtc_S204C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S204C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S204C6),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  S204C5  : S204C6 {
  int s204c5f0[2];
  void *s204c5f1;
  int s204c5f2[2];
  ::S638C7_nt s204c5f3;
  ::S638C7_nt s204c5f4;
  ::S4224C37 s204c5f5;
  ::S638C7_nt s204c5f6;
  unsigned int s204c5f7:1;
  unsigned int s204c5f8:1;
  unsigned int s204c5f9:1;
  unsigned int s204c5f10:1;
  unsigned int s204c5f11:1;
  int s204c5f12[2];
  virtual  ~S204C5(); // _ZN6S204C5D1Ev
  virtual void  v68(); // _ZN6S204C53v68Ev
  virtual void  v69(); // _ZN6S204C53v69Ev
  virtual void  v70(); // _ZN6S204C53v70Ev
  virtual void  v71(); // _ZN6S204C53v71Ev
  virtual void  v72(); // _ZN6S204C53v72Ev
  virtual void  v73(); // _ZN6S204C53v73Ev
  virtual void  v74(); // _ZN6S204C53v74Ev
  virtual void  v75(); // _ZN6S204C53v75Ev
  virtual void  v76(); // _ZN6S204C53v76Ev
  virtual void  v77(); // _ZN6S204C53v77Ev
  virtual void  v78(); // _ZN6S204C53v78Ev
  virtual void  v79(); // _ZN6S204C53v79Ev
  virtual void  v80(); // _ZN6S204C53v80Ev
  virtual void  v81(); // _ZN6S204C53v81Ev
  virtual void  v82(); // _ZN6S204C53v82Ev
  virtual void  v83(); // _ZN6S204C53v83Ev
  virtual void  v84(); // _ZN6S204C53v84Ev
  virtual void  v85(); // _ZN6S204C53v85Ev
  virtual void  v86(); // _ZN6S204C53v86Ev
  virtual void  v87(); // _ZN6S204C53v87Ev
  virtual void  v88(); // _ZN6S204C53v88Ev
  virtual void  v89(); // _ZN6S204C53v89Ev
  S204C5(); // tgen
};
//SIG(-1 S204C5) 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]}


 S204C5 ::~S204C5(){ note_dtor("S204C5", this);}
void  S204C5 ::v68(){vfunc_called(this, "_ZN6S204C53v68Ev");}
void  S204C5 ::v69(){vfunc_called(this, "_ZN6S204C53v69Ev");}
void  S204C5 ::v70(){vfunc_called(this, "_ZN6S204C53v70Ev");}
void  S204C5 ::v71(){vfunc_called(this, "_ZN6S204C53v71Ev");}
void  S204C5 ::v72(){vfunc_called(this, "_ZN6S204C53v72Ev");}
void  S204C5 ::v73(){vfunc_called(this, "_ZN6S204C53v73Ev");}
void  S204C5 ::v74(){vfunc_called(this, "_ZN6S204C53v74Ev");}
void  S204C5 ::v75(){vfunc_called(this, "_ZN6S204C53v75Ev");}
void  S204C5 ::v76(){vfunc_called(this, "_ZN6S204C53v76Ev");}
void  S204C5 ::v77(){vfunc_called(this, "_ZN6S204C53v77Ev");}
void  S204C5 ::v78(){vfunc_called(this, "_ZN6S204C53v78Ev");}
void  S204C5 ::v79(){vfunc_called(this, "_ZN6S204C53v79Ev");}
void  S204C5 ::v80(){vfunc_called(this, "_ZN6S204C53v80Ev");}
void  S204C5 ::v81(){vfunc_called(this, "_ZN6S204C53v81Ev");}
void  S204C5 ::v82(){vfunc_called(this, "_ZN6S204C53v82Ev");}
void  S204C5 ::v83(){vfunc_called(this, "_ZN6S204C53v83Ev");}
void  S204C5 ::v84(){vfunc_called(this, "_ZN6S204C53v84Ev");}
void  S204C5 ::v85(){vfunc_called(this, "_ZN6S204C53v85Ev");}
void  S204C5 ::v86(){vfunc_called(this, "_ZN6S204C53v86Ev");}
void  S204C5 ::v87(){vfunc_called(this, "_ZN6S204C53v87Ev");}
void  S204C5 ::v88(){vfunc_called(this, "_ZN6S204C53v88Ev");}
void  S204C5 ::v89(){vfunc_called(this, "_ZN6S204C53v89Ev");}
S204C5 ::S204C5(){ note_ctor("S204C5", this);} // tgen

static void Test_S204C5()
{
  extern Class_Descriptor cd_S204C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S204C5, buf);
    S204C5 *dp, &lv = *(dp=new (buf) S204C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S204C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S204C5)");
    check_base_class_offset(lv, (S204C6*), 0, "S204C5");
    check_field_offset(lv, s204c5f0, ABISELECT(96,60), "S204C5.s204c5f0");
    check_field_offset(lv, s204c5f1, ABISELECT(104,68), "S204C5.s204c5f1");
    check_field_offset(lv, s204c5f2, ABISELECT(112,72), "S204C5.s204c5f2");
    check_field_offset(lv, s204c5f3, ABISELECT(120,80), "S204C5.s204c5f3");
    check_field_offset(lv, s204c5f4, ABISELECT(136,92), "S204C5.s204c5f4");
    check_field_offset(lv, s204c5f5, ABISELECT(152,104), "S204C5.s204c5f5");
    check_field_offset(lv, s204c5f6, ABISELECT(160,108), "S204C5.s204c5f6");
    set_bf_and_test(lv, s204c5f7, ABISELECT(176,120), 0, 1, 1, "S204C5");
    set_bf_and_test(lv, s204c5f8, ABISELECT(176,120), 1, 1, 1, "S204C5");
    set_bf_and_test(lv, s204c5f9, ABISELECT(176,120), 2, 1, 1, "S204C5");
    set_bf_and_test(lv, s204c5f10, ABISELECT(176,120), 3, 1, 1, "S204C5");
    set_bf_and_test(lv, s204c5f11, ABISELECT(176,120), 4, 1, 1, "S204C5");
    check_field_offset(lv, s204c5f12, ABISELECT(180,124), "S204C5.s204c5f12");
    test_class_info(&lv, &cd_S204C5);
    dp->~S204C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS204C5(Test_S204C5, "S204C5", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN6S204C5C1Ev();
extern void _ZN6S204C5D1Ev();
Name_Map name_map_S204C5[] = {
  NSPAIR(_ZN6S204C5C1Ev),
  NSPAIR(_ZN6S204C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S204C6;
extern VTBL_ENTRY _ZTI6S204C6[];
extern  VTBL_ENTRY _ZTV6S204C6[];
static Base_Class bases_S204C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S204C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S204C5[];
extern void _ZN6S204C5D1Ev();
extern void _ZN6S204C5D0Ev();
extern void _ZN6S204C62v4Ev();
extern void _ZN6S204C62v5Ev();
extern void _ZN6S204C62v6Ev();
extern void _ZN6S204C62v7Ev();
extern void _ZN6S204C62v8Ev();
extern void _ZN6S204C62v9Ev();
extern void _ZN6S204C63v10Ev();
extern void _ZN6S204C63v11Ev();
extern void _ZN6S204C63v12Ev();
extern void _ZN6S204C63v13Ev();
extern void _ZN6S204C63v14Ev();
extern void _ZN6S204C63v15Ev();
extern void _ZN6S204C63v16Ev();
extern void _ZN6S204C63v17Ev();
extern void _ZN6S204C63v18Ev();
extern void _ZN6S204C63v19Ev();
extern void _ZN6S204C63v20Ev();
extern void _ZN6S204C63v21Ev();
extern void _ZN6S204C63v22Ev();
extern void _ZN6S204C63v23Ev();
extern void _ZN6S204C63v24Ev();
extern void _ZN6S204C63v25Ev();
extern void _ZN6S204C63v26Ev();
extern void _ZN6S204C63v27Ev();
extern void _ZN6S204C63v28Ev();
extern void _ZN6S204C63v29Ev();
extern void _ZN6S204C63v30Ev();
extern void _ZN6S204C63v31Ev();
extern void _ZN6S204C63v32Ev();
extern void _ZN6S204C63v33Ev();
extern void _ZN6S204C63v34Ev();
extern void _ZN6S204C63v35Ev();
extern void _ZN6S204C63v36Ev();
extern void _ZN6S204C63v37Ev();
extern void _ZN6S204C63v38Ev();
extern void _ZN6S204C63v39Ev();
extern void _ZN6S204C63v40Ev();
extern void _ZN6S204C63v41Ev();
extern void _ZN6S204C63v42Ev();
extern void _ZN6S204C63v43Ev();
extern void _ZN6S204C63v44Ev();
extern void _ZN6S204C63v45Ev();
extern void _ZN6S204C63v46Ev();
extern void _ZN6S204C63v47Ev();
extern void _ZN6S204C63v48Ev();
extern void _ZN6S204C63v49Ev();
extern void _ZN6S204C63v50Ev();
extern void _ZN6S204C63v51Ev();
extern void _ZN6S204C63v52Ev();
extern void _ZN6S204C63v53Ev();
extern void _ZN6S204C63v54Ev();
extern void _ZN6S204C63v55Ev();
extern void _ZN6S204C63v56Ev();
extern void _ZN6S204C63v57Ev();
extern void _ZN6S204C63v58Ev();
extern void _ZN6S204C63v59Ev();
extern void _ZN6S204C63v60Ev();
extern void _ZN6S204C63v61Ev();
extern void _ZN6S204C63v62Ev();
extern void _ZN6S204C63v63Ev();
extern void _ZN6S204C63v64Ev();
extern void _ZN6S204C63v65Ev();
extern void _ZN6S204C63v66Ev();
extern void _ZN6S204C63v67Ev();
extern void _ZN6S204C53v68Ev();
extern void _ZN6S204C53v69Ev();
extern void _ZN6S204C53v70Ev();
extern void _ZN6S204C53v71Ev();
extern void _ZN6S204C53v72Ev();
extern void _ZN6S204C53v73Ev();
extern void _ZN6S204C53v74Ev();
extern void _ZN6S204C53v75Ev();
extern void _ZN6S204C53v76Ev();
extern void _ZN6S204C53v77Ev();
extern void _ZN6S204C53v78Ev();
extern void _ZN6S204C53v79Ev();
extern void _ZN6S204C53v80Ev();
extern void _ZN6S204C53v81Ev();
extern void _ZN6S204C53v82Ev();
extern void _ZN6S204C53v83Ev();
extern void _ZN6S204C53v84Ev();
extern void _ZN6S204C53v85Ev();
extern void _ZN6S204C53v86Ev();
extern void _ZN6S204C53v87Ev();
extern void _ZN6S204C53v88Ev();
extern void _ZN6S204C53v89Ev();
static  VTBL_ENTRY vtc_S204C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S204C5[0]),
  (VTBL_ENTRY)&_ZN6S204C5D1Ev,
  (VTBL_ENTRY)&_ZN6S204C5D0Ev,
  (VTBL_ENTRY)&_ZN6S204C62v4Ev,
  (VTBL_ENTRY)&_ZN6S204C62v5Ev,
  (VTBL_ENTRY)&_ZN6S204C62v6Ev,
  (VTBL_ENTRY)&_ZN6S204C62v7Ev,
  (VTBL_ENTRY)&_ZN6S204C62v8Ev,
  (VTBL_ENTRY)&_ZN6S204C62v9Ev,
  (VTBL_ENTRY)&_ZN6S204C63v10Ev,
  (VTBL_ENTRY)&_ZN6S204C63v11Ev,
  (VTBL_ENTRY)&_ZN6S204C63v12Ev,
  (VTBL_ENTRY)&_ZN6S204C63v13Ev,
  (VTBL_ENTRY)&_ZN6S204C63v14Ev,
  (VTBL_ENTRY)&_ZN6S204C63v15Ev,
  (VTBL_ENTRY)&_ZN6S204C63v16Ev,
  (VTBL_ENTRY)&_ZN6S204C63v17Ev,
  (VTBL_ENTRY)&_ZN6S204C63v18Ev,
  (VTBL_ENTRY)&_ZN6S204C63v19Ev,
  (VTBL_ENTRY)&_ZN6S204C63v20Ev,
  (VTBL_ENTRY)&_ZN6S204C63v21Ev,
  (VTBL_ENTRY)&_ZN6S204C63v22Ev,
  (VTBL_ENTRY)&_ZN6S204C63v23Ev,
  (VTBL_ENTRY)&_ZN6S204C63v24Ev,
  (VTBL_ENTRY)&_ZN6S204C63v25Ev,
  (VTBL_ENTRY)&_ZN6S204C63v26Ev,
  (VTBL_ENTRY)&_ZN6S204C63v27Ev,
  (VTBL_ENTRY)&_ZN6S204C63v28Ev,
  (VTBL_ENTRY)&_ZN6S204C63v29Ev,
  (VTBL_ENTRY)&_ZN6S204C63v30Ev,
  (VTBL_ENTRY)&_ZN6S204C63v31Ev,
  (VTBL_ENTRY)&_ZN6S204C63v32Ev,
  (VTBL_ENTRY)&_ZN6S204C63v33Ev,
  (VTBL_ENTRY)&_ZN6S204C63v34Ev,
  (VTBL_ENTRY)&_ZN6S204C63v35Ev,
  (VTBL_ENTRY)&_ZN6S204C63v36Ev,
  (VTBL_ENTRY)&_ZN6S204C63v37Ev,
  (VTBL_ENTRY)&_ZN6S204C63v38Ev,
  (VTBL_ENTRY)&_ZN6S204C63v39Ev,
  (VTBL_ENTRY)&_ZN6S204C63v40Ev,
  (VTBL_ENTRY)&_ZN6S204C63v41Ev,
  (VTBL_ENTRY)&_ZN6S204C63v42Ev,
  (VTBL_ENTRY)&_ZN6S204C63v43Ev,
  (VTBL_ENTRY)&_ZN6S204C63v44Ev,
  (VTBL_ENTRY)&_ZN6S204C63v45Ev,
  (VTBL_ENTRY)&_ZN6S204C63v46Ev,
  (VTBL_ENTRY)&_ZN6S204C63v47Ev,
  (VTBL_ENTRY)&_ZN6S204C63v48Ev,
  (VTBL_ENTRY)&_ZN6S204C63v49Ev,
  (VTBL_ENTRY)&_ZN6S204C63v50Ev,
  (VTBL_ENTRY)&_ZN6S204C63v51Ev,
  (VTBL_ENTRY)&_ZN6S204C63v52Ev,
  (VTBL_ENTRY)&_ZN6S204C63v53Ev,
  (VTBL_ENTRY)&_ZN6S204C63v54Ev,
  (VTBL_ENTRY)&_ZN6S204C63v55Ev,
  (VTBL_ENTRY)&_ZN6S204C63v56Ev,
  (VTBL_ENTRY)&_ZN6S204C63v57Ev,
  (VTBL_ENTRY)&_ZN6S204C63v58Ev,
  (VTBL_ENTRY)&_ZN6S204C63v59Ev,
  (VTBL_ENTRY)&_ZN6S204C63v60Ev,
  (VTBL_ENTRY)&_ZN6S204C63v61Ev,
  (VTBL_ENTRY)&_ZN6S204C63v62Ev,
  (VTBL_ENTRY)&_ZN6S204C63v63Ev,
  (VTBL_ENTRY)&_ZN6S204C63v64Ev,
  (VTBL_ENTRY)&_ZN6S204C63v65Ev,
  (VTBL_ENTRY)&_ZN6S204C63v66Ev,
  (VTBL_ENTRY)&_ZN6S204C63v67Ev,
  (VTBL_ENTRY)&_ZN6S204C53v68Ev,
  (VTBL_ENTRY)&_ZN6S204C53v69Ev,
  (VTBL_ENTRY)&_ZN6S204C53v70Ev,
  (VTBL_ENTRY)&_ZN6S204C53v71Ev,
  (VTBL_ENTRY)&_ZN6S204C53v72Ev,
  (VTBL_ENTRY)&_ZN6S204C53v73Ev,
  (VTBL_ENTRY)&_ZN6S204C53v74Ev,
  (VTBL_ENTRY)&_ZN6S204C53v75Ev,
  (VTBL_ENTRY)&_ZN6S204C53v76Ev,
  (VTBL_ENTRY)&_ZN6S204C53v77Ev,
  (VTBL_ENTRY)&_ZN6S204C53v78Ev,
  (VTBL_ENTRY)&_ZN6S204C53v79Ev,
  (VTBL_ENTRY)&_ZN6S204C53v80Ev,
  (VTBL_ENTRY)&_ZN6S204C53v81Ev,
  (VTBL_ENTRY)&_ZN6S204C53v82Ev,
  (VTBL_ENTRY)&_ZN6S204C53v83Ev,
  (VTBL_ENTRY)&_ZN6S204C53v84Ev,
  (VTBL_ENTRY)&_ZN6S204C53v85Ev,
  (VTBL_ENTRY)&_ZN6S204C53v86Ev,
  (VTBL_ENTRY)&_ZN6S204C53v87Ev,
  (VTBL_ENTRY)&_ZN6S204C53v88Ev,
  (VTBL_ENTRY)&_ZN6S204C53v89Ev,
};
extern VTBL_ENTRY _ZTI6S204C5[];
extern  VTBL_ENTRY _ZTV6S204C5[];
Class_Descriptor cd_S204C5 = {  "S204C5", // class name
  bases_S204C5, 1,
  &(vtc_S204C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI6S204C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S204C5),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  S204C4  : S204C5 {
  unsigned int s204c4f0:1;
  unsigned int s204c4f1:1;
  unsigned int s204c4f2:1;
  ::S3281C17 s204c4f3;
  ::S3281C11 s204c4f4;
  ::S3281C5_nt s204c4f5;
  ::S638C18 s204c4f6;
  int s204c4f7[3];
  virtual  ~S204C4(); // _ZN6S204C4D1Ev
  virtual void  v90(); // _ZN6S204C43v90Ev
  virtual void  v91(); // _ZN6S204C43v91Ev
  virtual void  v92(); // _ZN6S204C43v92Ev
  virtual void  v93(); // _ZN6S204C43v93Ev
  virtual void  v94(); // _ZN6S204C43v94Ev
  virtual void  v95(); // _ZN6S204C43v95Ev
  virtual void  v96(); // _ZN6S204C43v96Ev
  virtual void  v97(); // _ZN6S204C43v97Ev
  virtual void  v98(); // _ZN6S204C43v98Ev
  virtual void  v99(); // _ZN6S204C43v99Ev
  virtual void  v100(); // _ZN6S204C44v100Ev
  virtual void  v101(); // _ZN6S204C44v101Ev
  virtual void  v102(); // _ZN6S204C44v102Ev
  virtual void  v103(); // _ZN6S204C44v103Ev
  virtual void  v104(); // _ZN6S204C44v104Ev
  virtual void  v105(); // _ZN6S204C44v105Ev
  virtual void  v106(); // _ZN6S204C44v106Ev
  virtual void  v107(); // _ZN6S204C44v107Ev
  virtual void  v108(); // _ZN6S204C44v108Ev
  virtual void  v109(); // _ZN6S204C44v109Ev
  S204C4(); // tgen
};
//SIG(-1 S204C4) 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]}


 S204C4 ::~S204C4(){ note_dtor("S204C4", this);}
void  S204C4 ::v90(){vfunc_called(this, "_ZN6S204C43v90Ev");}
void  S204C4 ::v91(){vfunc_called(this, "_ZN6S204C43v91Ev");}
void  S204C4 ::v92(){vfunc_called(this, "_ZN6S204C43v92Ev");}
void  S204C4 ::v93(){vfunc_called(this, "_ZN6S204C43v93Ev");}
void  S204C4 ::v94(){vfunc_called(this, "_ZN6S204C43v94Ev");}
void  S204C4 ::v95(){vfunc_called(this, "_ZN6S204C43v95Ev");}
void  S204C4 ::v96(){vfunc_called(this, "_ZN6S204C43v96Ev");}
void  S204C4 ::v97(){vfunc_called(this, "_ZN6S204C43v97Ev");}
void  S204C4 ::v98(){vfunc_called(this, "_ZN6S204C43v98Ev");}
void  S204C4 ::v99(){vfunc_called(this, "_ZN6S204C43v99Ev");}
void  S204C4 ::v100(){vfunc_called(this, "_ZN6S204C44v100Ev");}
void  S204C4 ::v101(){vfunc_called(this, "_ZN6S204C44v101Ev");}
void  S204C4 ::v102(){vfunc_called(this, "_ZN6S204C44v102Ev");}
void  S204C4 ::v103(){vfunc_called(this, "_ZN6S204C44v103Ev");}
void  S204C4 ::v104(){vfunc_called(this, "_ZN6S204C44v104Ev");}
void  S204C4 ::v105(){vfunc_called(this, "_ZN6S204C44v105Ev");}
void  S204C4 ::v106(){vfunc_called(this, "_ZN6S204C44v106Ev");}
void  S204C4 ::v107(){vfunc_called(this, "_ZN6S204C44v107Ev");}
void  S204C4 ::v108(){vfunc_called(this, "_ZN6S204C44v108Ev");}
void  S204C4 ::v109(){vfunc_called(this, "_ZN6S204C44v109Ev");}
S204C4 ::S204C4(){ note_ctor("S204C4", this);} // tgen

static void Test_S204C4()
{
  extern Class_Descriptor cd_S204C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S204C4, buf);
    S204C4 *dp, &lv = *(dp=new (buf) S204C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S204C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S204C4)");
    check_base_class_offset(lv, (S204C6*)(S204C5*), 0, "S204C4");
    check_base_class_offset(lv, (S204C5*), 0, "S204C4");
    set_bf_and_test(lv, s204c4f0, ABISELECT(188,132), 0, 1, 1, "S204C4");
    set_bf_and_test(lv, s204c4f1, ABISELECT(188,132), 1, 1, 1, "S204C4");
    set_bf_and_test(lv, s204c4f2, ABISELECT(188,132), 2, 1, 1, "S204C4");
    check_field_offset(lv, s204c4f3, ABISELECT(192,136), "S204C4.s204c4f3");
    check_field_offset(lv, s204c4f4, ABISELECT(208,148), "S204C4.s204c4f4");
    check_field_offset(lv, s204c4f5, ABISELECT(224,160), "S204C4.s204c4f5");
    check_field_offset(lv, s204c4f6, ABISELECT(240,172), "S204C4.s204c4f6");
    check_field_offset(lv, s204c4f7, ABISELECT(256,184), "S204C4.s204c4f7");
    test_class_info(&lv, &cd_S204C4);
    dp->~S204C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS204C4(Test_S204C4, "S204C4", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN6S204C4C1Ev();
extern void _ZN6S204C4D1Ev();
Name_Map name_map_S204C4[] = {
  NSPAIR(_ZN6S204C4C1Ev),
  NSPAIR(_ZN6S204C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S204C6;
extern VTBL_ENTRY _ZTI6S204C6[];
extern  VTBL_ENTRY _ZTV6S204C6[];
extern Class_Descriptor cd_S204C5;
extern VTBL_ENTRY _ZTI6S204C5[];
extern  VTBL_ENTRY _ZTV6S204C5[];
static Base_Class bases_S204C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S204C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S204C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S204C4[];
extern void _ZN6S204C4D1Ev();
extern void _ZN6S204C4D0Ev();
extern void _ZN6S204C62v4Ev();
extern void _ZN6S204C62v5Ev();
extern void _ZN6S204C62v6Ev();
extern void _ZN6S204C62v7Ev();
extern void _ZN6S204C62v8Ev();
extern void _ZN6S204C62v9Ev();
extern void _ZN6S204C63v10Ev();
extern void _ZN6S204C63v11Ev();
extern void _ZN6S204C63v12Ev();
extern void _ZN6S204C63v13Ev();
extern void _ZN6S204C63v14Ev();
extern void _ZN6S204C63v15Ev();
extern void _ZN6S204C63v16Ev();
extern void _ZN6S204C63v17Ev();
extern void _ZN6S204C63v18Ev();
extern void _ZN6S204C63v19Ev();
extern void _ZN6S204C63v20Ev();
extern void _ZN6S204C63v21Ev();
extern void _ZN6S204C63v22Ev();
extern void _ZN6S204C63v23Ev();
extern void _ZN6S204C63v24Ev();
extern void _ZN6S204C63v25Ev();
extern void _ZN6S204C63v26Ev();
extern void _ZN6S204C63v27Ev();
extern void _ZN6S204C63v28Ev();
extern void _ZN6S204C63v29Ev();
extern void _ZN6S204C63v30Ev();
extern void _ZN6S204C63v31Ev();
extern void _ZN6S204C63v32Ev();
extern void _ZN6S204C63v33Ev();
extern void _ZN6S204C63v34Ev();
extern void _ZN6S204C63v35Ev();
extern void _ZN6S204C63v36Ev();
extern void _ZN6S204C63v37Ev();
extern void _ZN6S204C63v38Ev();
extern void _ZN6S204C63v39Ev();
extern void _ZN6S204C63v40Ev();
extern void _ZN6S204C63v41Ev();
extern void _ZN6S204C63v42Ev();
extern void _ZN6S204C63v43Ev();
extern void _ZN6S204C63v44Ev();
extern void _ZN6S204C63v45Ev();
extern void _ZN6S204C63v46Ev();
extern void _ZN6S204C63v47Ev();
extern void _ZN6S204C63v48Ev();
extern void _ZN6S204C63v49Ev();
extern void _ZN6S204C63v50Ev();
extern void _ZN6S204C63v51Ev();
extern void _ZN6S204C63v52Ev();
extern void _ZN6S204C63v53Ev();
extern void _ZN6S204C63v54Ev();
extern void _ZN6S204C63v55Ev();
extern void _ZN6S204C63v56Ev();
extern void _ZN6S204C63v57Ev();
extern void _ZN6S204C63v58Ev();
extern void _ZN6S204C63v59Ev();
extern void _ZN6S204C63v60Ev();
extern void _ZN6S204C63v61Ev();
extern void _ZN6S204C63v62Ev();
extern void _ZN6S204C63v63Ev();
extern void _ZN6S204C63v64Ev();
extern void _ZN6S204C63v65Ev();
extern void _ZN6S204C63v66Ev();
extern void _ZN6S204C63v67Ev();
extern void _ZN6S204C53v68Ev();
extern void _ZN6S204C53v69Ev();
extern void _ZN6S204C53v70Ev();
extern void _ZN6S204C53v71Ev();
extern void _ZN6S204C53v72Ev();
extern void _ZN6S204C53v73Ev();
extern void _ZN6S204C53v74Ev();
extern void _ZN6S204C53v75Ev();
extern void _ZN6S204C53v76Ev();
extern void _ZN6S204C53v77Ev();
extern void _ZN6S204C53v78Ev();
extern void _ZN6S204C53v79Ev();
extern void _ZN6S204C53v80Ev();
extern void _ZN6S204C53v81Ev();
extern void _ZN6S204C53v82Ev();
extern void _ZN6S204C53v83Ev();
extern void _ZN6S204C53v84Ev();
extern void _ZN6S204C53v85Ev();
extern void _ZN6S204C53v86Ev();
extern void _ZN6S204C53v87Ev();
extern void _ZN6S204C53v88Ev();
extern void _ZN6S204C53v89Ev();
extern void _ZN6S204C43v90Ev();
extern void _ZN6S204C43v91Ev();
extern void _ZN6S204C43v92Ev();
extern void _ZN6S204C43v93Ev();
extern void _ZN6S204C43v94Ev();
extern void _ZN6S204C43v95Ev();
extern void _ZN6S204C43v96Ev();
extern void _ZN6S204C43v97Ev();
extern void _ZN6S204C43v98Ev();
extern void _ZN6S204C43v99Ev();
extern void _ZN6S204C44v100Ev();
extern void _ZN6S204C44v101Ev();
extern void _ZN6S204C44v102Ev();
extern void _ZN6S204C44v103Ev();
extern void _ZN6S204C44v104Ev();
extern void _ZN6S204C44v105Ev();
extern void _ZN6S204C44v106Ev();
extern void _ZN6S204C44v107Ev();
extern void _ZN6S204C44v108Ev();
extern void _ZN6S204C44v109Ev();
static  VTBL_ENTRY vtc_S204C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S204C4[0]),
  (VTBL_ENTRY)&_ZN6S204C4D1Ev,
  (VTBL_ENTRY)&_ZN6S204C4D0Ev,
  (VTBL_ENTRY)&_ZN6S204C62v4Ev,
  (VTBL_ENTRY)&_ZN6S204C62v5Ev,
  (VTBL_ENTRY)&_ZN6S204C62v6Ev,
  (VTBL_ENTRY)&_ZN6S204C62v7Ev,
  (VTBL_ENTRY)&_ZN6S204C62v8Ev,
  (VTBL_ENTRY)&_ZN6S204C62v9Ev,
  (VTBL_ENTRY)&_ZN6S204C63v10Ev,
  (VTBL_ENTRY)&_ZN6S204C63v11Ev,
  (VTBL_ENTRY)&_ZN6S204C63v12Ev,
  (VTBL_ENTRY)&_ZN6S204C63v13Ev,
  (VTBL_ENTRY)&_ZN6S204C63v14Ev,
  (VTBL_ENTRY)&_ZN6S204C63v15Ev,
  (VTBL_ENTRY)&_ZN6S204C63v16Ev,
  (VTBL_ENTRY)&_ZN6S204C63v17Ev,
  (VTBL_ENTRY)&_ZN6S204C63v18Ev,
  (VTBL_ENTRY)&_ZN6S204C63v19Ev,
  (VTBL_ENTRY)&_ZN6S204C63v20Ev,
  (VTBL_ENTRY)&_ZN6S204C63v21Ev,
  (VTBL_ENTRY)&_ZN6S204C63v22Ev,
  (VTBL_ENTRY)&_ZN6S204C63v23Ev,
  (VTBL_ENTRY)&_ZN6S204C63v24Ev,
  (VTBL_ENTRY)&_ZN6S204C63v25Ev,
  (VTBL_ENTRY)&_ZN6S204C63v26Ev,
  (VTBL_ENTRY)&_ZN6S204C63v27Ev,
  (VTBL_ENTRY)&_ZN6S204C63v28Ev,
  (VTBL_ENTRY)&_ZN6S204C63v29Ev,
  (VTBL_ENTRY)&_ZN6S204C63v30Ev,
  (VTBL_ENTRY)&_ZN6S204C63v31Ev,
  (VTBL_ENTRY)&_ZN6S204C63v32Ev,
  (VTBL_ENTRY)&_ZN6S204C63v33Ev,
  (VTBL_ENTRY)&_ZN6S204C63v34Ev,
  (VTBL_ENTRY)&_ZN6S204C63v35Ev,
  (VTBL_ENTRY)&_ZN6S204C63v36Ev,
  (VTBL_ENTRY)&_ZN6S204C63v37Ev,
  (VTBL_ENTRY)&_ZN6S204C63v38Ev,
  (VTBL_ENTRY)&_ZN6S204C63v39Ev,
  (VTBL_ENTRY)&_ZN6S204C63v40Ev,
  (VTBL_ENTRY)&_ZN6S204C63v41Ev,
  (VTBL_ENTRY)&_ZN6S204C63v42Ev,
  (VTBL_ENTRY)&_ZN6S204C63v43Ev,
  (VTBL_ENTRY)&_ZN6S204C63v44Ev,
  (VTBL_ENTRY)&_ZN6S204C63v45Ev,
  (VTBL_ENTRY)&_ZN6S204C63v46Ev,
  (VTBL_ENTRY)&_ZN6S204C63v47Ev,
  (VTBL_ENTRY)&_ZN6S204C63v48Ev,
  (VTBL_ENTRY)&_ZN6S204C63v49Ev,
  (VTBL_ENTRY)&_ZN6S204C63v50Ev,
  (VTBL_ENTRY)&_ZN6S204C63v51Ev,
  (VTBL_ENTRY)&_ZN6S204C63v52Ev,
  (VTBL_ENTRY)&_ZN6S204C63v53Ev,
  (VTBL_ENTRY)&_ZN6S204C63v54Ev,
  (VTBL_ENTRY)&_ZN6S204C63v55Ev,
  (VTBL_ENTRY)&_ZN6S204C63v56Ev,
  (VTBL_ENTRY)&_ZN6S204C63v57Ev,
  (VTBL_ENTRY)&_ZN6S204C63v58Ev,
  (VTBL_ENTRY)&_ZN6S204C63v59Ev,
  (VTBL_ENTRY)&_ZN6S204C63v60Ev,
  (VTBL_ENTRY)&_ZN6S204C63v61Ev,
  (VTBL_ENTRY)&_ZN6S204C63v62Ev,
  (VTBL_ENTRY)&_ZN6S204C63v63Ev,
  (VTBL_ENTRY)&_ZN6S204C63v64Ev,
  (VTBL_ENTRY)&_ZN6S204C63v65Ev,
  (VTBL_ENTRY)&_ZN6S204C63v66Ev,
  (VTBL_ENTRY)&_ZN6S204C63v67Ev,
  (VTBL_ENTRY)&_ZN6S204C53v68Ev,
  (VTBL_ENTRY)&_ZN6S204C53v69Ev,
  (VTBL_ENTRY)&_ZN6S204C53v70Ev,
  (VTBL_ENTRY)&_ZN6S204C53v71Ev,
  (VTBL_ENTRY)&_ZN6S204C53v72Ev,
  (VTBL_ENTRY)&_ZN6S204C53v73Ev,
  (VTBL_ENTRY)&_ZN6S204C53v74Ev,
  (VTBL_ENTRY)&_ZN6S204C53v75Ev,
  (VTBL_ENTRY)&_ZN6S204C53v76Ev,
  (VTBL_ENTRY)&_ZN6S204C53v77Ev,
  (VTBL_ENTRY)&_ZN6S204C53v78Ev,
  (VTBL_ENTRY)&_ZN6S204C53v79Ev,
  (VTBL_ENTRY)&_ZN6S204C53v80Ev,
  (VTBL_ENTRY)&_ZN6S204C53v81Ev,
  (VTBL_ENTRY)&_ZN6S204C53v82Ev,
  (VTBL_ENTRY)&_ZN6S204C53v83Ev,
  (VTBL_ENTRY)&_ZN6S204C53v84Ev,
  (VTBL_ENTRY)&_ZN6S204C53v85Ev,
  (VTBL_ENTRY)&_ZN6S204C53v86Ev,
  (VTBL_ENTRY)&_ZN6S204C53v87Ev,
  (VTBL_ENTRY)&_ZN6S204C53v88Ev,
  (VTBL_ENTRY)&_ZN6S204C53v89Ev,
  (VTBL_ENTRY)&_ZN6S204C43v90Ev,
  (VTBL_ENTRY)&_ZN6S204C43v91Ev,
  (VTBL_ENTRY)&_ZN6S204C43v92Ev,
  (VTBL_ENTRY)&_ZN6S204C43v93Ev,
  (VTBL_ENTRY)&_ZN6S204C43v94Ev,
  (VTBL_ENTRY)&_ZN6S204C43v95Ev,
  (VTBL_ENTRY)&_ZN6S204C43v96Ev,
  (VTBL_ENTRY)&_ZN6S204C43v97Ev,
  (VTBL_ENTRY)&_ZN6S204C43v98Ev,
  (VTBL_ENTRY)&_ZN6S204C43v99Ev,
  (VTBL_ENTRY)&_ZN6S204C44v100Ev,
  (VTBL_ENTRY)&_ZN6S204C44v101Ev,
  (VTBL_ENTRY)&_ZN6S204C44v102Ev,
  (VTBL_ENTRY)&_ZN6S204C44v103Ev,
  (VTBL_ENTRY)&_ZN6S204C44v104Ev,
  (VTBL_ENTRY)&_ZN6S204C44v105Ev,
  (VTBL_ENTRY)&_ZN6S204C44v106Ev,
  (VTBL_ENTRY)&_ZN6S204C44v107Ev,
  (VTBL_ENTRY)&_ZN6S204C44v108Ev,
  (VTBL_ENTRY)&_ZN6S204C44v109Ev,
};
extern VTBL_ENTRY _ZTI6S204C4[];
extern  VTBL_ENTRY _ZTV6S204C4[];
Class_Descriptor cd_S204C4 = {  "S204C4", // class name
  bases_S204C4, 2,
  &(vtc_S204C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI6S204C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S204C4),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  S204C3_nt  : S204C4 {
  ::S3281C4_nt s204c3f0;
  unsigned int s204c3f1:1;
  ::S638C8 s204c3f2;
  virtual  ~S204C3_nt(); // _ZN9S204C3_ntD1Ev
  virtual void  v110(); // _ZN9S204C3_nt4v110Ev
  virtual void  v111(); // _ZN9S204C3_nt4v111Ev
  virtual void  v112(); // _ZN9S204C3_nt4v112Ev
  virtual void  v113(); // _ZN9S204C3_nt4v113Ev
  S204C3_nt(); // tgen
};
//SIG(-1 S204C3_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 FC7}


 S204C3_nt ::~S204C3_nt(){ note_dtor("S204C3_nt", this);}
void  S204C3_nt ::v110(){vfunc_called(this, "_ZN9S204C3_nt4v110Ev");}
void  S204C3_nt ::v111(){vfunc_called(this, "_ZN9S204C3_nt4v111Ev");}
void  S204C3_nt ::v112(){vfunc_called(this, "_ZN9S204C3_nt4v112Ev");}
void  S204C3_nt ::v113(){vfunc_called(this, "_ZN9S204C3_nt4v113Ev");}
S204C3_nt ::S204C3_nt(){ note_ctor("S204C3_nt", this);} // tgen

//skip512 S204C3_nt

#else // __cplusplus

extern void _ZN9S204C3_ntC1Ev();
extern void _ZN9S204C3_ntD1Ev();
Name_Map name_map_S204C3_nt[] = {
  NSPAIR(_ZN9S204C3_ntC1Ev),
  NSPAIR(_ZN9S204C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S204C6;
extern VTBL_ENTRY _ZTI6S204C6[];
extern  VTBL_ENTRY _ZTV6S204C6[];
extern Class_Descriptor cd_S204C5;
extern VTBL_ENTRY _ZTI6S204C5[];
extern  VTBL_ENTRY _ZTV6S204C5[];
extern Class_Descriptor cd_S204C4;
extern VTBL_ENTRY _ZTI6S204C4[];
extern  VTBL_ENTRY _ZTV6S204C4[];
static Base_Class bases_S204C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S204C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S204C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S204C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S204C3_nt[];
extern void _ZN9S204C3_ntD1Ev();
extern void _ZN9S204C3_ntD0Ev();
extern void _ZN6S204C62v4Ev();
extern void _ZN6S204C62v5Ev();
extern void _ZN6S204C62v6Ev();
extern void _ZN6S204C62v7Ev();
extern void _ZN6S204C62v8Ev();
extern void _ZN6S204C62v9Ev();
extern void _ZN6S204C63v10Ev();
extern void _ZN6S204C63v11Ev();
extern void _ZN6S204C63v12Ev();
extern void _ZN6S204C63v13Ev();
extern void _ZN6S204C63v14Ev();
extern void _ZN6S204C63v15Ev();
extern void _ZN6S204C63v16Ev();
extern void _ZN6S204C63v17Ev();
extern void _ZN6S204C63v18Ev();
extern void _ZN6S204C63v19Ev();
extern void _ZN6S204C63v20Ev();
extern void _ZN6S204C63v21Ev();
extern void _ZN6S204C63v22Ev();
extern void _ZN6S204C63v23Ev();
extern void _ZN6S204C63v24Ev();
extern void _ZN6S204C63v25Ev();
extern void _ZN6S204C63v26Ev();
extern void _ZN6S204C63v27Ev();
extern void _ZN6S204C63v28Ev();
extern void _ZN6S204C63v29Ev();
extern void _ZN6S204C63v30Ev();
extern void _ZN6S204C63v31Ev();
extern void _ZN6S204C63v32Ev();
extern void _ZN6S204C63v33Ev();
extern void _ZN6S204C63v34Ev();
extern void _ZN6S204C63v35Ev();
extern void _ZN6S204C63v36Ev();
extern void _ZN6S204C63v37Ev();
extern void _ZN6S204C63v38Ev();
extern void _ZN6S204C63v39Ev();
extern void _ZN6S204C63v40Ev();
extern void _ZN6S204C63v41Ev();
extern void _ZN6S204C63v42Ev();
extern void _ZN6S204C63v43Ev();
extern void _ZN6S204C63v44Ev();
extern void _ZN6S204C63v45Ev();
extern void _ZN6S204C63v46Ev();
extern void _ZN6S204C63v47Ev();
extern void _ZN6S204C63v48Ev();
extern void _ZN6S204C63v49Ev();
extern void _ZN6S204C63v50Ev();
extern void _ZN6S204C63v51Ev();
extern void _ZN6S204C63v52Ev();
extern void _ZN6S204C63v53Ev();
extern void _ZN6S204C63v54Ev();
extern void _ZN6S204C63v55Ev();
extern void _ZN6S204C63v56Ev();
extern void _ZN6S204C63v57Ev();
extern void _ZN6S204C63v58Ev();
extern void _ZN6S204C63v59Ev();
extern void _ZN6S204C63v60Ev();
extern void _ZN6S204C63v61Ev();
extern void _ZN6S204C63v62Ev();
extern void _ZN6S204C63v63Ev();
extern void _ZN6S204C63v64Ev();
extern void _ZN6S204C63v65Ev();
extern void _ZN6S204C63v66Ev();
extern void _ZN6S204C63v67Ev();
extern void _ZN6S204C53v68Ev();
extern void _ZN6S204C53v69Ev();
extern void _ZN6S204C53v70Ev();
extern void _ZN6S204C53v71Ev();
extern void _ZN6S204C53v72Ev();
extern void _ZN6S204C53v73Ev();
extern void _ZN6S204C53v74Ev();
extern void _ZN6S204C53v75Ev();
extern void _ZN6S204C53v76Ev();
extern void _ZN6S204C53v77Ev();
extern void _ZN6S204C53v78Ev();
extern void _ZN6S204C53v79Ev();
extern void _ZN6S204C53v80Ev();
extern void _ZN6S204C53v81Ev();
extern void _ZN6S204C53v82Ev();
extern void _ZN6S204C53v83Ev();
extern void _ZN6S204C53v84Ev();
extern void _ZN6S204C53v85Ev();
extern void _ZN6S204C53v86Ev();
extern void _ZN6S204C53v87Ev();
extern void _ZN6S204C53v88Ev();
extern void _ZN6S204C53v89Ev();
extern void _ZN6S204C43v90Ev();
extern void _ZN6S204C43v91Ev();
extern void _ZN6S204C43v92Ev();
extern void _ZN6S204C43v93Ev();
extern void _ZN6S204C43v94Ev();
extern void _ZN6S204C43v95Ev();
extern void _ZN6S204C43v96Ev();
extern void _ZN6S204C43v97Ev();
extern void _ZN6S204C43v98Ev();
extern void _ZN6S204C43v99Ev();
extern void _ZN6S204C44v100Ev();
extern void _ZN6S204C44v101Ev();
extern void _ZN6S204C44v102Ev();
extern void _ZN6S204C44v103Ev();
extern void _ZN6S204C44v104Ev();
extern void _ZN6S204C44v105Ev();
extern void _ZN6S204C44v106Ev();
extern void _ZN6S204C44v107Ev();
extern void _ZN6S204C44v108Ev();
extern void _ZN6S204C44v109Ev();
extern void _ZN9S204C3_nt4v110Ev();
extern void _ZN9S204C3_nt4v111Ev();
extern void _ZN9S204C3_nt4v112Ev();
extern void _ZN9S204C3_nt4v113Ev();
static  VTBL_ENTRY vtc_S204C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S204C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S204C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S204C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S204C62v4Ev,
  (VTBL_ENTRY)&_ZN6S204C62v5Ev,
  (VTBL_ENTRY)&_ZN6S204C62v6Ev,
  (VTBL_ENTRY)&_ZN6S204C62v7Ev,
  (VTBL_ENTRY)&_ZN6S204C62v8Ev,
  (VTBL_ENTRY)&_ZN6S204C62v9Ev,
  (VTBL_ENTRY)&_ZN6S204C63v10Ev,
  (VTBL_ENTRY)&_ZN6S204C63v11Ev,
  (VTBL_ENTRY)&_ZN6S204C63v12Ev,
  (VTBL_ENTRY)&_ZN6S204C63v13Ev,
  (VTBL_ENTRY)&_ZN6S204C63v14Ev,
  (VTBL_ENTRY)&_ZN6S204C63v15Ev,
  (VTBL_ENTRY)&_ZN6S204C63v16Ev,
  (VTBL_ENTRY)&_ZN6S204C63v17Ev,
  (VTBL_ENTRY)&_ZN6S204C63v18Ev,
  (VTBL_ENTRY)&_ZN6S204C63v19Ev,
  (VTBL_ENTRY)&_ZN6S204C63v20Ev,
  (VTBL_ENTRY)&_ZN6S204C63v21Ev,
  (VTBL_ENTRY)&_ZN6S204C63v22Ev,
  (VTBL_ENTRY)&_ZN6S204C63v23Ev,
  (VTBL_ENTRY)&_ZN6S204C63v24Ev,
  (VTBL_ENTRY)&_ZN6S204C63v25Ev,
  (VTBL_ENTRY)&_ZN6S204C63v26Ev,
  (VTBL_ENTRY)&_ZN6S204C63v27Ev,
  (VTBL_ENTRY)&_ZN6S204C63v28Ev,
  (VTBL_ENTRY)&_ZN6S204C63v29Ev,
  (VTBL_ENTRY)&_ZN6S204C63v30Ev,
  (VTBL_ENTRY)&_ZN6S204C63v31Ev,
  (VTBL_ENTRY)&_ZN6S204C63v32Ev,
  (VTBL_ENTRY)&_ZN6S204C63v33Ev,
  (VTBL_ENTRY)&_ZN6S204C63v34Ev,
  (VTBL_ENTRY)&_ZN6S204C63v35Ev,
  (VTBL_ENTRY)&_ZN6S204C63v36Ev,
  (VTBL_ENTRY)&_ZN6S204C63v37Ev,
  (VTBL_ENTRY)&_ZN6S204C63v38Ev,
  (VTBL_ENTRY)&_ZN6S204C63v39Ev,
  (VTBL_ENTRY)&_ZN6S204C63v40Ev,
  (VTBL_ENTRY)&_ZN6S204C63v41Ev,
  (VTBL_ENTRY)&_ZN6S204C63v42Ev,
  (VTBL_ENTRY)&_ZN6S204C63v43Ev,
  (VTBL_ENTRY)&_ZN6S204C63v44Ev,
  (VTBL_ENTRY)&_ZN6S204C63v45Ev,
  (VTBL_ENTRY)&_ZN6S204C63v46Ev,
  (VTBL_ENTRY)&_ZN6S204C63v47Ev,
  (VTBL_ENTRY)&_ZN6S204C63v48Ev,
  (VTBL_ENTRY)&_ZN6S204C63v49Ev,
  (VTBL_ENTRY)&_ZN6S204C63v50Ev,
  (VTBL_ENTRY)&_ZN6S204C63v51Ev,
  (VTBL_ENTRY)&_ZN6S204C63v52Ev,
  (VTBL_ENTRY)&_ZN6S204C63v53Ev,
  (VTBL_ENTRY)&_ZN6S204C63v54Ev,
  (VTBL_ENTRY)&_ZN6S204C63v55Ev,
  (VTBL_ENTRY)&_ZN6S204C63v56Ev,
  (VTBL_ENTRY)&_ZN6S204C63v57Ev,
  (VTBL_ENTRY)&_ZN6S204C63v58Ev,
  (VTBL_ENTRY)&_ZN6S204C63v59Ev,
  (VTBL_ENTRY)&_ZN6S204C63v60Ev,
  (VTBL_ENTRY)&_ZN6S204C63v61Ev,
  (VTBL_ENTRY)&_ZN6S204C63v62Ev,
  (VTBL_ENTRY)&_ZN6S204C63v63Ev,
  (VTBL_ENTRY)&_ZN6S204C63v64Ev,
  (VTBL_ENTRY)&_ZN6S204C63v65Ev,
  (VTBL_ENTRY)&_ZN6S204C63v66Ev,
  (VTBL_ENTRY)&_ZN6S204C63v67Ev,
  (VTBL_ENTRY)&_ZN6S204C53v68Ev,
  (VTBL_ENTRY)&_ZN6S204C53v69Ev,
  (VTBL_ENTRY)&_ZN6S204C53v70Ev,
  (VTBL_ENTRY)&_ZN6S204C53v71Ev,
  (VTBL_ENTRY)&_ZN6S204C53v72Ev,
  (VTBL_ENTRY)&_ZN6S204C53v73Ev,
  (VTBL_ENTRY)&_ZN6S204C53v74Ev,
  (VTBL_ENTRY)&_ZN6S204C53v75Ev,
  (VTBL_ENTRY)&_ZN6S204C53v76Ev,
  (VTBL_ENTRY)&_ZN6S204C53v77Ev,
  (VTBL_ENTRY)&_ZN6S204C53v78Ev,
  (VTBL_ENTRY)&_ZN6S204C53v79Ev,
  (VTBL_ENTRY)&_ZN6S204C53v80Ev,
  (VTBL_ENTRY)&_ZN6S204C53v81Ev,
  (VTBL_ENTRY)&_ZN6S204C53v82Ev,
  (VTBL_ENTRY)&_ZN6S204C53v83Ev,
  (VTBL_ENTRY)&_ZN6S204C53v84Ev,
  (VTBL_ENTRY)&_ZN6S204C53v85Ev,
  (VTBL_ENTRY)&_ZN6S204C53v86Ev,
  (VTBL_ENTRY)&_ZN6S204C53v87Ev,
  (VTBL_ENTRY)&_ZN6S204C53v88Ev,
  (VTBL_ENTRY)&_ZN6S204C53v89Ev,
  (VTBL_ENTRY)&_ZN6S204C43v90Ev,
  (VTBL_ENTRY)&_ZN6S204C43v91Ev,
  (VTBL_ENTRY)&_ZN6S204C43v92Ev,
  (VTBL_ENTRY)&_ZN6S204C43v93Ev,
  (VTBL_ENTRY)&_ZN6S204C43v94Ev,
  (VTBL_ENTRY)&_ZN6S204C43v95Ev,
  (VTBL_ENTRY)&_ZN6S204C43v96Ev,
  (VTBL_ENTRY)&_ZN6S204C43v97Ev,
  (VTBL_ENTRY)&_ZN6S204C43v98Ev,
  (VTBL_ENTRY)&_ZN6S204C43v99Ev,
  (VTBL_ENTRY)&_ZN6S204C44v100Ev,
  (VTBL_ENTRY)&_ZN6S204C44v101Ev,
  (VTBL_ENTRY)&_ZN6S204C44v102Ev,
  (VTBL_ENTRY)&_ZN6S204C44v103Ev,
  (VTBL_ENTRY)&_ZN6S204C44v104Ev,
  (VTBL_ENTRY)&_ZN6S204C44v105Ev,
  (VTBL_ENTRY)&_ZN6S204C44v106Ev,
  (VTBL_ENTRY)&_ZN6S204C44v107Ev,
  (VTBL_ENTRY)&_ZN6S204C44v108Ev,
  (VTBL_ENTRY)&_ZN6S204C44v109Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S204C3_nt[];
VTBL_ENTRY *P__ZTI9S204C3_nt = _ZTI9S204C3_nt; 
extern  VTBL_ENTRY _ZTV9S204C3_nt[];
Class_Descriptor cd_S204C3_nt = {  "S204C3_nt", // class name
  bases_S204C3_nt, 3,
  &(vtc_S204C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S204C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S204C3_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  S204C2_nt  : S204C3_nt {
  int s204c2f0;
  unsigned int s204c2f1:1;
  virtual  ~S204C2_nt(); // _ZN9S204C2_ntD1Ev
  virtual void  v114(); // _ZN9S204C2_nt4v114Ev
  virtual void  v115(); // _ZN9S204C2_nt4v115Ev
  virtual void  v116(); // _ZN9S204C2_nt4v116Ev
  virtual void  v117(); // _ZN9S204C2_nt4v117Ev
  virtual void  v118(); // _ZN9S204C2_nt4v118Ev
  virtual void  v119(); // _ZN9S204C2_nt4v119Ev
  virtual void  v120(); // _ZN9S204C2_nt4v120Ev
  virtual void  v121(); // _ZN9S204C2_nt4v121Ev
  S204C2_nt(); // tgen
};
//SIG(-1 S204C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fi[2] Fp Fi[2] FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} FC7 FC11{ m} FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 Fi:1 Fi:1 Fi:1 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v115 v116 v117 v118 FC6 Fi:1 FC8} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fi:1}


 S204C2_nt ::~S204C2_nt(){ note_dtor("S204C2_nt", this);}
void  S204C2_nt ::v114(){vfunc_called(this, "_ZN9S204C2_nt4v114Ev");}
void  S204C2_nt ::v115(){vfunc_called(this, "_ZN9S204C2_nt4v115Ev");}
void  S204C2_nt ::v116(){vfunc_called(this, "_ZN9S204C2_nt4v116Ev");}
void  S204C2_nt ::v117(){vfunc_called(this, "_ZN9S204C2_nt4v117Ev");}
void  S204C2_nt ::v118(){vfunc_called(this, "_ZN9S204C2_nt4v118Ev");}
void  S204C2_nt ::v119(){vfunc_called(this, "_ZN9S204C2_nt4v119Ev");}
void  S204C2_nt ::v120(){vfunc_called(this, "_ZN9S204C2_nt4v120Ev");}
void  S204C2_nt ::v121(){vfunc_called(this, "_ZN9S204C2_nt4v121Ev");}
S204C2_nt ::S204C2_nt(){ note_ctor("S204C2_nt", this);} // tgen

//skip512 S204C2_nt

#else // __cplusplus

extern void _ZN9S204C2_ntC1Ev();
extern void _ZN9S204C2_ntD1Ev();
Name_Map name_map_S204C2_nt[] = {
  NSPAIR(_ZN9S204C2_ntC1Ev),
  NSPAIR(_ZN9S204C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S204C6;
extern VTBL_ENTRY _ZTI6S204C6[];
extern  VTBL_ENTRY _ZTV6S204C6[];
extern Class_Descriptor cd_S204C5;
extern VTBL_ENTRY _ZTI6S204C5[];
extern  VTBL_ENTRY _ZTV6S204C5[];
extern Class_Descriptor cd_S204C4;
extern VTBL_ENTRY _ZTI6S204C4[];
extern  VTBL_ENTRY _ZTV6S204C4[];
extern Class_Descriptor cd_S204C3_nt;
extern VTBL_ENTRY _ZTI9S204C3_nt[];
extern  VTBL_ENTRY _ZTV9S204C3_nt[];
static Base_Class bases_S204C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S204C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S204C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S204C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S204C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S204C2_nt[];
extern void _ZN9S204C2_ntD1Ev();
extern void _ZN9S204C2_ntD0Ev();
extern void _ZN6S204C62v4Ev();
extern void _ZN6S204C62v5Ev();
extern void _ZN6S204C62v6Ev();
extern void _ZN6S204C62v7Ev();
extern void _ZN6S204C62v8Ev();
extern void _ZN6S204C62v9Ev();
extern void _ZN6S204C63v10Ev();
extern void _ZN6S204C63v11Ev();
extern void _ZN6S204C63v12Ev();
extern void _ZN6S204C63v13Ev();
extern void _ZN6S204C63v14Ev();
extern void _ZN6S204C63v15Ev();
extern void _ZN6S204C63v16Ev();
extern void _ZN6S204C63v17Ev();
extern void _ZN6S204C63v18Ev();
extern void _ZN6S204C63v19Ev();
extern void _ZN6S204C63v20Ev();
extern void _ZN6S204C63v21Ev();
extern void _ZN6S204C63v22Ev();
extern void _ZN6S204C63v23Ev();
extern void _ZN6S204C63v24Ev();
extern void _ZN6S204C63v25Ev();
extern void _ZN6S204C63v26Ev();
extern void _ZN6S204C63v27Ev();
extern void _ZN6S204C63v28Ev();
extern void _ZN6S204C63v29Ev();
extern void _ZN6S204C63v30Ev();
extern void _ZN6S204C63v31Ev();
extern void _ZN6S204C63v32Ev();
extern void _ZN6S204C63v33Ev();
extern void _ZN6S204C63v34Ev();
extern void _ZN6S204C63v35Ev();
extern void _ZN6S204C63v36Ev();
extern void _ZN6S204C63v37Ev();
extern void _ZN6S204C63v38Ev();
extern void _ZN6S204C63v39Ev();
extern void _ZN6S204C63v40Ev();
extern void _ZN6S204C63v41Ev();
extern void _ZN6S204C63v42Ev();
extern void _ZN6S204C63v43Ev();
extern void _ZN6S204C63v44Ev();
extern void _ZN6S204C63v45Ev();
extern void _ZN6S204C63v46Ev();
extern void _ZN6S204C63v47Ev();
extern void _ZN6S204C63v48Ev();
extern void _ZN6S204C63v49Ev();
extern void _ZN6S204C63v50Ev();
extern void _ZN6S204C63v51Ev();
extern void _ZN6S204C63v52Ev();
extern void _ZN6S204C63v53Ev();
extern void _ZN6S204C63v54Ev();
extern void _ZN6S204C63v55Ev();
extern void _ZN6S204C63v56Ev();
extern void _ZN6S204C63v57Ev();
extern void _ZN6S204C63v58Ev();
extern void _ZN6S204C63v59Ev();
extern void _ZN6S204C63v60Ev();
extern void _ZN6S204C63v61Ev();
extern void _ZN6S204C63v62Ev();
extern void _ZN6S204C63v63Ev();
extern void _ZN6S204C63v64Ev();
extern void _ZN6S204C63v65Ev();
extern void _ZN6S204C63v66Ev();
extern void _ZN6S204C63v67Ev();
extern void _ZN6S204C53v68Ev();
extern void _ZN6S204C53v69Ev();
extern void _ZN6S204C53v70Ev();
extern void _ZN6S204C53v71Ev();
extern void _ZN6S204C53v72Ev();
extern void _ZN6S204C53v73Ev();
extern void _ZN6S204C53v74Ev();
extern void _ZN6S204C53v75Ev();
extern void _ZN6S204C53v76Ev();
extern void _ZN6S204C53v77Ev();
extern void _ZN6S204C53v78Ev();
extern void _ZN6S204C53v79Ev();
extern void _ZN6S204C53v80Ev();
extern void _ZN6S204C53v81Ev();
extern void _ZN6S204C53v82Ev();
extern void _ZN6S204C53v83Ev();
extern void _ZN6S204C53v84Ev();
extern void _ZN6S204C53v85Ev();
extern void _ZN6S204C53v86Ev();
extern void _ZN6S204C53v87Ev();
extern void _ZN6S204C53v88Ev();
extern void _ZN6S204C53v89Ev();
extern void _ZN6S204C43v90Ev();
extern void _ZN6S204C43v91Ev();
extern void _ZN6S204C43v92Ev();
extern void _ZN6S204C43v93Ev();
extern void _ZN6S204C43v94Ev();
extern void _ZN6S204C43v95Ev();
extern void _ZN6S204C43v96Ev();
extern void _ZN6S204C43v97Ev();
extern void _ZN6S204C43v98Ev();
extern void _ZN6S204C43v99Ev();
extern void _ZN6S204C44v100Ev();
extern void _ZN6S204C44v101Ev();
extern void _ZN6S204C44v102Ev();
extern void _ZN6S204C44v103Ev();
extern void _ZN6S204C44v104Ev();
extern void _ZN6S204C44v105Ev();
extern void _ZN6S204C44v106Ev();
extern void _ZN6S204C44v107Ev();
extern void _ZN6S204C44v108Ev();
extern void _ZN6S204C44v109Ev();
extern void _ZN9S204C3_nt4v110Ev();
extern void _ZN9S204C3_nt4v111Ev();
extern void _ZN9S204C3_nt4v112Ev();
extern void _ZN9S204C3_nt4v113Ev();
extern void _ZN9S204C2_nt4v114Ev();
extern void _ZN9S204C2_nt4v115Ev();
extern void _ZN9S204C2_nt4v116Ev();
extern void _ZN9S204C2_nt4v117Ev();
extern void _ZN9S204C2_nt4v118Ev();
extern void _ZN9S204C2_nt4v119Ev();
extern void _ZN9S204C2_nt4v120Ev();
extern void _ZN9S204C2_nt4v121Ev();
static  VTBL_ENTRY vtc_S204C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S204C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S204C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S204C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S204C62v4Ev,
  (VTBL_ENTRY)&_ZN6S204C62v5Ev,
  (VTBL_ENTRY)&_ZN6S204C62v6Ev,
  (VTBL_ENTRY)&_ZN6S204C62v7Ev,
  (VTBL_ENTRY)&_ZN6S204C62v8Ev,
  (VTBL_ENTRY)&_ZN6S204C62v9Ev,
  (VTBL_ENTRY)&_ZN6S204C63v10Ev,
  (VTBL_ENTRY)&_ZN6S204C63v11Ev,
  (VTBL_ENTRY)&_ZN6S204C63v12Ev,
  (VTBL_ENTRY)&_ZN6S204C63v13Ev,
  (VTBL_ENTRY)&_ZN6S204C63v14Ev,
  (VTBL_ENTRY)&_ZN6S204C63v15Ev,
  (VTBL_ENTRY)&_ZN6S204C63v16Ev,
  (VTBL_ENTRY)&_ZN6S204C63v17Ev,
  (VTBL_ENTRY)&_ZN6S204C63v18Ev,
  (VTBL_ENTRY)&_ZN6S204C63v19Ev,
  (VTBL_ENTRY)&_ZN6S204C63v20Ev,
  (VTBL_ENTRY)&_ZN6S204C63v21Ev,
  (VTBL_ENTRY)&_ZN6S204C63v22Ev,
  (VTBL_ENTRY)&_ZN6S204C63v23Ev,
  (VTBL_ENTRY)&_ZN6S204C63v24Ev,
  (VTBL_ENTRY)&_ZN6S204C63v25Ev,
  (VTBL_ENTRY)&_ZN6S204C63v26Ev,
  (VTBL_ENTRY)&_ZN6S204C63v27Ev,
  (VTBL_ENTRY)&_ZN6S204C63v28Ev,
  (VTBL_ENTRY)&_ZN6S204C63v29Ev,
  (VTBL_ENTRY)&_ZN6S204C63v30Ev,
  (VTBL_ENTRY)&_ZN6S204C63v31Ev,
  (VTBL_ENTRY)&_ZN6S204C63v32Ev,
  (VTBL_ENTRY)&_ZN6S204C63v33Ev,
  (VTBL_ENTRY)&_ZN6S204C63v34Ev,
  (VTBL_ENTRY)&_ZN6S204C63v35Ev,
  (VTBL_ENTRY)&_ZN6S204C63v36Ev,
  (VTBL_ENTRY)&_ZN6S204C63v37Ev,
  (VTBL_ENTRY)&_ZN6S204C63v38Ev,
  (VTBL_ENTRY)&_ZN6S204C63v39Ev,
  (VTBL_ENTRY)&_ZN6S204C63v40Ev,
  (VTBL_ENTRY)&_ZN6S204C63v41Ev,
  (VTBL_ENTRY)&_ZN6S204C63v42Ev,
  (VTBL_ENTRY)&_ZN6S204C63v43Ev,
  (VTBL_ENTRY)&_ZN6S204C63v44Ev,
  (VTBL_ENTRY)&_ZN6S204C63v45Ev,
  (VTBL_ENTRY)&_ZN6S204C63v46Ev,
  (VTBL_ENTRY)&_ZN6S204C63v47Ev,
  (VTBL_ENTRY)&_ZN6S204C63v48Ev,
  (VTBL_ENTRY)&_ZN6S204C63v49Ev,
  (VTBL_ENTRY)&_ZN6S204C63v50Ev,
  (VTBL_ENTRY)&_ZN6S204C63v51Ev,
  (VTBL_ENTRY)&_ZN6S204C63v52Ev,
  (VTBL_ENTRY)&_ZN6S204C63v53Ev,
  (VTBL_ENTRY)&_ZN6S204C63v54Ev,
  (VTBL_ENTRY)&_ZN6S204C63v55Ev,
  (VTBL_ENTRY)&_ZN6S204C63v56Ev,
  (VTBL_ENTRY)&_ZN6S204C63v57Ev,
  (VTBL_ENTRY)&_ZN6S204C63v58Ev,
  (VTBL_ENTRY)&_ZN6S204C63v59Ev,
  (VTBL_ENTRY)&_ZN6S204C63v60Ev,
  (VTBL_ENTRY)&_ZN6S204C63v61Ev,
  (VTBL_ENTRY)&_ZN6S204C63v62Ev,
  (VTBL_ENTRY)&_ZN6S204C63v63Ev,
  (VTBL_ENTRY)&_ZN6S204C63v64Ev,
  (VTBL_ENTRY)&_ZN6S204C63v65Ev,
  (VTBL_ENTRY)&_ZN6S204C63v66Ev,
  (VTBL_ENTRY)&_ZN6S204C63v67Ev,
  (VTBL_ENTRY)&_ZN6S204C53v68Ev,
  (VTBL_ENTRY)&_ZN6S204C53v69Ev,
  (VTBL_ENTRY)&_ZN6S204C53v70Ev,
  (VTBL_ENTRY)&_ZN6S204C53v71Ev,
  (VTBL_ENTRY)&_ZN6S204C53v72Ev,
  (VTBL_ENTRY)&_ZN6S204C53v73Ev,
  (VTBL_ENTRY)&_ZN6S204C53v74Ev,
  (VTBL_ENTRY)&_ZN6S204C53v75Ev,
  (VTBL_ENTRY)&_ZN6S204C53v76Ev,
  (VTBL_ENTRY)&_ZN6S204C53v77Ev,
  (VTBL_ENTRY)&_ZN6S204C53v78Ev,
  (VTBL_ENTRY)&_ZN6S204C53v79Ev,
  (VTBL_ENTRY)&_ZN6S204C53v80Ev,
  (VTBL_ENTRY)&_ZN6S204C53v81Ev,
  (VTBL_ENTRY)&_ZN6S204C53v82Ev,
  (VTBL_ENTRY)&_ZN6S204C53v83Ev,
  (VTBL_ENTRY)&_ZN6S204C53v84Ev,
  (VTBL_ENTRY)&_ZN6S204C53v85Ev,
  (VTBL_ENTRY)&_ZN6S204C53v86Ev,
  (VTBL_ENTRY)&_ZN6S204C53v87Ev,
  (VTBL_ENTRY)&_ZN6S204C53v88Ev,
  (VTBL_ENTRY)&_ZN6S204C53v89Ev,
  (VTBL_ENTRY)&_ZN6S204C43v90Ev,
  (VTBL_ENTRY)&_ZN6S204C43v91Ev,
  (VTBL_ENTRY)&_ZN6S204C43v92Ev,
  (VTBL_ENTRY)&_ZN6S204C43v93Ev,
  (VTBL_ENTRY)&_ZN6S204C43v94Ev,
  (VTBL_ENTRY)&_ZN6S204C43v95Ev,
  (VTBL_ENTRY)&_ZN6S204C43v96Ev,
  (VTBL_ENTRY)&_ZN6S204C43v97Ev,
  (VTBL_ENTRY)&_ZN6S204C43v98Ev,
  (VTBL_ENTRY)&_ZN6S204C43v99Ev,
  (VTBL_ENTRY)&_ZN6S204C44v100Ev,
  (VTBL_ENTRY)&_ZN6S204C44v101Ev,
  (VTBL_ENTRY)&_ZN6S204C44v102Ev,
  (VTBL_ENTRY)&_ZN6S204C44v103Ev,
  (VTBL_ENTRY)&_ZN6S204C44v104Ev,
  (VTBL_ENTRY)&_ZN6S204C44v105Ev,
  (VTBL_ENTRY)&_ZN6S204C44v106Ev,
  (VTBL_ENTRY)&_ZN6S204C44v107Ev,
  (VTBL_ENTRY)&_ZN6S204C44v108Ev,
  (VTBL_ENTRY)&_ZN6S204C44v109Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v121Ev,
};
extern VTBL_ENTRY _ZTI9S204C2_nt[];
VTBL_ENTRY *P__ZTI9S204C2_nt = _ZTI9S204C2_nt; 
extern  VTBL_ENTRY _ZTV9S204C2_nt[];
Class_Descriptor cd_S204C2_nt = {  "S204C2_nt", // class name
  bases_S204C2_nt, 4,
  &(vtc_S204C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI9S204C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S204C2_nt),122, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S204C1 ::~S204C1(){ note_dtor("S204C1", this);}
void  S204C1 ::v1(){vfunc_called(this, "_ZN6S204C12v1Ev");}
void  S204C1 ::v2(){vfunc_called(this, "_ZN6S204C12v2Ev");}
void  S204C1 ::v3(){vfunc_called(this, "_ZN6S204C12v3Ev");}
S204C1 ::S204C1(){ note_ctor("S204C1", this);} // tgen

static void Test_S204C1()
{
  extern Class_Descriptor cd_S204C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,60)];
    init_test(&cd_S204C1, buf);
    S204C1 *dp, &lv = *(dp=new (buf) S204C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,236), "sizeof(S204C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S204C1)");
    check_base_class_offset(lv, (S204C6*)(S204C5*)(S204C4*)(S204C3_nt*)(S204C2_nt*), 0, "S204C1");
    check_base_class_offset(lv, (S204C5*)(S204C4*)(S204C3_nt*)(S204C2_nt*), 0, "S204C1");
    check_base_class_offset(lv, (S204C4*)(S204C3_nt*)(S204C2_nt*), 0, "S204C1");
    check_base_class_offset(lv, (S204C3_nt*)(S204C2_nt*), 0, "S204C1");
    check_base_class_offset(lv, (S204C2_nt*), 0, "S204C1");
    check_field_offset(lv, s204c1f0, ABISELECT(304,228), "S204C1.s204c1f0");
    test_class_info(&lv, &cd_S204C1);
    dp->~S204C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS204C1(Test_S204C1, "S204C1", ABISELECT(312,236));

#else // __cplusplus

extern void _ZN6S204C1C1Ev();
extern void _ZN6S204C1D1Ev();
Name_Map name_map_S204C1[] = {
  NSPAIR(_ZN6S204C1C1Ev),
  NSPAIR(_ZN6S204C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S204C6;
extern VTBL_ENTRY _ZTI6S204C6[];
extern  VTBL_ENTRY _ZTV6S204C6[];
extern Class_Descriptor cd_S204C5;
extern VTBL_ENTRY _ZTI6S204C5[];
extern  VTBL_ENTRY _ZTV6S204C5[];
extern Class_Descriptor cd_S204C4;
extern VTBL_ENTRY _ZTI6S204C4[];
extern  VTBL_ENTRY _ZTV6S204C4[];
extern Class_Descriptor cd_S204C3_nt;
extern VTBL_ENTRY _ZTI9S204C3_nt[];
extern  VTBL_ENTRY _ZTV9S204C3_nt[];
extern Class_Descriptor cd_S204C2_nt;
extern VTBL_ENTRY _ZTI9S204C2_nt[];
extern  VTBL_ENTRY _ZTV9S204C2_nt[];
static Base_Class bases_S204C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S204C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S204C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S204C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S204C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S204C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S204C1[];
extern void _ZN6S204C1D1Ev();
extern void _ZN6S204C1D0Ev();
extern void _ZN6S204C62v4Ev();
extern void _ZN6S204C62v5Ev();
extern void _ZN6S204C62v6Ev();
extern void _ZN6S204C62v7Ev();
extern void _ZN6S204C62v8Ev();
extern void _ZN6S204C62v9Ev();
extern void _ZN6S204C63v10Ev();
extern void _ZN6S204C63v11Ev();
extern void _ZN6S204C63v12Ev();
extern void _ZN6S204C63v13Ev();
extern void _ZN6S204C63v14Ev();
extern void _ZN6S204C63v15Ev();
extern void _ZN6S204C63v16Ev();
extern void _ZN6S204C63v17Ev();
extern void _ZN6S204C63v18Ev();
extern void _ZN6S204C63v19Ev();
extern void _ZN6S204C63v20Ev();
extern void _ZN6S204C63v21Ev();
extern void _ZN6S204C63v22Ev();
extern void _ZN6S204C63v23Ev();
extern void _ZN6S204C63v24Ev();
extern void _ZN6S204C63v25Ev();
extern void _ZN6S204C63v26Ev();
extern void _ZN6S204C63v27Ev();
extern void _ZN6S204C63v28Ev();
extern void _ZN6S204C63v29Ev();
extern void _ZN6S204C63v30Ev();
extern void _ZN6S204C63v31Ev();
extern void _ZN6S204C63v32Ev();
extern void _ZN6S204C63v33Ev();
extern void _ZN6S204C63v34Ev();
extern void _ZN6S204C63v35Ev();
extern void _ZN6S204C63v36Ev();
extern void _ZN6S204C63v37Ev();
extern void _ZN6S204C63v38Ev();
extern void _ZN6S204C63v39Ev();
extern void _ZN6S204C63v40Ev();
extern void _ZN6S204C63v41Ev();
extern void _ZN6S204C63v42Ev();
extern void _ZN6S204C63v43Ev();
extern void _ZN6S204C63v44Ev();
extern void _ZN6S204C63v45Ev();
extern void _ZN6S204C63v46Ev();
extern void _ZN6S204C63v47Ev();
extern void _ZN6S204C63v48Ev();
extern void _ZN6S204C63v49Ev();
extern void _ZN6S204C63v50Ev();
extern void _ZN6S204C63v51Ev();
extern void _ZN6S204C63v52Ev();
extern void _ZN6S204C63v53Ev();
extern void _ZN6S204C63v54Ev();
extern void _ZN6S204C63v55Ev();
extern void _ZN6S204C63v56Ev();
extern void _ZN6S204C63v57Ev();
extern void _ZN6S204C63v58Ev();
extern void _ZN6S204C63v59Ev();
extern void _ZN6S204C63v60Ev();
extern void _ZN6S204C63v61Ev();
extern void _ZN6S204C63v62Ev();
extern void _ZN6S204C63v63Ev();
extern void _ZN6S204C63v64Ev();
extern void _ZN6S204C63v65Ev();
extern void _ZN6S204C63v66Ev();
extern void _ZN6S204C63v67Ev();
extern void _ZN6S204C53v68Ev();
extern void _ZN6S204C53v69Ev();
extern void _ZN6S204C53v70Ev();
extern void _ZN6S204C53v71Ev();
extern void _ZN6S204C53v72Ev();
extern void _ZN6S204C53v73Ev();
extern void _ZN6S204C53v74Ev();
extern void _ZN6S204C53v75Ev();
extern void _ZN6S204C53v76Ev();
extern void _ZN6S204C53v77Ev();
extern void _ZN6S204C53v78Ev();
extern void _ZN6S204C53v79Ev();
extern void _ZN6S204C53v80Ev();
extern void _ZN6S204C53v81Ev();
extern void _ZN6S204C53v82Ev();
extern void _ZN6S204C53v83Ev();
extern void _ZN6S204C53v84Ev();
extern void _ZN6S204C53v85Ev();
extern void _ZN6S204C53v86Ev();
extern void _ZN6S204C53v87Ev();
extern void _ZN6S204C53v88Ev();
extern void _ZN6S204C53v89Ev();
extern void _ZN6S204C43v90Ev();
extern void _ZN6S204C43v91Ev();
extern void _ZN6S204C43v92Ev();
extern void _ZN6S204C43v93Ev();
extern void _ZN6S204C43v94Ev();
extern void _ZN6S204C43v95Ev();
extern void _ZN6S204C43v96Ev();
extern void _ZN6S204C43v97Ev();
extern void _ZN6S204C43v98Ev();
extern void _ZN6S204C43v99Ev();
extern void _ZN6S204C44v100Ev();
extern void _ZN6S204C44v101Ev();
extern void _ZN6S204C44v102Ev();
extern void _ZN6S204C44v103Ev();
extern void _ZN6S204C44v104Ev();
extern void _ZN6S204C44v105Ev();
extern void _ZN6S204C44v106Ev();
extern void _ZN6S204C44v107Ev();
extern void _ZN6S204C44v108Ev();
extern void _ZN6S204C44v109Ev();
extern void _ZN9S204C3_nt4v110Ev();
extern void _ZN9S204C3_nt4v111Ev();
extern void _ZN9S204C3_nt4v112Ev();
extern void _ZN9S204C3_nt4v113Ev();
extern void _ZN9S204C2_nt4v114Ev();
extern void _ZN9S204C2_nt4v115Ev();
extern void _ZN9S204C2_nt4v116Ev();
extern void _ZN9S204C2_nt4v117Ev();
extern void _ZN9S204C2_nt4v118Ev();
extern void _ZN9S204C2_nt4v119Ev();
extern void _ZN9S204C2_nt4v120Ev();
extern void _ZN9S204C2_nt4v121Ev();
extern void _ZN6S204C12v1Ev();
extern void _ZN6S204C12v2Ev();
extern void _ZN6S204C12v3Ev();
static  VTBL_ENTRY vtc_S204C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S204C1[0]),
  (VTBL_ENTRY)&_ZN6S204C1D1Ev,
  (VTBL_ENTRY)&_ZN6S204C1D0Ev,
  (VTBL_ENTRY)&_ZN6S204C62v4Ev,
  (VTBL_ENTRY)&_ZN6S204C62v5Ev,
  (VTBL_ENTRY)&_ZN6S204C62v6Ev,
  (VTBL_ENTRY)&_ZN6S204C62v7Ev,
  (VTBL_ENTRY)&_ZN6S204C62v8Ev,
  (VTBL_ENTRY)&_ZN6S204C62v9Ev,
  (VTBL_ENTRY)&_ZN6S204C63v10Ev,
  (VTBL_ENTRY)&_ZN6S204C63v11Ev,
  (VTBL_ENTRY)&_ZN6S204C63v12Ev,
  (VTBL_ENTRY)&_ZN6S204C63v13Ev,
  (VTBL_ENTRY)&_ZN6S204C63v14Ev,
  (VTBL_ENTRY)&_ZN6S204C63v15Ev,
  (VTBL_ENTRY)&_ZN6S204C63v16Ev,
  (VTBL_ENTRY)&_ZN6S204C63v17Ev,
  (VTBL_ENTRY)&_ZN6S204C63v18Ev,
  (VTBL_ENTRY)&_ZN6S204C63v19Ev,
  (VTBL_ENTRY)&_ZN6S204C63v20Ev,
  (VTBL_ENTRY)&_ZN6S204C63v21Ev,
  (VTBL_ENTRY)&_ZN6S204C63v22Ev,
  (VTBL_ENTRY)&_ZN6S204C63v23Ev,
  (VTBL_ENTRY)&_ZN6S204C63v24Ev,
  (VTBL_ENTRY)&_ZN6S204C63v25Ev,
  (VTBL_ENTRY)&_ZN6S204C63v26Ev,
  (VTBL_ENTRY)&_ZN6S204C63v27Ev,
  (VTBL_ENTRY)&_ZN6S204C63v28Ev,
  (VTBL_ENTRY)&_ZN6S204C63v29Ev,
  (VTBL_ENTRY)&_ZN6S204C63v30Ev,
  (VTBL_ENTRY)&_ZN6S204C63v31Ev,
  (VTBL_ENTRY)&_ZN6S204C63v32Ev,
  (VTBL_ENTRY)&_ZN6S204C63v33Ev,
  (VTBL_ENTRY)&_ZN6S204C63v34Ev,
  (VTBL_ENTRY)&_ZN6S204C63v35Ev,
  (VTBL_ENTRY)&_ZN6S204C63v36Ev,
  (VTBL_ENTRY)&_ZN6S204C63v37Ev,
  (VTBL_ENTRY)&_ZN6S204C63v38Ev,
  (VTBL_ENTRY)&_ZN6S204C63v39Ev,
  (VTBL_ENTRY)&_ZN6S204C63v40Ev,
  (VTBL_ENTRY)&_ZN6S204C63v41Ev,
  (VTBL_ENTRY)&_ZN6S204C63v42Ev,
  (VTBL_ENTRY)&_ZN6S204C63v43Ev,
  (VTBL_ENTRY)&_ZN6S204C63v44Ev,
  (VTBL_ENTRY)&_ZN6S204C63v45Ev,
  (VTBL_ENTRY)&_ZN6S204C63v46Ev,
  (VTBL_ENTRY)&_ZN6S204C63v47Ev,
  (VTBL_ENTRY)&_ZN6S204C63v48Ev,
  (VTBL_ENTRY)&_ZN6S204C63v49Ev,
  (VTBL_ENTRY)&_ZN6S204C63v50Ev,
  (VTBL_ENTRY)&_ZN6S204C63v51Ev,
  (VTBL_ENTRY)&_ZN6S204C63v52Ev,
  (VTBL_ENTRY)&_ZN6S204C63v53Ev,
  (VTBL_ENTRY)&_ZN6S204C63v54Ev,
  (VTBL_ENTRY)&_ZN6S204C63v55Ev,
  (VTBL_ENTRY)&_ZN6S204C63v56Ev,
  (VTBL_ENTRY)&_ZN6S204C63v57Ev,
  (VTBL_ENTRY)&_ZN6S204C63v58Ev,
  (VTBL_ENTRY)&_ZN6S204C63v59Ev,
  (VTBL_ENTRY)&_ZN6S204C63v60Ev,
  (VTBL_ENTRY)&_ZN6S204C63v61Ev,
  (VTBL_ENTRY)&_ZN6S204C63v62Ev,
  (VTBL_ENTRY)&_ZN6S204C63v63Ev,
  (VTBL_ENTRY)&_ZN6S204C63v64Ev,
  (VTBL_ENTRY)&_ZN6S204C63v65Ev,
  (VTBL_ENTRY)&_ZN6S204C63v66Ev,
  (VTBL_ENTRY)&_ZN6S204C63v67Ev,
  (VTBL_ENTRY)&_ZN6S204C53v68Ev,
  (VTBL_ENTRY)&_ZN6S204C53v69Ev,
  (VTBL_ENTRY)&_ZN6S204C53v70Ev,
  (VTBL_ENTRY)&_ZN6S204C53v71Ev,
  (VTBL_ENTRY)&_ZN6S204C53v72Ev,
  (VTBL_ENTRY)&_ZN6S204C53v73Ev,
  (VTBL_ENTRY)&_ZN6S204C53v74Ev,
  (VTBL_ENTRY)&_ZN6S204C53v75Ev,
  (VTBL_ENTRY)&_ZN6S204C53v76Ev,
  (VTBL_ENTRY)&_ZN6S204C53v77Ev,
  (VTBL_ENTRY)&_ZN6S204C53v78Ev,
  (VTBL_ENTRY)&_ZN6S204C53v79Ev,
  (VTBL_ENTRY)&_ZN6S204C53v80Ev,
  (VTBL_ENTRY)&_ZN6S204C53v81Ev,
  (VTBL_ENTRY)&_ZN6S204C53v82Ev,
  (VTBL_ENTRY)&_ZN6S204C53v83Ev,
  (VTBL_ENTRY)&_ZN6S204C53v84Ev,
  (VTBL_ENTRY)&_ZN6S204C53v85Ev,
  (VTBL_ENTRY)&_ZN6S204C53v86Ev,
  (VTBL_ENTRY)&_ZN6S204C53v87Ev,
  (VTBL_ENTRY)&_ZN6S204C53v88Ev,
  (VTBL_ENTRY)&_ZN6S204C53v89Ev,
  (VTBL_ENTRY)&_ZN6S204C43v90Ev,
  (VTBL_ENTRY)&_ZN6S204C43v91Ev,
  (VTBL_ENTRY)&_ZN6S204C43v92Ev,
  (VTBL_ENTRY)&_ZN6S204C43v93Ev,
  (VTBL_ENTRY)&_ZN6S204C43v94Ev,
  (VTBL_ENTRY)&_ZN6S204C43v95Ev,
  (VTBL_ENTRY)&_ZN6S204C43v96Ev,
  (VTBL_ENTRY)&_ZN6S204C43v97Ev,
  (VTBL_ENTRY)&_ZN6S204C43v98Ev,
  (VTBL_ENTRY)&_ZN6S204C43v99Ev,
  (VTBL_ENTRY)&_ZN6S204C44v100Ev,
  (VTBL_ENTRY)&_ZN6S204C44v101Ev,
  (VTBL_ENTRY)&_ZN6S204C44v102Ev,
  (VTBL_ENTRY)&_ZN6S204C44v103Ev,
  (VTBL_ENTRY)&_ZN6S204C44v104Ev,
  (VTBL_ENTRY)&_ZN6S204C44v105Ev,
  (VTBL_ENTRY)&_ZN6S204C44v106Ev,
  (VTBL_ENTRY)&_ZN6S204C44v107Ev,
  (VTBL_ENTRY)&_ZN6S204C44v108Ev,
  (VTBL_ENTRY)&_ZN6S204C44v109Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S204C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S204C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN6S204C12v1Ev,
  (VTBL_ENTRY)&_ZN6S204C12v2Ev,
  (VTBL_ENTRY)&_ZN6S204C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S204C1[];
extern  VTBL_ENTRY _ZTV6S204C1[];
Class_Descriptor cd_S204C1 = {  "S204C1", // class name
  bases_S204C1, 5,
  &(vtc_S204C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,236), // object size
  NSPAIRA(_ZTI6S204C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S204C1),125, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S635C5  {
  int s635c5f0;
  __tsi64 s635c5f1;
  void *s635c5f2[4];
  int s635c5f3[2];
  void *s635c5f4;
  ::S3281C4_nt s635c5f5;
  void *s635c5f6[2];
  virtual  ~S635C5(); // _ZN6S635C5D1Ev
  virtual void  v5(); // _ZN6S635C52v5Ev
  virtual void  v6(); // _ZN6S635C52v6Ev
  virtual void  v7(); // _ZN6S635C52v7Ev
  virtual void  v8(); // _ZN6S635C52v8Ev
  virtual void  v9(); // _ZN6S635C52v9Ev
  virtual void  v10(); // _ZN6S635C53v10Ev
  virtual void  v11(); // _ZN6S635C53v11Ev
  virtual void  v12(); // _ZN6S635C53v12Ev
  virtual void  v13(); // _ZN6S635C53v13Ev
  virtual void  v14(); // _ZN6S635C53v14Ev
  virtual void  v15(); // _ZN6S635C53v15Ev
  virtual void  v16(); // _ZN6S635C53v16Ev
  virtual void  v17(); // _ZN6S635C53v17Ev
  virtual void  v18(); // _ZN6S635C53v18Ev
  virtual void  v19(); // _ZN6S635C53v19Ev
  virtual void  v20(); // _ZN6S635C53v20Ev
  virtual void  v21(); // _ZN6S635C53v21Ev
  virtual void  v22(); // _ZN6S635C53v22Ev
  virtual void  v23(); // _ZN6S635C53v23Ev
  virtual void  v24(); // _ZN6S635C53v24Ev
  virtual void  v25(); // _ZN6S635C53v25Ev
  virtual void  v26(); // _ZN6S635C53v26Ev
  virtual void  v27(); // _ZN6S635C53v27Ev
  virtual void  v28(); // _ZN6S635C53v28Ev
  virtual void  v29(); // _ZN6S635C53v29Ev
  virtual void  v30(); // _ZN6S635C53v30Ev
  virtual void  v31(); // _ZN6S635C53v31Ev
  virtual void  v32(); // _ZN6S635C53v32Ev
  virtual void  v33(); // _ZN6S635C53v33Ev
  virtual void  v34(); // _ZN6S635C53v34Ev
  virtual void  v35(); // _ZN6S635C53v35Ev
  virtual void  v36(); // _ZN6S635C53v36Ev
  virtual void  v37(); // _ZN6S635C53v37Ev
  virtual void  v38(); // _ZN6S635C53v38Ev
  virtual void  v39(); // _ZN6S635C53v39Ev
  virtual void  v40(); // _ZN6S635C53v40Ev
  virtual void  v41(); // _ZN6S635C53v41Ev
  virtual void  v42(); // _ZN6S635C53v42Ev
  virtual void  v43(); // _ZN6S635C53v43Ev
  virtual void  v44(); // _ZN6S635C53v44Ev
  virtual void  v45(); // _ZN6S635C53v45Ev
  virtual void  v46(); // _ZN6S635C53v46Ev
  virtual void  v47(); // _ZN6S635C53v47Ev
  virtual void  v48(); // _ZN6S635C53v48Ev
  virtual void  v49(); // _ZN6S635C53v49Ev
  virtual void  v50(); // _ZN6S635C53v50Ev
  virtual void  v51(); // _ZN6S635C53v51Ev
  virtual void  v52(); // _ZN6S635C53v52Ev
  virtual void  v53(); // _ZN6S635C53v53Ev
  virtual void  v54(); // _ZN6S635C53v54Ev
  virtual void  v55(); // _ZN6S635C53v55Ev
  virtual void  v56(); // _ZN6S635C53v56Ev
  virtual void  v57(); // _ZN6S635C53v57Ev
  virtual void  v58(); // _ZN6S635C53v58Ev
  virtual void  v59(); // _ZN6S635C53v59Ev
  virtual void  v60(); // _ZN6S635C53v60Ev
  virtual void  v61(); // _ZN6S635C53v61Ev
  virtual void  v62(); // _ZN6S635C53v62Ev
  virtual void  v63(); // _ZN6S635C53v63Ev
  virtual void  v64(); // _ZN6S635C53v64Ev
  virtual void  v65(); // _ZN6S635C53v65Ev
  virtual void  v66(); // _ZN6S635C53v66Ev
  virtual void  v67(); // _ZN6S635C53v67Ev
  virtual void  v68(); // _ZN6S635C53v68Ev
  S635C5(); // tgen
};
//SIG(-1 S635C5) 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]}


 S635C5 ::~S635C5(){ note_dtor("S635C5", this);}
void  S635C5 ::v5(){vfunc_called(this, "_ZN6S635C52v5Ev");}
void  S635C5 ::v6(){vfunc_called(this, "_ZN6S635C52v6Ev");}
void  S635C5 ::v7(){vfunc_called(this, "_ZN6S635C52v7Ev");}
void  S635C5 ::v8(){vfunc_called(this, "_ZN6S635C52v8Ev");}
void  S635C5 ::v9(){vfunc_called(this, "_ZN6S635C52v9Ev");}
void  S635C5 ::v10(){vfunc_called(this, "_ZN6S635C53v10Ev");}
void  S635C5 ::v11(){vfunc_called(this, "_ZN6S635C53v11Ev");}
void  S635C5 ::v12(){vfunc_called(this, "_ZN6S635C53v12Ev");}
void  S635C5 ::v13(){vfunc_called(this, "_ZN6S635C53v13Ev");}
void  S635C5 ::v14(){vfunc_called(this, "_ZN6S635C53v14Ev");}
void  S635C5 ::v15(){vfunc_called(this, "_ZN6S635C53v15Ev");}
void  S635C5 ::v16(){vfunc_called(this, "_ZN6S635C53v16Ev");}
void  S635C5 ::v17(){vfunc_called(this, "_ZN6S635C53v17Ev");}
void  S635C5 ::v18(){vfunc_called(this, "_ZN6S635C53v18Ev");}
void  S635C5 ::v19(){vfunc_called(this, "_ZN6S635C53v19Ev");}
void  S635C5 ::v20(){vfunc_called(this, "_ZN6S635C53v20Ev");}
void  S635C5 ::v21(){vfunc_called(this, "_ZN6S635C53v21Ev");}
void  S635C5 ::v22(){vfunc_called(this, "_ZN6S635C53v22Ev");}
void  S635C5 ::v23(){vfunc_called(this, "_ZN6S635C53v23Ev");}
void  S635C5 ::v24(){vfunc_called(this, "_ZN6S635C53v24Ev");}
void  S635C5 ::v25(){vfunc_called(this, "_ZN6S635C53v25Ev");}
void  S635C5 ::v26(){vfunc_called(this, "_ZN6S635C53v26Ev");}
void  S635C5 ::v27(){vfunc_called(this, "_ZN6S635C53v27Ev");}
void  S635C5 ::v28(){vfunc_called(this, "_ZN6S635C53v28Ev");}
void  S635C5 ::v29(){vfunc_called(this, "_ZN6S635C53v29Ev");}
void  S635C5 ::v30(){vfunc_called(this, "_ZN6S635C53v30Ev");}
void  S635C5 ::v31(){vfunc_called(this, "_ZN6S635C53v31Ev");}
void  S635C5 ::v32(){vfunc_called(this, "_ZN6S635C53v32Ev");}
void  S635C5 ::v33(){vfunc_called(this, "_ZN6S635C53v33Ev");}
void  S635C5 ::v34(){vfunc_called(this, "_ZN6S635C53v34Ev");}
void  S635C5 ::v35(){vfunc_called(this, "_ZN6S635C53v35Ev");}
void  S635C5 ::v36(){vfunc_called(this, "_ZN6S635C53v36Ev");}
void  S635C5 ::v37(){vfunc_called(this, "_ZN6S635C53v37Ev");}
void  S635C5 ::v38(){vfunc_called(this, "_ZN6S635C53v38Ev");}
void  S635C5 ::v39(){vfunc_called(this, "_ZN6S635C53v39Ev");}
void  S635C5 ::v40(){vfunc_called(this, "_ZN6S635C53v40Ev");}
void  S635C5 ::v41(){vfunc_called(this, "_ZN6S635C53v41Ev");}
void  S635C5 ::v42(){vfunc_called(this, "_ZN6S635C53v42Ev");}
void  S635C5 ::v43(){vfunc_called(this, "_ZN6S635C53v43Ev");}
void  S635C5 ::v44(){vfunc_called(this, "_ZN6S635C53v44Ev");}
void  S635C5 ::v45(){vfunc_called(this, "_ZN6S635C53v45Ev");}
void  S635C5 ::v46(){vfunc_called(this, "_ZN6S635C53v46Ev");}
void  S635C5 ::v47(){vfunc_called(this, "_ZN6S635C53v47Ev");}
void  S635C5 ::v48(){vfunc_called(this, "_ZN6S635C53v48Ev");}
void  S635C5 ::v49(){vfunc_called(this, "_ZN6S635C53v49Ev");}
void  S635C5 ::v50(){vfunc_called(this, "_ZN6S635C53v50Ev");}
void  S635C5 ::v51(){vfunc_called(this, "_ZN6S635C53v51Ev");}
void  S635C5 ::v52(){vfunc_called(this, "_ZN6S635C53v52Ev");}
void  S635C5 ::v53(){vfunc_called(this, "_ZN6S635C53v53Ev");}
void  S635C5 ::v54(){vfunc_called(this, "_ZN6S635C53v54Ev");}
void  S635C5 ::v55(){vfunc_called(this, "_ZN6S635C53v55Ev");}
void  S635C5 ::v56(){vfunc_called(this, "_ZN6S635C53v56Ev");}
void  S635C5 ::v57(){vfunc_called(this, "_ZN6S635C53v57Ev");}
void  S635C5 ::v58(){vfunc_called(this, "_ZN6S635C53v58Ev");}
void  S635C5 ::v59(){vfunc_called(this, "_ZN6S635C53v59Ev");}
void  S635C5 ::v60(){vfunc_called(this, "_ZN6S635C53v60Ev");}
void  S635C5 ::v61(){vfunc_called(this, "_ZN6S635C53v61Ev");}
void  S635C5 ::v62(){vfunc_called(this, "_ZN6S635C53v62Ev");}
void  S635C5 ::v63(){vfunc_called(this, "_ZN6S635C53v63Ev");}
void  S635C5 ::v64(){vfunc_called(this, "_ZN6S635C53v64Ev");}
void  S635C5 ::v65(){vfunc_called(this, "_ZN6S635C53v65Ev");}
void  S635C5 ::v66(){vfunc_called(this, "_ZN6S635C53v66Ev");}
void  S635C5 ::v67(){vfunc_called(this, "_ZN6S635C53v67Ev");}
void  S635C5 ::v68(){vfunc_called(this, "_ZN6S635C53v68Ev");}
S635C5 ::S635C5(){ note_ctor("S635C5", this);} // tgen

static void Test_S635C5()
{
  extern Class_Descriptor cd_S635C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S635C5, buf);
    S635C5 *dp, &lv = *(dp=new (buf) S635C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S635C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S635C5)");
    check_field_offset(lv, s635c5f0, ABISELECT(8,4), "S635C5.s635c5f0");
    check_field_offset(lv, s635c5f1, ABISELECT(16,8), "S635C5.s635c5f1");
    check_field_offset(lv, s635c5f2, ABISELECT(24,16), "S635C5.s635c5f2");
    check_field_offset(lv, s635c5f3, ABISELECT(56,32), "S635C5.s635c5f3");
    check_field_offset(lv, s635c5f4, ABISELECT(64,40), "S635C5.s635c5f4");
    check_field_offset(lv, s635c5f5, ABISELECT(72,44), "S635C5.s635c5f5");
    check_field_offset(lv, s635c5f6, ABISELECT(80,52), "S635C5.s635c5f6");
    test_class_info(&lv, &cd_S635C5);
    dp->~S635C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS635C5(Test_S635C5, "S635C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S635C5C1Ev();
extern void _ZN6S635C5D1Ev();
Name_Map name_map_S635C5[] = {
  NSPAIR(_ZN6S635C5C1Ev),
  NSPAIR(_ZN6S635C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S635C5[];
extern void _ZN6S635C5D1Ev();
extern void _ZN6S635C5D0Ev();
extern void _ZN6S635C52v5Ev();
extern void _ZN6S635C52v6Ev();
extern void _ZN6S635C52v7Ev();
extern void _ZN6S635C52v8Ev();
extern void _ZN6S635C52v9Ev();
extern void _ZN6S635C53v10Ev();
extern void _ZN6S635C53v11Ev();
extern void _ZN6S635C53v12Ev();
extern void _ZN6S635C53v13Ev();
extern void _ZN6S635C53v14Ev();
extern void _ZN6S635C53v15Ev();
extern void _ZN6S635C53v16Ev();
extern void _ZN6S635C53v17Ev();
extern void _ZN6S635C53v18Ev();
extern void _ZN6S635C53v19Ev();
extern void _ZN6S635C53v20Ev();
extern void _ZN6S635C53v21Ev();
extern void _ZN6S635C53v22Ev();
extern void _ZN6S635C53v23Ev();
extern void _ZN6S635C53v24Ev();
extern void _ZN6S635C53v25Ev();
extern void _ZN6S635C53v26Ev();
extern void _ZN6S635C53v27Ev();
extern void _ZN6S635C53v28Ev();
extern void _ZN6S635C53v29Ev();
extern void _ZN6S635C53v30Ev();
extern void _ZN6S635C53v31Ev();
extern void _ZN6S635C53v32Ev();
extern void _ZN6S635C53v33Ev();
extern void _ZN6S635C53v34Ev();
extern void _ZN6S635C53v35Ev();
extern void _ZN6S635C53v36Ev();
extern void _ZN6S635C53v37Ev();
extern void _ZN6S635C53v38Ev();
extern void _ZN6S635C53v39Ev();
extern void _ZN6S635C53v40Ev();
extern void _ZN6S635C53v41Ev();
extern void _ZN6S635C53v42Ev();
extern void _ZN6S635C53v43Ev();
extern void _ZN6S635C53v44Ev();
extern void _ZN6S635C53v45Ev();
extern void _ZN6S635C53v46Ev();
extern void _ZN6S635C53v47Ev();
extern void _ZN6S635C53v48Ev();
extern void _ZN6S635C53v49Ev();
extern void _ZN6S635C53v50Ev();
extern void _ZN6S635C53v51Ev();
extern void _ZN6S635C53v52Ev();
extern void _ZN6S635C53v53Ev();
extern void _ZN6S635C53v54Ev();
extern void _ZN6S635C53v55Ev();
extern void _ZN6S635C53v56Ev();
extern void _ZN6S635C53v57Ev();
extern void _ZN6S635C53v58Ev();
extern void _ZN6S635C53v59Ev();
extern void _ZN6S635C53v60Ev();
extern void _ZN6S635C53v61Ev();
extern void _ZN6S635C53v62Ev();
extern void _ZN6S635C53v63Ev();
extern void _ZN6S635C53v64Ev();
extern void _ZN6S635C53v65Ev();
extern void _ZN6S635C53v66Ev();
extern void _ZN6S635C53v67Ev();
extern void _ZN6S635C53v68Ev();
static  VTBL_ENTRY vtc_S635C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S635C5[0]),
  (VTBL_ENTRY)&_ZN6S635C5D1Ev,
  (VTBL_ENTRY)&_ZN6S635C5D0Ev,
  (VTBL_ENTRY)&_ZN6S635C52v5Ev,
  (VTBL_ENTRY)&_ZN6S635C52v6Ev,
  (VTBL_ENTRY)&_ZN6S635C52v7Ev,
  (VTBL_ENTRY)&_ZN6S635C52v8Ev,
  (VTBL_ENTRY)&_ZN6S635C52v9Ev,
  (VTBL_ENTRY)&_ZN6S635C53v10Ev,
  (VTBL_ENTRY)&_ZN6S635C53v11Ev,
  (VTBL_ENTRY)&_ZN6S635C53v12Ev,
  (VTBL_ENTRY)&_ZN6S635C53v13Ev,
  (VTBL_ENTRY)&_ZN6S635C53v14Ev,
  (VTBL_ENTRY)&_ZN6S635C53v15Ev,
  (VTBL_ENTRY)&_ZN6S635C53v16Ev,
  (VTBL_ENTRY)&_ZN6S635C53v17Ev,
  (VTBL_ENTRY)&_ZN6S635C53v18Ev,
  (VTBL_ENTRY)&_ZN6S635C53v19Ev,
  (VTBL_ENTRY)&_ZN6S635C53v20Ev,
  (VTBL_ENTRY)&_ZN6S635C53v21Ev,
  (VTBL_ENTRY)&_ZN6S635C53v22Ev,
  (VTBL_ENTRY)&_ZN6S635C53v23Ev,
  (VTBL_ENTRY)&_ZN6S635C53v24Ev,
  (VTBL_ENTRY)&_ZN6S635C53v25Ev,
  (VTBL_ENTRY)&_ZN6S635C53v26Ev,
  (VTBL_ENTRY)&_ZN6S635C53v27Ev,
  (VTBL_ENTRY)&_ZN6S635C53v28Ev,
  (VTBL_ENTRY)&_ZN6S635C53v29Ev,
  (VTBL_ENTRY)&_ZN6S635C53v30Ev,
  (VTBL_ENTRY)&_ZN6S635C53v31Ev,
  (VTBL_ENTRY)&_ZN6S635C53v32Ev,
  (VTBL_ENTRY)&_ZN6S635C53v33Ev,
  (VTBL_ENTRY)&_ZN6S635C53v34Ev,
  (VTBL_ENTRY)&_ZN6S635C53v35Ev,
  (VTBL_ENTRY)&_ZN6S635C53v36Ev,
  (VTBL_ENTRY)&_ZN6S635C53v37Ev,
  (VTBL_ENTRY)&_ZN6S635C53v38Ev,
  (VTBL_ENTRY)&_ZN6S635C53v39Ev,
  (VTBL_ENTRY)&_ZN6S635C53v40Ev,
  (VTBL_ENTRY)&_ZN6S635C53v41Ev,
  (VTBL_ENTRY)&_ZN6S635C53v42Ev,
  (VTBL_ENTRY)&_ZN6S635C53v43Ev,
  (VTBL_ENTRY)&_ZN6S635C53v44Ev,
  (VTBL_ENTRY)&_ZN6S635C53v45Ev,
  (VTBL_ENTRY)&_ZN6S635C53v46Ev,
  (VTBL_ENTRY)&_ZN6S635C53v47Ev,
  (VTBL_ENTRY)&_ZN6S635C53v48Ev,
  (VTBL_ENTRY)&_ZN6S635C53v49Ev,
  (VTBL_ENTRY)&_ZN6S635C53v50Ev,
  (VTBL_ENTRY)&_ZN6S635C53v51Ev,
  (VTBL_ENTRY)&_ZN6S635C53v52Ev,
  (VTBL_ENTRY)&_ZN6S635C53v53Ev,
  (VTBL_ENTRY)&_ZN6S635C53v54Ev,
  (VTBL_ENTRY)&_ZN6S635C53v55Ev,
  (VTBL_ENTRY)&_ZN6S635C53v56Ev,
  (VTBL_ENTRY)&_ZN6S635C53v57Ev,
  (VTBL_ENTRY)&_ZN6S635C53v58Ev,
  (VTBL_ENTRY)&_ZN6S635C53v59Ev,
  (VTBL_ENTRY)&_ZN6S635C53v60Ev,
  (VTBL_ENTRY)&_ZN6S635C53v61Ev,
  (VTBL_ENTRY)&_ZN6S635C53v62Ev,
  (VTBL_ENTRY)&_ZN6S635C53v63Ev,
  (VTBL_ENTRY)&_ZN6S635C53v64Ev,
  (VTBL_ENTRY)&_ZN6S635C53v65Ev,
  (VTBL_ENTRY)&_ZN6S635C53v66Ev,
  (VTBL_ENTRY)&_ZN6S635C53v67Ev,
  (VTBL_ENTRY)&_ZN6S635C53v68Ev,
};
extern VTBL_ENTRY _ZTI6S635C5[];
extern  VTBL_ENTRY _ZTV6S635C5[];
Class_Descriptor cd_S635C5 = {  "S635C5", // class name
  0,0,//no base classes
  &(vtc_S635C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S635C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S635C5),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  S635C4  : S635C5 {
  int s635c4f0[2];
  void *s635c4f1;
  int s635c4f2[2];
  ::S638C7_nt s635c4f3;
  ::S638C7_nt s635c4f4;
  ::S4224C37 s635c4f5;
  ::S638C7_nt s635c4f6;
  unsigned int s635c4f7:1;
  unsigned int s635c4f8:1;
  unsigned int s635c4f9:1;
  unsigned int s635c4f10:1;
  unsigned int s635c4f11:1;
  int s635c4f12[2];
  virtual  ~S635C4(); // _ZN6S635C4D1Ev
  virtual void  v69(); // _ZN6S635C43v69Ev
  virtual void  v70(); // _ZN6S635C43v70Ev
  virtual void  v71(); // _ZN6S635C43v71Ev
  virtual void  v72(); // _ZN6S635C43v72Ev
  virtual void  v73(); // _ZN6S635C43v73Ev
  virtual void  v74(); // _ZN6S635C43v74Ev
  virtual void  v75(); // _ZN6S635C43v75Ev
  virtual void  v76(); // _ZN6S635C43v76Ev
  virtual void  v77(); // _ZN6S635C43v77Ev
  virtual void  v78(); // _ZN6S635C43v78Ev
  virtual void  v79(); // _ZN6S635C43v79Ev
  virtual void  v80(); // _ZN6S635C43v80Ev
  virtual void  v81(); // _ZN6S635C43v81Ev
  virtual void  v82(); // _ZN6S635C43v82Ev
  virtual void  v83(); // _ZN6S635C43v83Ev
  virtual void  v84(); // _ZN6S635C43v84Ev
  virtual void  v85(); // _ZN6S635C43v85Ev
  virtual void  v86(); // _ZN6S635C43v86Ev
  virtual void  v87(); // _ZN6S635C43v87Ev
  virtual void  v88(); // _ZN6S635C43v88Ev
  virtual void  v89(); // _ZN6S635C43v89Ev
  virtual void  v90(); // _ZN6S635C43v90Ev
  S635C4(); // tgen
};
//SIG(-1 S635C4) 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]}


 S635C4 ::~S635C4(){ note_dtor("S635C4", this);}
void  S635C4 ::v69(){vfunc_called(this, "_ZN6S635C43v69Ev");}
void  S635C4 ::v70(){vfunc_called(this, "_ZN6S635C43v70Ev");}
void  S635C4 ::v71(){vfunc_called(this, "_ZN6S635C43v71Ev");}
void  S635C4 ::v72(){vfunc_called(this, "_ZN6S635C43v72Ev");}
void  S635C4 ::v73(){vfunc_called(this, "_ZN6S635C43v73Ev");}
void  S635C4 ::v74(){vfunc_called(this, "_ZN6S635C43v74Ev");}
void  S635C4 ::v75(){vfunc_called(this, "_ZN6S635C43v75Ev");}
void  S635C4 ::v76(){vfunc_called(this, "_ZN6S635C43v76Ev");}
void  S635C4 ::v77(){vfunc_called(this, "_ZN6S635C43v77Ev");}
void  S635C4 ::v78(){vfunc_called(this, "_ZN6S635C43v78Ev");}
void  S635C4 ::v79(){vfunc_called(this, "_ZN6S635C43v79Ev");}
void  S635C4 ::v80(){vfunc_called(this, "_ZN6S635C43v80Ev");}
void  S635C4 ::v81(){vfunc_called(this, "_ZN6S635C43v81Ev");}
void  S635C4 ::v82(){vfunc_called(this, "_ZN6S635C43v82Ev");}
void  S635C4 ::v83(){vfunc_called(this, "_ZN6S635C43v83Ev");}
void  S635C4 ::v84(){vfunc_called(this, "_ZN6S635C43v84Ev");}
void  S635C4 ::v85(){vfunc_called(this, "_ZN6S635C43v85Ev");}
void  S635C4 ::v86(){vfunc_called(this, "_ZN6S635C43v86Ev");}
void  S635C4 ::v87(){vfunc_called(this, "_ZN6S635C43v87Ev");}
void  S635C4 ::v88(){vfunc_called(this, "_ZN6S635C43v88Ev");}
void  S635C4 ::v89(){vfunc_called(this, "_ZN6S635C43v89Ev");}
void  S635C4 ::v90(){vfunc_called(this, "_ZN6S635C43v90Ev");}
S635C4 ::S635C4(){ note_ctor("S635C4", this);} // tgen

static void Test_S635C4()
{
  extern Class_Descriptor cd_S635C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S635C4, buf);
    S635C4 *dp, &lv = *(dp=new (buf) S635C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S635C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S635C4)");
    check_base_class_offset(lv, (S635C5*), 0, "S635C4");
    check_field_offset(lv, s635c4f0, ABISELECT(96,60), "S635C4.s635c4f0");
    check_field_offset(lv, s635c4f1, ABISELECT(104,68), "S635C4.s635c4f1");
    check_field_offset(lv, s635c4f2, ABISELECT(112,72), "S635C4.s635c4f2");
    check_field_offset(lv, s635c4f3, ABISELECT(120,80), "S635C4.s635c4f3");
    check_field_offset(lv, s635c4f4, ABISELECT(136,92), "S635C4.s635c4f4");
    check_field_offset(lv, s635c4f5, ABISELECT(152,104), "S635C4.s635c4f5");
    check_field_offset(lv, s635c4f6, ABISELECT(160,108), "S635C4.s635c4f6");
    set_bf_and_test(lv, s635c4f7, ABISELECT(176,120), 0, 1, 1, "S635C4");
    set_bf_and_test(lv, s635c4f8, ABISELECT(176,120), 1, 1, 1, "S635C4");
    set_bf_and_test(lv, s635c4f9, ABISELECT(176,120), 2, 1, 1, "S635C4");
    set_bf_and_test(lv, s635c4f10, ABISELECT(176,120), 3, 1, 1, "S635C4");
    set_bf_and_test(lv, s635c4f11, ABISELECT(176,120), 4, 1, 1, "S635C4");
    check_field_offset(lv, s635c4f12, ABISELECT(180,124), "S635C4.s635c4f12");
    test_class_info(&lv, &cd_S635C4);
    dp->~S635C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS635C4(Test_S635C4, "S635C4", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN6S635C4C1Ev();
extern void _ZN6S635C4D1Ev();
Name_Map name_map_S635C4[] = {
  NSPAIR(_ZN6S635C4C1Ev),
  NSPAIR(_ZN6S635C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S635C5;
extern VTBL_ENTRY _ZTI6S635C5[];
extern  VTBL_ENTRY _ZTV6S635C5[];
static Base_Class bases_S635C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S635C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S635C4[];
extern void _ZN6S635C4D1Ev();
extern void _ZN6S635C4D0Ev();
extern void _ZN6S635C52v5Ev();
extern void _ZN6S635C52v6Ev();
extern void _ZN6S635C52v7Ev();
extern void _ZN6S635C52v8Ev();
extern void _ZN6S635C52v9Ev();
extern void _ZN6S635C53v10Ev();
extern void _ZN6S635C53v11Ev();
extern void _ZN6S635C53v12Ev();
extern void _ZN6S635C53v13Ev();
extern void _ZN6S635C53v14Ev();
extern void _ZN6S635C53v15Ev();
extern void _ZN6S635C53v16Ev();
extern void _ZN6S635C53v17Ev();
extern void _ZN6S635C53v18Ev();
extern void _ZN6S635C53v19Ev();
extern void _ZN6S635C53v20Ev();
extern void _ZN6S635C53v21Ev();
extern void _ZN6S635C53v22Ev();
extern void _ZN6S635C53v23Ev();
extern void _ZN6S635C53v24Ev();
extern void _ZN6S635C53v25Ev();
extern void _ZN6S635C53v26Ev();
extern void _ZN6S635C53v27Ev();
extern void _ZN6S635C53v28Ev();
extern void _ZN6S635C53v29Ev();
extern void _ZN6S635C53v30Ev();
extern void _ZN6S635C53v31Ev();
extern void _ZN6S635C53v32Ev();
extern void _ZN6S635C53v33Ev();
extern void _ZN6S635C53v34Ev();
extern void _ZN6S635C53v35Ev();
extern void _ZN6S635C53v36Ev();
extern void _ZN6S635C53v37Ev();
extern void _ZN6S635C53v38Ev();
extern void _ZN6S635C53v39Ev();
extern void _ZN6S635C53v40Ev();
extern void _ZN6S635C53v41Ev();
extern void _ZN6S635C53v42Ev();
extern void _ZN6S635C53v43Ev();
extern void _ZN6S635C53v44Ev();
extern void _ZN6S635C53v45Ev();
extern void _ZN6S635C53v46Ev();
extern void _ZN6S635C53v47Ev();
extern void _ZN6S635C53v48Ev();
extern void _ZN6S635C53v49Ev();
extern void _ZN6S635C53v50Ev();
extern void _ZN6S635C53v51Ev();
extern void _ZN6S635C53v52Ev();
extern void _ZN6S635C53v53Ev();
extern void _ZN6S635C53v54Ev();
extern void _ZN6S635C53v55Ev();
extern void _ZN6S635C53v56Ev();
extern void _ZN6S635C53v57Ev();
extern void _ZN6S635C53v58Ev();
extern void _ZN6S635C53v59Ev();
extern void _ZN6S635C53v60Ev();
extern void _ZN6S635C53v61Ev();
extern void _ZN6S635C53v62Ev();
extern void _ZN6S635C53v63Ev();
extern void _ZN6S635C53v64Ev();
extern void _ZN6S635C53v65Ev();
extern void _ZN6S635C53v66Ev();
extern void _ZN6S635C53v67Ev();
extern void _ZN6S635C53v68Ev();
extern void _ZN6S635C43v69Ev();
extern void _ZN6S635C43v70Ev();
extern void _ZN6S635C43v71Ev();
extern void _ZN6S635C43v72Ev();
extern void _ZN6S635C43v73Ev();
extern void _ZN6S635C43v74Ev();
extern void _ZN6S635C43v75Ev();
extern void _ZN6S635C43v76Ev();
extern void _ZN6S635C43v77Ev();
extern void _ZN6S635C43v78Ev();
extern void _ZN6S635C43v79Ev();
extern void _ZN6S635C43v80Ev();
extern void _ZN6S635C43v81Ev();
extern void _ZN6S635C43v82Ev();
extern void _ZN6S635C43v83Ev();
extern void _ZN6S635C43v84Ev();
extern void _ZN6S635C43v85Ev();
extern void _ZN6S635C43v86Ev();
extern void _ZN6S635C43v87Ev();
extern void _ZN6S635C43v88Ev();
extern void _ZN6S635C43v89Ev();
extern void _ZN6S635C43v90Ev();
static  VTBL_ENTRY vtc_S635C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S635C4[0]),
  (VTBL_ENTRY)&_ZN6S635C4D1Ev,
  (VTBL_ENTRY)&_ZN6S635C4D0Ev,
  (VTBL_ENTRY)&_ZN6S635C52v5Ev,
  (VTBL_ENTRY)&_ZN6S635C52v6Ev,
  (VTBL_ENTRY)&_ZN6S635C52v7Ev,
  (VTBL_ENTRY)&_ZN6S635C52v8Ev,
  (VTBL_ENTRY)&_ZN6S635C52v9Ev,
  (VTBL_ENTRY)&_ZN6S635C53v10Ev,
  (VTBL_ENTRY)&_ZN6S635C53v11Ev,
  (VTBL_ENTRY)&_ZN6S635C53v12Ev,
  (VTBL_ENTRY)&_ZN6S635C53v13Ev,
  (VTBL_ENTRY)&_ZN6S635C53v14Ev,
  (VTBL_ENTRY)&_ZN6S635C53v15Ev,
  (VTBL_ENTRY)&_ZN6S635C53v16Ev,
  (VTBL_ENTRY)&_ZN6S635C53v17Ev,
  (VTBL_ENTRY)&_ZN6S635C53v18Ev,
  (VTBL_ENTRY)&_ZN6S635C53v19Ev,
  (VTBL_ENTRY)&_ZN6S635C53v20Ev,
  (VTBL_ENTRY)&_ZN6S635C53v21Ev,
  (VTBL_ENTRY)&_ZN6S635C53v22Ev,
  (VTBL_ENTRY)&_ZN6S635C53v23Ev,
  (VTBL_ENTRY)&_ZN6S635C53v24Ev,
  (VTBL_ENTRY)&_ZN6S635C53v25Ev,
  (VTBL_ENTRY)&_ZN6S635C53v26Ev,
  (VTBL_ENTRY)&_ZN6S635C53v27Ev,
  (VTBL_ENTRY)&_ZN6S635C53v28Ev,
  (VTBL_ENTRY)&_ZN6S635C53v29Ev,
  (VTBL_ENTRY)&_ZN6S635C53v30Ev,
  (VTBL_ENTRY)&_ZN6S635C53v31Ev,
  (VTBL_ENTRY)&_ZN6S635C53v32Ev,
  (VTBL_ENTRY)&_ZN6S635C53v33Ev,
  (VTBL_ENTRY)&_ZN6S635C53v34Ev,
  (VTBL_ENTRY)&_ZN6S635C53v35Ev,
  (VTBL_ENTRY)&_ZN6S635C53v36Ev,
  (VTBL_ENTRY)&_ZN6S635C53v37Ev,
  (VTBL_ENTRY)&_ZN6S635C53v38Ev,
  (VTBL_ENTRY)&_ZN6S635C53v39Ev,
  (VTBL_ENTRY)&_ZN6S635C53v40Ev,
  (VTBL_ENTRY)&_ZN6S635C53v41Ev,
  (VTBL_ENTRY)&_ZN6S635C53v42Ev,
  (VTBL_ENTRY)&_ZN6S635C53v43Ev,
  (VTBL_ENTRY)&_ZN6S635C53v44Ev,
  (VTBL_ENTRY)&_ZN6S635C53v45Ev,
  (VTBL_ENTRY)&_ZN6S635C53v46Ev,
  (VTBL_ENTRY)&_ZN6S635C53v47Ev,
  (VTBL_ENTRY)&_ZN6S635C53v48Ev,
  (VTBL_ENTRY)&_ZN6S635C53v49Ev,
  (VTBL_ENTRY)&_ZN6S635C53v50Ev,
  (VTBL_ENTRY)&_ZN6S635C53v51Ev,
  (VTBL_ENTRY)&_ZN6S635C53v52Ev,
  (VTBL_ENTRY)&_ZN6S635C53v53Ev,
  (VTBL_ENTRY)&_ZN6S635C53v54Ev,
  (VTBL_ENTRY)&_ZN6S635C53v55Ev,
  (VTBL_ENTRY)&_ZN6S635C53v56Ev,
  (VTBL_ENTRY)&_ZN6S635C53v57Ev,
  (VTBL_ENTRY)&_ZN6S635C53v58Ev,
  (VTBL_ENTRY)&_ZN6S635C53v59Ev,
  (VTBL_ENTRY)&_ZN6S635C53v60Ev,
  (VTBL_ENTRY)&_ZN6S635C53v61Ev,
  (VTBL_ENTRY)&_ZN6S635C53v62Ev,
  (VTBL_ENTRY)&_ZN6S635C53v63Ev,
  (VTBL_ENTRY)&_ZN6S635C53v64Ev,
  (VTBL_ENTRY)&_ZN6S635C53v65Ev,
  (VTBL_ENTRY)&_ZN6S635C53v66Ev,
  (VTBL_ENTRY)&_ZN6S635C53v67Ev,
  (VTBL_ENTRY)&_ZN6S635C53v68Ev,
  (VTBL_ENTRY)&_ZN6S635C43v69Ev,
  (VTBL_ENTRY)&_ZN6S635C43v70Ev,
  (VTBL_ENTRY)&_ZN6S635C43v71Ev,
  (VTBL_ENTRY)&_ZN6S635C43v72Ev,
  (VTBL_ENTRY)&_ZN6S635C43v73Ev,
  (VTBL_ENTRY)&_ZN6S635C43v74Ev,
  (VTBL_ENTRY)&_ZN6S635C43v75Ev,
  (VTBL_ENTRY)&_ZN6S635C43v76Ev,
  (VTBL_ENTRY)&_ZN6S635C43v77Ev,
  (VTBL_ENTRY)&_ZN6S635C43v78Ev,
  (VTBL_ENTRY)&_ZN6S635C43v79Ev,
  (VTBL_ENTRY)&_ZN6S635C43v80Ev,
  (VTBL_ENTRY)&_ZN6S635C43v81Ev,
  (VTBL_ENTRY)&_ZN6S635C43v82Ev,
  (VTBL_ENTRY)&_ZN6S635C43v83Ev,
  (VTBL_ENTRY)&_ZN6S635C43v84Ev,
  (VTBL_ENTRY)&_ZN6S635C43v85Ev,
  (VTBL_ENTRY)&_ZN6S635C43v86Ev,
  (VTBL_ENTRY)&_ZN6S635C43v87Ev,
  (VTBL_ENTRY)&_ZN6S635C43v88Ev,
  (VTBL_ENTRY)&_ZN6S635C43v89Ev,
  (VTBL_ENTRY)&_ZN6S635C43v90Ev,
};
extern VTBL_ENTRY _ZTI6S635C4[];
extern  VTBL_ENTRY _ZTV6S635C4[];
Class_Descriptor cd_S635C4 = {  "S635C4", // class name
  bases_S635C4, 1,
  &(vtc_S635C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI6S635C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S635C4),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  S635C3  : S635C4 {
  unsigned int s635c3f0:1;
  unsigned int s635c3f1:1;
  unsigned int s635c3f2:1;
  ::S3281C17 s635c3f3;
  ::S3281C11 s635c3f4;
  ::S3281C5_nt s635c3f5;
  ::S638C18 s635c3f6;
  int s635c3f7[3];
  virtual  ~S635C3(); // _ZN6S635C3D1Ev
  virtual void  v91(); // _ZN6S635C33v91Ev
  virtual void  v92(); // _ZN6S635C33v92Ev
  virtual void  v93(); // _ZN6S635C33v93Ev
  virtual void  v94(); // _ZN6S635C33v94Ev
  virtual void  v95(); // _ZN6S635C33v95Ev
  virtual void  v96(); // _ZN6S635C33v96Ev
  virtual void  v97(); // _ZN6S635C33v97Ev
  virtual void  v98(); // _ZN6S635C33v98Ev
  virtual void  v99(); // _ZN6S635C33v99Ev
  virtual void  v100(); // _ZN6S635C34v100Ev
  virtual void  v101(); // _ZN6S635C34v101Ev
  virtual void  v102(); // _ZN6S635C34v102Ev
  virtual void  v103(); // _ZN6S635C34v103Ev
  virtual void  v104(); // _ZN6S635C34v104Ev
  virtual void  v105(); // _ZN6S635C34v105Ev
  virtual void  v106(); // _ZN6S635C34v106Ev
  virtual void  v107(); // _ZN6S635C34v107Ev
  virtual void  v108(); // _ZN6S635C34v108Ev
  virtual void  v109(); // _ZN6S635C34v109Ev
  virtual void  v110(); // _ZN6S635C34v110Ev
  S635C3(); // tgen
};
//SIG(-1 S635C3) 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]}


 S635C3 ::~S635C3(){ note_dtor("S635C3", this);}
void  S635C3 ::v91(){vfunc_called(this, "_ZN6S635C33v91Ev");}
void  S635C3 ::v92(){vfunc_called(this, "_ZN6S635C33v92Ev");}
void  S635C3 ::v93(){vfunc_called(this, "_ZN6S635C33v93Ev");}
void  S635C3 ::v94(){vfunc_called(this, "_ZN6S635C33v94Ev");}
void  S635C3 ::v95(){vfunc_called(this, "_ZN6S635C33v95Ev");}
void  S635C3 ::v96(){vfunc_called(this, "_ZN6S635C33v96Ev");}
void  S635C3 ::v97(){vfunc_called(this, "_ZN6S635C33v97Ev");}
void  S635C3 ::v98(){vfunc_called(this, "_ZN6S635C33v98Ev");}
void  S635C3 ::v99(){vfunc_called(this, "_ZN6S635C33v99Ev");}
void  S635C3 ::v100(){vfunc_called(this, "_ZN6S635C34v100Ev");}
void  S635C3 ::v101(){vfunc_called(this, "_ZN6S635C34v101Ev");}
void  S635C3 ::v102(){vfunc_called(this, "_ZN6S635C34v102Ev");}
void  S635C3 ::v103(){vfunc_called(this, "_ZN6S635C34v103Ev");}
void  S635C3 ::v104(){vfunc_called(this, "_ZN6S635C34v104Ev");}
void  S635C3 ::v105(){vfunc_called(this, "_ZN6S635C34v105Ev");}
void  S635C3 ::v106(){vfunc_called(this, "_ZN6S635C34v106Ev");}
void  S635C3 ::v107(){vfunc_called(this, "_ZN6S635C34v107Ev");}
void  S635C3 ::v108(){vfunc_called(this, "_ZN6S635C34v108Ev");}
void  S635C3 ::v109(){vfunc_called(this, "_ZN6S635C34v109Ev");}
void  S635C3 ::v110(){vfunc_called(this, "_ZN6S635C34v110Ev");}
S635C3 ::S635C3(){ note_ctor("S635C3", this);} // tgen

static void Test_S635C3()
{
  extern Class_Descriptor cd_S635C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S635C3, buf);
    S635C3 *dp, &lv = *(dp=new (buf) S635C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S635C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S635C3)");
    check_base_class_offset(lv, (S635C5*)(S635C4*), 0, "S635C3");
    check_base_class_offset(lv, (S635C4*), 0, "S635C3");
    set_bf_and_test(lv, s635c3f0, ABISELECT(188,132), 0, 1, 1, "S635C3");
    set_bf_and_test(lv, s635c3f1, ABISELECT(188,132), 1, 1, 1, "S635C3");
    set_bf_and_test(lv, s635c3f2, ABISELECT(188,132), 2, 1, 1, "S635C3");
    check_field_offset(lv, s635c3f3, ABISELECT(192,136), "S635C3.s635c3f3");
    check_field_offset(lv, s635c3f4, ABISELECT(208,148), "S635C3.s635c3f4");
    check_field_offset(lv, s635c3f5, ABISELECT(224,160), "S635C3.s635c3f5");
    check_field_offset(lv, s635c3f6, ABISELECT(240,172), "S635C3.s635c3f6");
    check_field_offset(lv, s635c3f7, ABISELECT(256,184), "S635C3.s635c3f7");
    test_class_info(&lv, &cd_S635C3);
    dp->~S635C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS635C3(Test_S635C3, "S635C3", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN6S635C3C1Ev();
extern void _ZN6S635C3D1Ev();
Name_Map name_map_S635C3[] = {
  NSPAIR(_ZN6S635C3C1Ev),
  NSPAIR(_ZN6S635C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S635C5;
extern VTBL_ENTRY _ZTI6S635C5[];
extern  VTBL_ENTRY _ZTV6S635C5[];
extern Class_Descriptor cd_S635C4;
extern VTBL_ENTRY _ZTI6S635C4[];
extern  VTBL_ENTRY _ZTV6S635C4[];
static Base_Class bases_S635C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S635C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S635C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S635C3[];
extern void _ZN6S635C3D1Ev();
extern void _ZN6S635C3D0Ev();
extern void _ZN6S635C52v5Ev();
extern void _ZN6S635C52v6Ev();
extern void _ZN6S635C52v7Ev();
extern void _ZN6S635C52v8Ev();
extern void _ZN6S635C52v9Ev();
extern void _ZN6S635C53v10Ev();
extern void _ZN6S635C53v11Ev();
extern void _ZN6S635C53v12Ev();
extern void _ZN6S635C53v13Ev();
extern void _ZN6S635C53v14Ev();
extern void _ZN6S635C53v15Ev();
extern void _ZN6S635C53v16Ev();
extern void _ZN6S635C53v17Ev();
extern void _ZN6S635C53v18Ev();
extern void _ZN6S635C53v19Ev();
extern void _ZN6S635C53v20Ev();
extern void _ZN6S635C53v21Ev();
extern void _ZN6S635C53v22Ev();
extern void _ZN6S635C53v23Ev();
extern void _ZN6S635C53v24Ev();
extern void _ZN6S635C53v25Ev();
extern void _ZN6S635C53v26Ev();
extern void _ZN6S635C53v27Ev();
extern void _ZN6S635C53v28Ev();
extern void _ZN6S635C53v29Ev();
extern void _ZN6S635C53v30Ev();
extern void _ZN6S635C53v31Ev();
extern void _ZN6S635C53v32Ev();
extern void _ZN6S635C53v33Ev();
extern void _ZN6S635C53v34Ev();
extern void _ZN6S635C53v35Ev();
extern void _ZN6S635C53v36Ev();
extern void _ZN6S635C53v37Ev();
extern void _ZN6S635C53v38Ev();
extern void _ZN6S635C53v39Ev();
extern void _ZN6S635C53v40Ev();
extern void _ZN6S635C53v41Ev();
extern void _ZN6S635C53v42Ev();
extern void _ZN6S635C53v43Ev();
extern void _ZN6S635C53v44Ev();
extern void _ZN6S635C53v45Ev();
extern void _ZN6S635C53v46Ev();
extern void _ZN6S635C53v47Ev();
extern void _ZN6S635C53v48Ev();
extern void _ZN6S635C53v49Ev();
extern void _ZN6S635C53v50Ev();
extern void _ZN6S635C53v51Ev();
extern void _ZN6S635C53v52Ev();
extern void _ZN6S635C53v53Ev();
extern void _ZN6S635C53v54Ev();
extern void _ZN6S635C53v55Ev();
extern void _ZN6S635C53v56Ev();
extern void _ZN6S635C53v57Ev();
extern void _ZN6S635C53v58Ev();
extern void _ZN6S635C53v59Ev();
extern void _ZN6S635C53v60Ev();
extern void _ZN6S635C53v61Ev();
extern void _ZN6S635C53v62Ev();
extern void _ZN6S635C53v63Ev();
extern void _ZN6S635C53v64Ev();
extern void _ZN6S635C53v65Ev();
extern void _ZN6S635C53v66Ev();
extern void _ZN6S635C53v67Ev();
extern void _ZN6S635C53v68Ev();
extern void _ZN6S635C43v69Ev();
extern void _ZN6S635C43v70Ev();
extern void _ZN6S635C43v71Ev();
extern void _ZN6S635C43v72Ev();
extern void _ZN6S635C43v73Ev();
extern void _ZN6S635C43v74Ev();
extern void _ZN6S635C43v75Ev();
extern void _ZN6S635C43v76Ev();
extern void _ZN6S635C43v77Ev();
extern void _ZN6S635C43v78Ev();
extern void _ZN6S635C43v79Ev();
extern void _ZN6S635C43v80Ev();
extern void _ZN6S635C43v81Ev();
extern void _ZN6S635C43v82Ev();
extern void _ZN6S635C43v83Ev();
extern void _ZN6S635C43v84Ev();
extern void _ZN6S635C43v85Ev();
extern void _ZN6S635C43v86Ev();
extern void _ZN6S635C43v87Ev();
extern void _ZN6S635C43v88Ev();
extern void _ZN6S635C43v89Ev();
extern void _ZN6S635C43v90Ev();
extern void _ZN6S635C33v91Ev();
extern void _ZN6S635C33v92Ev();
extern void _ZN6S635C33v93Ev();
extern void _ZN6S635C33v94Ev();
extern void _ZN6S635C33v95Ev();
extern void _ZN6S635C33v96Ev();
extern void _ZN6S635C33v97Ev();
extern void _ZN6S635C33v98Ev();
extern void _ZN6S635C33v99Ev();
extern void _ZN6S635C34v100Ev();
extern void _ZN6S635C34v101Ev();
extern void _ZN6S635C34v102Ev();
extern void _ZN6S635C34v103Ev();
extern void _ZN6S635C34v104Ev();
extern void _ZN6S635C34v105Ev();
extern void _ZN6S635C34v106Ev();
extern void _ZN6S635C34v107Ev();
extern void _ZN6S635C34v108Ev();
extern void _ZN6S635C34v109Ev();
extern void _ZN6S635C34v110Ev();
static  VTBL_ENTRY vtc_S635C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S635C3[0]),
  (VTBL_ENTRY)&_ZN6S635C3D1Ev,
  (VTBL_ENTRY)&_ZN6S635C3D0Ev,
  (VTBL_ENTRY)&_ZN6S635C52v5Ev,
  (VTBL_ENTRY)&_ZN6S635C52v6Ev,
  (VTBL_ENTRY)&_ZN6S635C52v7Ev,
  (VTBL_ENTRY)&_ZN6S635C52v8Ev,
  (VTBL_ENTRY)&_ZN6S635C52v9Ev,
  (VTBL_ENTRY)&_ZN6S635C53v10Ev,
  (VTBL_ENTRY)&_ZN6S635C53v11Ev,
  (VTBL_ENTRY)&_ZN6S635C53v12Ev,
  (VTBL_ENTRY)&_ZN6S635C53v13Ev,
  (VTBL_ENTRY)&_ZN6S635C53v14Ev,
  (VTBL_ENTRY)&_ZN6S635C53v15Ev,
  (VTBL_ENTRY)&_ZN6S635C53v16Ev,
  (VTBL_ENTRY)&_ZN6S635C53v17Ev,
  (VTBL_ENTRY)&_ZN6S635C53v18Ev,
  (VTBL_ENTRY)&_ZN6S635C53v19Ev,
  (VTBL_ENTRY)&_ZN6S635C53v20Ev,
  (VTBL_ENTRY)&_ZN6S635C53v21Ev,
  (VTBL_ENTRY)&_ZN6S635C53v22Ev,
  (VTBL_ENTRY)&_ZN6S635C53v23Ev,
  (VTBL_ENTRY)&_ZN6S635C53v24Ev,
  (VTBL_ENTRY)&_ZN6S635C53v25Ev,
  (VTBL_ENTRY)&_ZN6S635C53v26Ev,
  (VTBL_ENTRY)&_ZN6S635C53v27Ev,
  (VTBL_ENTRY)&_ZN6S635C53v28Ev,
  (VTBL_ENTRY)&_ZN6S635C53v29Ev,
  (VTBL_ENTRY)&_ZN6S635C53v30Ev,
  (VTBL_ENTRY)&_ZN6S635C53v31Ev,
  (VTBL_ENTRY)&_ZN6S635C53v32Ev,
  (VTBL_ENTRY)&_ZN6S635C53v33Ev,
  (VTBL_ENTRY)&_ZN6S635C53v34Ev,
  (VTBL_ENTRY)&_ZN6S635C53v35Ev,
  (VTBL_ENTRY)&_ZN6S635C53v36Ev,
  (VTBL_ENTRY)&_ZN6S635C53v37Ev,
  (VTBL_ENTRY)&_ZN6S635C53v38Ev,
  (VTBL_ENTRY)&_ZN6S635C53v39Ev,
  (VTBL_ENTRY)&_ZN6S635C53v40Ev,
  (VTBL_ENTRY)&_ZN6S635C53v41Ev,
  (VTBL_ENTRY)&_ZN6S635C53v42Ev,
  (VTBL_ENTRY)&_ZN6S635C53v43Ev,
  (VTBL_ENTRY)&_ZN6S635C53v44Ev,
  (VTBL_ENTRY)&_ZN6S635C53v45Ev,
  (VTBL_ENTRY)&_ZN6S635C53v46Ev,
  (VTBL_ENTRY)&_ZN6S635C53v47Ev,
  (VTBL_ENTRY)&_ZN6S635C53v48Ev,
  (VTBL_ENTRY)&_ZN6S635C53v49Ev,
  (VTBL_ENTRY)&_ZN6S635C53v50Ev,
  (VTBL_ENTRY)&_ZN6S635C53v51Ev,
  (VTBL_ENTRY)&_ZN6S635C53v52Ev,
  (VTBL_ENTRY)&_ZN6S635C53v53Ev,
  (VTBL_ENTRY)&_ZN6S635C53v54Ev,
  (VTBL_ENTRY)&_ZN6S635C53v55Ev,
  (VTBL_ENTRY)&_ZN6S635C53v56Ev,
  (VTBL_ENTRY)&_ZN6S635C53v57Ev,
  (VTBL_ENTRY)&_ZN6S635C53v58Ev,
  (VTBL_ENTRY)&_ZN6S635C53v59Ev,
  (VTBL_ENTRY)&_ZN6S635C53v60Ev,
  (VTBL_ENTRY)&_ZN6S635C53v61Ev,
  (VTBL_ENTRY)&_ZN6S635C53v62Ev,
  (VTBL_ENTRY)&_ZN6S635C53v63Ev,
  (VTBL_ENTRY)&_ZN6S635C53v64Ev,
  (VTBL_ENTRY)&_ZN6S635C53v65Ev,
  (VTBL_ENTRY)&_ZN6S635C53v66Ev,
  (VTBL_ENTRY)&_ZN6S635C53v67Ev,
  (VTBL_ENTRY)&_ZN6S635C53v68Ev,
  (VTBL_ENTRY)&_ZN6S635C43v69Ev,
  (VTBL_ENTRY)&_ZN6S635C43v70Ev,
  (VTBL_ENTRY)&_ZN6S635C43v71Ev,
  (VTBL_ENTRY)&_ZN6S635C43v72Ev,
  (VTBL_ENTRY)&_ZN6S635C43v73Ev,
  (VTBL_ENTRY)&_ZN6S635C43v74Ev,
  (VTBL_ENTRY)&_ZN6S635C43v75Ev,
  (VTBL_ENTRY)&_ZN6S635C43v76Ev,
  (VTBL_ENTRY)&_ZN6S635C43v77Ev,
  (VTBL_ENTRY)&_ZN6S635C43v78Ev,
  (VTBL_ENTRY)&_ZN6S635C43v79Ev,
  (VTBL_ENTRY)&_ZN6S635C43v80Ev,
  (VTBL_ENTRY)&_ZN6S635C43v81Ev,
  (VTBL_ENTRY)&_ZN6S635C43v82Ev,
  (VTBL_ENTRY)&_ZN6S635C43v83Ev,
  (VTBL_ENTRY)&_ZN6S635C43v84Ev,
  (VTBL_ENTRY)&_ZN6S635C43v85Ev,
  (VTBL_ENTRY)&_ZN6S635C43v86Ev,
  (VTBL_ENTRY)&_ZN6S635C43v87Ev,
  (VTBL_ENTRY)&_ZN6S635C43v88Ev,
  (VTBL_ENTRY)&_ZN6S635C43v89Ev,
  (VTBL_ENTRY)&_ZN6S635C43v90Ev,
  (VTBL_ENTRY)&_ZN6S635C33v91Ev,
  (VTBL_ENTRY)&_ZN6S635C33v92Ev,
  (VTBL_ENTRY)&_ZN6S635C33v93Ev,
  (VTBL_ENTRY)&_ZN6S635C33v94Ev,
  (VTBL_ENTRY)&_ZN6S635C33v95Ev,
  (VTBL_ENTRY)&_ZN6S635C33v96Ev,
  (VTBL_ENTRY)&_ZN6S635C33v97Ev,
  (VTBL_ENTRY)&_ZN6S635C33v98Ev,
  (VTBL_ENTRY)&_ZN6S635C33v99Ev,
  (VTBL_ENTRY)&_ZN6S635C34v100Ev,
  (VTBL_ENTRY)&_ZN6S635C34v101Ev,
  (VTBL_ENTRY)&_ZN6S635C34v102Ev,
  (VTBL_ENTRY)&_ZN6S635C34v103Ev,
  (VTBL_ENTRY)&_ZN6S635C34v104Ev,
  (VTBL_ENTRY)&_ZN6S635C34v105Ev,
  (VTBL_ENTRY)&_ZN6S635C34v106Ev,
  (VTBL_ENTRY)&_ZN6S635C34v107Ev,
  (VTBL_ENTRY)&_ZN6S635C34v108Ev,
  (VTBL_ENTRY)&_ZN6S635C34v109Ev,
  (VTBL_ENTRY)&_ZN6S635C34v110Ev,
};
extern VTBL_ENTRY _ZTI6S635C3[];
extern  VTBL_ENTRY _ZTV6S635C3[];
Class_Descriptor cd_S635C3 = {  "S635C3", // class name
  bases_S635C3, 2,
  &(vtc_S635C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI6S635C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S635C3),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  S635C2  : S635C3 {
  ::S3281C4_nt s635c2f0;
  unsigned int s635c2f1:1;
  ::S638C8 s635c2f2;
  virtual  ~S635C2(); // _ZN6S635C2D1Ev
  virtual void  v111(); // _ZN6S635C24v111Ev
  virtual void  v112(); // _ZN6S635C24v112Ev
  virtual void  v113(); // _ZN6S635C24v113Ev
  virtual void  v114(); // _ZN6S635C24v114Ev
  S635C2(); // tgen
};
//SIG(-1 S635C2) 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 FC7}


 S635C2 ::~S635C2(){ note_dtor("S635C2", this);}
void  S635C2 ::v111(){vfunc_called(this, "_ZN6S635C24v111Ev");}
void  S635C2 ::v112(){vfunc_called(this, "_ZN6S635C24v112Ev");}
void  S635C2 ::v113(){vfunc_called(this, "_ZN6S635C24v113Ev");}
void  S635C2 ::v114(){vfunc_called(this, "_ZN6S635C24v114Ev");}
S635C2 ::S635C2(){ note_ctor("S635C2", this);} // tgen

static void Test_S635C2()
{
  extern Class_Descriptor cd_S635C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,56)];
    init_test(&cd_S635C2, buf);
    S635C2 *dp, &lv = *(dp=new (buf) S635C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S635C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S635C2)");
    check_base_class_offset(lv, (S635C5*)(S635C4*)(S635C3*), 0, "S635C2");
    check_base_class_offset(lv, (S635C4*)(S635C3*), 0, "S635C2");
    check_base_class_offset(lv, (S635C3*), 0, "S635C2");
    check_field_offset(lv, s635c2f0, ABISELECT(268,196), "S635C2.s635c2f0");
    set_bf_and_test(lv, s635c2f1, ABISELECT(276,204), 0, 1, 1, "S635C2");
    check_field_offset(lv, s635c2f2, ABISELECT(280,208), "S635C2.s635c2f2");
    test_class_info(&lv, &cd_S635C2);
    dp->~S635C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS635C2(Test_S635C2, "S635C2", ABISELECT(296,220));

#else // __cplusplus

extern void _ZN6S635C2C1Ev();
extern void _ZN6S635C2D1Ev();
Name_Map name_map_S635C2[] = {
  NSPAIR(_ZN6S635C2C1Ev),
  NSPAIR(_ZN6S635C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S635C5;
extern VTBL_ENTRY _ZTI6S635C5[];
extern  VTBL_ENTRY _ZTV6S635C5[];
extern Class_Descriptor cd_S635C4;
extern VTBL_ENTRY _ZTI6S635C4[];
extern  VTBL_ENTRY _ZTV6S635C4[];
extern Class_Descriptor cd_S635C3;
extern VTBL_ENTRY _ZTI6S635C3[];
extern  VTBL_ENTRY _ZTV6S635C3[];
static Base_Class bases_S635C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S635C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S635C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S635C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S635C2[];
extern void _ZN6S635C2D1Ev();
extern void _ZN6S635C2D0Ev();
extern void _ZN6S635C52v5Ev();
extern void _ZN6S635C52v6Ev();
extern void _ZN6S635C52v7Ev();
extern void _ZN6S635C52v8Ev();
extern void _ZN6S635C52v9Ev();
extern void _ZN6S635C53v10Ev();
extern void _ZN6S635C53v11Ev();
extern void _ZN6S635C53v12Ev();
extern void _ZN6S635C53v13Ev();
extern void _ZN6S635C53v14Ev();
extern void _ZN6S635C53v15Ev();
extern void _ZN6S635C53v16Ev();
extern void _ZN6S635C53v17Ev();
extern void _ZN6S635C53v18Ev();
extern void _ZN6S635C53v19Ev();
extern void _ZN6S635C53v20Ev();
extern void _ZN6S635C53v21Ev();
extern void _ZN6S635C53v22Ev();
extern void _ZN6S635C53v23Ev();
extern void _ZN6S635C53v24Ev();
extern void _ZN6S635C53v25Ev();
extern void _ZN6S635C53v26Ev();
extern void _ZN6S635C53v27Ev();
extern void _ZN6S635C53v28Ev();
extern void _ZN6S635C53v29Ev();
extern void _ZN6S635C53v30Ev();
extern void _ZN6S635C53v31Ev();
extern void _ZN6S635C53v32Ev();
extern void _ZN6S635C53v33Ev();
extern void _ZN6S635C53v34Ev();
extern void _ZN6S635C53v35Ev();
extern void _ZN6S635C53v36Ev();
extern void _ZN6S635C53v37Ev();
extern void _ZN6S635C53v38Ev();
extern void _ZN6S635C53v39Ev();
extern void _ZN6S635C53v40Ev();
extern void _ZN6S635C53v41Ev();
extern void _ZN6S635C53v42Ev();
extern void _ZN6S635C53v43Ev();
extern void _ZN6S635C53v44Ev();
extern void _ZN6S635C53v45Ev();
extern void _ZN6S635C53v46Ev();
extern void _ZN6S635C53v47Ev();
extern void _ZN6S635C53v48Ev();
extern void _ZN6S635C53v49Ev();
extern void _ZN6S635C53v50Ev();
extern void _ZN6S635C53v51Ev();
extern void _ZN6S635C53v52Ev();
extern void _ZN6S635C53v53Ev();
extern void _ZN6S635C53v54Ev();
extern void _ZN6S635C53v55Ev();
extern void _ZN6S635C53v56Ev();
extern void _ZN6S635C53v57Ev();
extern void _ZN6S635C53v58Ev();
extern void _ZN6S635C53v59Ev();
extern void _ZN6S635C53v60Ev();
extern void _ZN6S635C53v61Ev();
extern void _ZN6S635C53v62Ev();
extern void _ZN6S635C53v63Ev();
extern void _ZN6S635C53v64Ev();
extern void _ZN6S635C53v65Ev();
extern void _ZN6S635C53v66Ev();
extern void _ZN6S635C53v67Ev();
extern void _ZN6S635C53v68Ev();
extern void _ZN6S635C43v69Ev();
extern void _ZN6S635C43v70Ev();
extern void _ZN6S635C43v71Ev();
extern void _ZN6S635C43v72Ev();
extern void _ZN6S635C43v73Ev();
extern void _ZN6S635C43v74Ev();
extern void _ZN6S635C43v75Ev();
extern void _ZN6S635C43v76Ev();
extern void _ZN6S635C43v77Ev();
extern void _ZN6S635C43v78Ev();
extern void _ZN6S635C43v79Ev();
extern void _ZN6S635C43v80Ev();
extern void _ZN6S635C43v81Ev();
extern void _ZN6S635C43v82Ev();
extern void _ZN6S635C43v83Ev();
extern void _ZN6S635C43v84Ev();
extern void _ZN6S635C43v85Ev();
extern void _ZN6S635C43v86Ev();
extern void _ZN6S635C43v87Ev();
extern void _ZN6S635C43v88Ev();
extern void _ZN6S635C43v89Ev();
extern void _ZN6S635C43v90Ev();
extern void _ZN6S635C33v91Ev();
extern void _ZN6S635C33v92Ev();
extern void _ZN6S635C33v93Ev();
extern void _ZN6S635C33v94Ev();
extern void _ZN6S635C33v95Ev();
extern void _ZN6S635C33v96Ev();
extern void _ZN6S635C33v97Ev();
extern void _ZN6S635C33v98Ev();
extern void _ZN6S635C33v99Ev();
extern void _ZN6S635C34v100Ev();
extern void _ZN6S635C34v101Ev();
extern void _ZN6S635C34v102Ev();
extern void _ZN6S635C34v103Ev();
extern void _ZN6S635C34v104Ev();
extern void _ZN6S635C34v105Ev();
extern void _ZN6S635C34v106Ev();
extern void _ZN6S635C34v107Ev();
extern void _ZN6S635C34v108Ev();
extern void _ZN6S635C34v109Ev();
extern void _ZN6S635C34v110Ev();
extern void _ZN6S635C24v111Ev();
extern void _ZN6S635C24v112Ev();
extern void _ZN6S635C24v113Ev();
extern void _ZN6S635C24v114Ev();
static  VTBL_ENTRY vtc_S635C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S635C2[0]),
  (VTBL_ENTRY)&_ZN6S635C2D1Ev,
  (VTBL_ENTRY)&_ZN6S635C2D0Ev,
  (VTBL_ENTRY)&_ZN6S635C52v5Ev,
  (VTBL_ENTRY)&_ZN6S635C52v6Ev,
  (VTBL_ENTRY)&_ZN6S635C52v7Ev,
  (VTBL_ENTRY)&_ZN6S635C52v8Ev,
  (VTBL_ENTRY)&_ZN6S635C52v9Ev,
  (VTBL_ENTRY)&_ZN6S635C53v10Ev,
  (VTBL_ENTRY)&_ZN6S635C53v11Ev,
  (VTBL_ENTRY)&_ZN6S635C53v12Ev,
  (VTBL_ENTRY)&_ZN6S635C53v13Ev,
  (VTBL_ENTRY)&_ZN6S635C53v14Ev,
  (VTBL_ENTRY)&_ZN6S635C53v15Ev,
  (VTBL_ENTRY)&_ZN6S635C53v16Ev,
  (VTBL_ENTRY)&_ZN6S635C53v17Ev,
  (VTBL_ENTRY)&_ZN6S635C53v18Ev,
  (VTBL_ENTRY)&_ZN6S635C53v19Ev,
  (VTBL_ENTRY)&_ZN6S635C53v20Ev,
  (VTBL_ENTRY)&_ZN6S635C53v21Ev,
  (VTBL_ENTRY)&_ZN6S635C53v22Ev,
  (VTBL_ENTRY)&_ZN6S635C53v23Ev,
  (VTBL_ENTRY)&_ZN6S635C53v24Ev,
  (VTBL_ENTRY)&_ZN6S635C53v25Ev,
  (VTBL_ENTRY)&_ZN6S635C53v26Ev,
  (VTBL_ENTRY)&_ZN6S635C53v27Ev,
  (VTBL_ENTRY)&_ZN6S635C53v28Ev,
  (VTBL_ENTRY)&_ZN6S635C53v29Ev,
  (VTBL_ENTRY)&_ZN6S635C53v30Ev,
  (VTBL_ENTRY)&_ZN6S635C53v31Ev,
  (VTBL_ENTRY)&_ZN6S635C53v32Ev,
  (VTBL_ENTRY)&_ZN6S635C53v33Ev,
  (VTBL_ENTRY)&_ZN6S635C53v34Ev,
  (VTBL_ENTRY)&_ZN6S635C53v35Ev,
  (VTBL_ENTRY)&_ZN6S635C53v36Ev,
  (VTBL_ENTRY)&_ZN6S635C53v37Ev,
  (VTBL_ENTRY)&_ZN6S635C53v38Ev,
  (VTBL_ENTRY)&_ZN6S635C53v39Ev,
  (VTBL_ENTRY)&_ZN6S635C53v40Ev,
  (VTBL_ENTRY)&_ZN6S635C53v41Ev,
  (VTBL_ENTRY)&_ZN6S635C53v42Ev,
  (VTBL_ENTRY)&_ZN6S635C53v43Ev,
  (VTBL_ENTRY)&_ZN6S635C53v44Ev,
  (VTBL_ENTRY)&_ZN6S635C53v45Ev,
  (VTBL_ENTRY)&_ZN6S635C53v46Ev,
  (VTBL_ENTRY)&_ZN6S635C53v47Ev,
  (VTBL_ENTRY)&_ZN6S635C53v48Ev,
  (VTBL_ENTRY)&_ZN6S635C53v49Ev,
  (VTBL_ENTRY)&_ZN6S635C53v50Ev,
  (VTBL_ENTRY)&_ZN6S635C53v51Ev,
  (VTBL_ENTRY)&_ZN6S635C53v52Ev,
  (VTBL_ENTRY)&_ZN6S635C53v53Ev,
  (VTBL_ENTRY)&_ZN6S635C53v54Ev,
  (VTBL_ENTRY)&_ZN6S635C53v55Ev,
  (VTBL_ENTRY)&_ZN6S635C53v56Ev,
  (VTBL_ENTRY)&_ZN6S635C53v57Ev,
  (VTBL_ENTRY)&_ZN6S635C53v58Ev,
  (VTBL_ENTRY)&_ZN6S635C53v59Ev,
  (VTBL_ENTRY)&_ZN6S635C53v60Ev,
  (VTBL_ENTRY)&_ZN6S635C53v61Ev,
  (VTBL_ENTRY)&_ZN6S635C53v62Ev,
  (VTBL_ENTRY)&_ZN6S635C53v63Ev,
  (VTBL_ENTRY)&_ZN6S635C53v64Ev,
  (VTBL_ENTRY)&_ZN6S635C53v65Ev,
  (VTBL_ENTRY)&_ZN6S635C53v66Ev,
  (VTBL_ENTRY)&_ZN6S635C53v67Ev,
  (VTBL_ENTRY)&_ZN6S635C53v68Ev,
  (VTBL_ENTRY)&_ZN6S635C43v69Ev,
  (VTBL_ENTRY)&_ZN6S635C43v70Ev,
  (VTBL_ENTRY)&_ZN6S635C43v71Ev,
  (VTBL_ENTRY)&_ZN6S635C43v72Ev,
  (VTBL_ENTRY)&_ZN6S635C43v73Ev,
  (VTBL_ENTRY)&_ZN6S635C43v74Ev,
  (VTBL_ENTRY)&_ZN6S635C43v75Ev,
  (VTBL_ENTRY)&_ZN6S635C43v76Ev,
  (VTBL_ENTRY)&_ZN6S635C43v77Ev,
  (VTBL_ENTRY)&_ZN6S635C43v78Ev,
  (VTBL_ENTRY)&_ZN6S635C43v79Ev,
  (VTBL_ENTRY)&_ZN6S635C43v80Ev,
  (VTBL_ENTRY)&_ZN6S635C43v81Ev,
  (VTBL_ENTRY)&_ZN6S635C43v82Ev,
  (VTBL_ENTRY)&_ZN6S635C43v83Ev,
  (VTBL_ENTRY)&_ZN6S635C43v84Ev,
  (VTBL_ENTRY)&_ZN6S635C43v85Ev,
  (VTBL_ENTRY)&_ZN6S635C43v86Ev,
  (VTBL_ENTRY)&_ZN6S635C43v87Ev,
  (VTBL_ENTRY)&_ZN6S635C43v88Ev,
  (VTBL_ENTRY)&_ZN6S635C43v89Ev,
  (VTBL_ENTRY)&_ZN6S635C43v90Ev,
  (VTBL_ENTRY)&_ZN6S635C33v91Ev,
  (VTBL_ENTRY)&_ZN6S635C33v92Ev,
  (VTBL_ENTRY)&_ZN6S635C33v93Ev,
  (VTBL_ENTRY)&_ZN6S635C33v94Ev,
  (VTBL_ENTRY)&_ZN6S635C33v95Ev,
  (VTBL_ENTRY)&_ZN6S635C33v96Ev,
  (VTBL_ENTRY)&_ZN6S635C33v97Ev,
  (VTBL_ENTRY)&_ZN6S635C33v98Ev,
  (VTBL_ENTRY)&_ZN6S635C33v99Ev,
  (VTBL_ENTRY)&_ZN6S635C34v100Ev,
  (VTBL_ENTRY)&_ZN6S635C34v101Ev,
  (VTBL_ENTRY)&_ZN6S635C34v102Ev,
  (VTBL_ENTRY)&_ZN6S635C34v103Ev,
  (VTBL_ENTRY)&_ZN6S635C34v104Ev,
  (VTBL_ENTRY)&_ZN6S635C34v105Ev,
  (VTBL_ENTRY)&_ZN6S635C34v106Ev,
  (VTBL_ENTRY)&_ZN6S635C34v107Ev,
  (VTBL_ENTRY)&_ZN6S635C34v108Ev,
  (VTBL_ENTRY)&_ZN6S635C34v109Ev,
  (VTBL_ENTRY)&_ZN6S635C34v110Ev,
  (VTBL_ENTRY)&_ZN6S635C24v111Ev,
  (VTBL_ENTRY)&_ZN6S635C24v112Ev,
  (VTBL_ENTRY)&_ZN6S635C24v113Ev,
  (VTBL_ENTRY)&_ZN6S635C24v114Ev,
};
extern VTBL_ENTRY _ZTI6S635C2[];
extern  VTBL_ENTRY _ZTV6S635C2[];
Class_Descriptor cd_S635C2 = {  "S635C2", // class name
  bases_S635C2, 3,
  &(vtc_S635C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI6S635C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S635C2),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  S635C1  : S635C2 {
  int s635c1f0[2];
  virtual  ~S635C1(); // _ZN6S635C1D1Ev
  virtual void  v1(); // _ZN6S635C12v1Ev
  virtual void  v2(); // _ZN6S635C12v2Ev
  virtual void  v3(); // _ZN6S635C12v3Ev
  virtual void  v4(); // _ZN6S635C12v4Ev
  S635C1(); // tgen
};
//SIG(1 S635C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v69 v70 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] 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 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 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v111 v112 v113 v114 FC6 Fi:1 FC8} vd v1 v2 v3 v4 Fi[2]}


 S635C1 ::~S635C1(){ note_dtor("S635C1", this);}
void  S635C1 ::v1(){vfunc_called(this, "_ZN6S635C12v1Ev");}
void  S635C1 ::v2(){vfunc_called(this, "_ZN6S635C12v2Ev");}
void  S635C1 ::v3(){vfunc_called(this, "_ZN6S635C12v3Ev");}
void  S635C1 ::v4(){vfunc_called(this, "_ZN6S635C12v4Ev");}
S635C1 ::S635C1(){ note_ctor("S635C1", this);} // tgen

static void Test_S635C1()
{
  extern Class_Descriptor cd_S635C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,58)];
    init_test(&cd_S635C1, buf);
    S635C1 *dp, &lv = *(dp=new (buf) S635C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S635C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S635C1)");
    check_base_class_offset(lv, (S635C5*)(S635C4*)(S635C3*)(S635C2*), 0, "S635C1");
    check_base_class_offset(lv, (S635C4*)(S635C3*)(S635C2*), 0, "S635C1");
    check_base_class_offset(lv, (S635C3*)(S635C2*), 0, "S635C1");
    check_base_class_offset(lv, (S635C2*), 0, "S635C1");
    check_field_offset(lv, s635c1f0, ABISELECT(296,220), "S635C1.s635c1f0");
    test_class_info(&lv, &cd_S635C1);
    dp->~S635C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS635C1(Test_S635C1, "S635C1", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN6S635C1C1Ev();
extern void _ZN6S635C1D1Ev();
Name_Map name_map_S635C1[] = {
  NSPAIR(_ZN6S635C1C1Ev),
  NSPAIR(_ZN6S635C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S635C5;
extern VTBL_ENTRY _ZTI6S635C5[];
extern  VTBL_ENTRY _ZTV6S635C5[];
extern Class_Descriptor cd_S635C4;
extern VTBL_ENTRY _ZTI6S635C4[];
extern  VTBL_ENTRY _ZTV6S635C4[];
extern Class_Descriptor cd_S635C3;
extern VTBL_ENTRY _ZTI6S635C3[];
extern  VTBL_ENTRY _ZTV6S635C3[];
extern Class_Descriptor cd_S635C2;
extern VTBL_ENTRY _ZTI6S635C2[];
extern  VTBL_ENTRY _ZTV6S635C2[];
static Base_Class bases_S635C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S635C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S635C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S635C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S635C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S635C1[];
extern void _ZN6S635C1D1Ev();
extern void _ZN6S635C1D0Ev();
extern void _ZN6S635C52v5Ev();
extern void _ZN6S635C52v6Ev();
extern void _ZN6S635C52v7Ev();
extern void _ZN6S635C52v8Ev();
extern void _ZN6S635C52v9Ev();
extern void _ZN6S635C53v10Ev();
extern void _ZN6S635C53v11Ev();
extern void _ZN6S635C53v12Ev();
extern void _ZN6S635C53v13Ev();
extern void _ZN6S635C53v14Ev();
extern void _ZN6S635C53v15Ev();
extern void _ZN6S635C53v16Ev();
extern void _ZN6S635C53v17Ev();
extern void _ZN6S635C53v18Ev();
extern void _ZN6S635C53v19Ev();
extern void _ZN6S635C53v20Ev();
extern void _ZN6S635C53v21Ev();
extern void _ZN6S635C53v22Ev();
extern void _ZN6S635C53v23Ev();
extern void _ZN6S635C53v24Ev();
extern void _ZN6S635C53v25Ev();
extern void _ZN6S635C53v26Ev();
extern void _ZN6S635C53v27Ev();
extern void _ZN6S635C53v28Ev();
extern void _ZN6S635C53v29Ev();
extern void _ZN6S635C53v30Ev();
extern void _ZN6S635C53v31Ev();
extern void _ZN6S635C53v32Ev();
extern void _ZN6S635C53v33Ev();
extern void _ZN6S635C53v34Ev();
extern void _ZN6S635C53v35Ev();
extern void _ZN6S635C53v36Ev();
extern void _ZN6S635C53v37Ev();
extern void _ZN6S635C53v38Ev();
extern void _ZN6S635C53v39Ev();
extern void _ZN6S635C53v40Ev();
extern void _ZN6S635C53v41Ev();
extern void _ZN6S635C53v42Ev();
extern void _ZN6S635C53v43Ev();
extern void _ZN6S635C53v44Ev();
extern void _ZN6S635C53v45Ev();
extern void _ZN6S635C53v46Ev();
extern void _ZN6S635C53v47Ev();
extern void _ZN6S635C53v48Ev();
extern void _ZN6S635C53v49Ev();
extern void _ZN6S635C53v50Ev();
extern void _ZN6S635C53v51Ev();
extern void _ZN6S635C53v52Ev();
extern void _ZN6S635C53v53Ev();
extern void _ZN6S635C53v54Ev();
extern void _ZN6S635C53v55Ev();
extern void _ZN6S635C53v56Ev();
extern void _ZN6S635C53v57Ev();
extern void _ZN6S635C53v58Ev();
extern void _ZN6S635C53v59Ev();
extern void _ZN6S635C53v60Ev();
extern void _ZN6S635C53v61Ev();
extern void _ZN6S635C53v62Ev();
extern void _ZN6S635C53v63Ev();
extern void _ZN6S635C53v64Ev();
extern void _ZN6S635C53v65Ev();
extern void _ZN6S635C53v66Ev();
extern void _ZN6S635C53v67Ev();
extern void _ZN6S635C53v68Ev();
extern void _ZN6S635C43v69Ev();
extern void _ZN6S635C43v70Ev();
extern void _ZN6S635C43v71Ev();
extern void _ZN6S635C43v72Ev();
extern void _ZN6S635C43v73Ev();
extern void _ZN6S635C43v74Ev();
extern void _ZN6S635C43v75Ev();
extern void _ZN6S635C43v76Ev();
extern void _ZN6S635C43v77Ev();
extern void _ZN6S635C43v78Ev();
extern void _ZN6S635C43v79Ev();
extern void _ZN6S635C43v80Ev();
extern void _ZN6S635C43v81Ev();
extern void _ZN6S635C43v82Ev();
extern void _ZN6S635C43v83Ev();
extern void _ZN6S635C43v84Ev();
extern void _ZN6S635C43v85Ev();
extern void _ZN6S635C43v86Ev();
extern void _ZN6S635C43v87Ev();
extern void _ZN6S635C43v88Ev();
extern void _ZN6S635C43v89Ev();
extern void _ZN6S635C43v90Ev();
extern void _ZN6S635C33v91Ev();
extern void _ZN6S635C33v92Ev();
extern void _ZN6S635C33v93Ev();
extern void _ZN6S635C33v94Ev();
extern void _ZN6S635C33v95Ev();
extern void _ZN6S635C33v96Ev();
extern void _ZN6S635C33v97Ev();
extern void _ZN6S635C33v98Ev();
extern void _ZN6S635C33v99Ev();
extern void _ZN6S635C34v100Ev();
extern void _ZN6S635C34v101Ev();
extern void _ZN6S635C34v102Ev();
extern void _ZN6S635C34v103Ev();
extern void _ZN6S635C34v104Ev();
extern void _ZN6S635C34v105Ev();
extern void _ZN6S635C34v106Ev();
extern void _ZN6S635C34v107Ev();
extern void _ZN6S635C34v108Ev();
extern void _ZN6S635C34v109Ev();
extern void _ZN6S635C34v110Ev();
extern void _ZN6S635C24v111Ev();
extern void _ZN6S635C24v112Ev();
extern void _ZN6S635C24v113Ev();
extern void _ZN6S635C24v114Ev();
extern void _ZN6S635C12v1Ev();
extern void _ZN6S635C12v2Ev();
extern void _ZN6S635C12v3Ev();
extern void _ZN6S635C12v4Ev();
static  VTBL_ENTRY vtc_S635C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S635C1[0]),
  (VTBL_ENTRY)&_ZN6S635C1D1Ev,
  (VTBL_ENTRY)&_ZN6S635C1D0Ev,
  (VTBL_ENTRY)&_ZN6S635C52v5Ev,
  (VTBL_ENTRY)&_ZN6S635C52v6Ev,
  (VTBL_ENTRY)&_ZN6S635C52v7Ev,
  (VTBL_ENTRY)&_ZN6S635C52v8Ev,
  (VTBL_ENTRY)&_ZN6S635C52v9Ev,
  (VTBL_ENTRY)&_ZN6S635C53v10Ev,
  (VTBL_ENTRY)&_ZN6S635C53v11Ev,
  (VTBL_ENTRY)&_ZN6S635C53v12Ev,
  (VTBL_ENTRY)&_ZN6S635C53v13Ev,
  (VTBL_ENTRY)&_ZN6S635C53v14Ev,
  (VTBL_ENTRY)&_ZN6S635C53v15Ev,
  (VTBL_ENTRY)&_ZN6S635C53v16Ev,
  (VTBL_ENTRY)&_ZN6S635C53v17Ev,
  (VTBL_ENTRY)&_ZN6S635C53v18Ev,
  (VTBL_ENTRY)&_ZN6S635C53v19Ev,
  (VTBL_ENTRY)&_ZN6S635C53v20Ev,
  (VTBL_ENTRY)&_ZN6S635C53v21Ev,
  (VTBL_ENTRY)&_ZN6S635C53v22Ev,
  (VTBL_ENTRY)&_ZN6S635C53v23Ev,
  (VTBL_ENTRY)&_ZN6S635C53v24Ev,
  (VTBL_ENTRY)&_ZN6S635C53v25Ev,
  (VTBL_ENTRY)&_ZN6S635C53v26Ev,
  (VTBL_ENTRY)&_ZN6S635C53v27Ev,
  (VTBL_ENTRY)&_ZN6S635C53v28Ev,
  (VTBL_ENTRY)&_ZN6S635C53v29Ev,
  (VTBL_ENTRY)&_ZN6S635C53v30Ev,
  (VTBL_ENTRY)&_ZN6S635C53v31Ev,
  (VTBL_ENTRY)&_ZN6S635C53v32Ev,
  (VTBL_ENTRY)&_ZN6S635C53v33Ev,
  (VTBL_ENTRY)&_ZN6S635C53v34Ev,
  (VTBL_ENTRY)&_ZN6S635C53v35Ev,
  (VTBL_ENTRY)&_ZN6S635C53v36Ev,
  (VTBL_ENTRY)&_ZN6S635C53v37Ev,
  (VTBL_ENTRY)&_ZN6S635C53v38Ev,
  (VTBL_ENTRY)&_ZN6S635C53v39Ev,
  (VTBL_ENTRY)&_ZN6S635C53v40Ev,
  (VTBL_ENTRY)&_ZN6S635C53v41Ev,
  (VTBL_ENTRY)&_ZN6S635C53v42Ev,
  (VTBL_ENTRY)&_ZN6S635C53v43Ev,
  (VTBL_ENTRY)&_ZN6S635C53v44Ev,
  (VTBL_ENTRY)&_ZN6S635C53v45Ev,
  (VTBL_ENTRY)&_ZN6S635C53v46Ev,
  (VTBL_ENTRY)&_ZN6S635C53v47Ev,
  (VTBL_ENTRY)&_ZN6S635C53v48Ev,
  (VTBL_ENTRY)&_ZN6S635C53v49Ev,
  (VTBL_ENTRY)&_ZN6S635C53v50Ev,
  (VTBL_ENTRY)&_ZN6S635C53v51Ev,
  (VTBL_ENTRY)&_ZN6S635C53v52Ev,
  (VTBL_ENTRY)&_ZN6S635C53v53Ev,
  (VTBL_ENTRY)&_ZN6S635C53v54Ev,
  (VTBL_ENTRY)&_ZN6S635C53v55Ev,
  (VTBL_ENTRY)&_ZN6S635C53v56Ev,
  (VTBL_ENTRY)&_ZN6S635C53v57Ev,
  (VTBL_ENTRY)&_ZN6S635C53v58Ev,
  (VTBL_ENTRY)&_ZN6S635C53v59Ev,
  (VTBL_ENTRY)&_ZN6S635C53v60Ev,
  (VTBL_ENTRY)&_ZN6S635C53v61Ev,
  (VTBL_ENTRY)&_ZN6S635C53v62Ev,
  (VTBL_ENTRY)&_ZN6S635C53v63Ev,
  (VTBL_ENTRY)&_ZN6S635C53v64Ev,
  (VTBL_ENTRY)&_ZN6S635C53v65Ev,
  (VTBL_ENTRY)&_ZN6S635C53v66Ev,
  (VTBL_ENTRY)&_ZN6S635C53v67Ev,
  (VTBL_ENTRY)&_ZN6S635C53v68Ev,
  (VTBL_ENTRY)&_ZN6S635C43v69Ev,
  (VTBL_ENTRY)&_ZN6S635C43v70Ev,
  (VTBL_ENTRY)&_ZN6S635C43v71Ev,
  (VTBL_ENTRY)&_ZN6S635C43v72Ev,
  (VTBL_ENTRY)&_ZN6S635C43v73Ev,
  (VTBL_ENTRY)&_ZN6S635C43v74Ev,
  (VTBL_ENTRY)&_ZN6S635C43v75Ev,
  (VTBL_ENTRY)&_ZN6S635C43v76Ev,
  (VTBL_ENTRY)&_ZN6S635C43v77Ev,
  (VTBL_ENTRY)&_ZN6S635C43v78Ev,
  (VTBL_ENTRY)&_ZN6S635C43v79Ev,
  (VTBL_ENTRY)&_ZN6S635C43v80Ev,
  (VTBL_ENTRY)&_ZN6S635C43v81Ev,
  (VTBL_ENTRY)&_ZN6S635C43v82Ev,
  (VTBL_ENTRY)&_ZN6S635C43v83Ev,
  (VTBL_ENTRY)&_ZN6S635C43v84Ev,
  (VTBL_ENTRY)&_ZN6S635C43v85Ev,
  (VTBL_ENTRY)&_ZN6S635C43v86Ev,
  (VTBL_ENTRY)&_ZN6S635C43v87Ev,
  (VTBL_ENTRY)&_ZN6S635C43v88Ev,
  (VTBL_ENTRY)&_ZN6S635C43v89Ev,
  (VTBL_ENTRY)&_ZN6S635C43v90Ev,
  (VTBL_ENTRY)&_ZN6S635C33v91Ev,
  (VTBL_ENTRY)&_ZN6S635C33v92Ev,
  (VTBL_ENTRY)&_ZN6S635C33v93Ev,
  (VTBL_ENTRY)&_ZN6S635C33v94Ev,
  (VTBL_ENTRY)&_ZN6S635C33v95Ev,
  (VTBL_ENTRY)&_ZN6S635C33v96Ev,
  (VTBL_ENTRY)&_ZN6S635C33v97Ev,
  (VTBL_ENTRY)&_ZN6S635C33v98Ev,
  (VTBL_ENTRY)&_ZN6S635C33v99Ev,
  (VTBL_ENTRY)&_ZN6S635C34v100Ev,
  (VTBL_ENTRY)&_ZN6S635C34v101Ev,
  (VTBL_ENTRY)&_ZN6S635C34v102Ev,
  (VTBL_ENTRY)&_ZN6S635C34v103Ev,
  (VTBL_ENTRY)&_ZN6S635C34v104Ev,
  (VTBL_ENTRY)&_ZN6S635C34v105Ev,
  (VTBL_ENTRY)&_ZN6S635C34v106Ev,
  (VTBL_ENTRY)&_ZN6S635C34v107Ev,
  (VTBL_ENTRY)&_ZN6S635C34v108Ev,
  (VTBL_ENTRY)&_ZN6S635C34v109Ev,
  (VTBL_ENTRY)&_ZN6S635C34v110Ev,
  (VTBL_ENTRY)&_ZN6S635C24v111Ev,
  (VTBL_ENTRY)&_ZN6S635C24v112Ev,
  (VTBL_ENTRY)&_ZN6S635C24v113Ev,
  (VTBL_ENTRY)&_ZN6S635C24v114Ev,
  (VTBL_ENTRY)&_ZN6S635C12v1Ev,
  (VTBL_ENTRY)&_ZN6S635C12v2Ev,
  (VTBL_ENTRY)&_ZN6S635C12v3Ev,
  (VTBL_ENTRY)&_ZN6S635C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S635C1[];
extern  VTBL_ENTRY _ZTV6S635C1[];
Class_Descriptor cd_S635C1 = {  "S635C1", // class name
  bases_S635C1, 4,
  &(vtc_S635C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI6S635C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S635C1),118, //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  S20636C3  {
  int s20636c3f0[7];
  void *s20636c3f1;
  long double s20636c3f2;
  __tsi64 s20636c3f3;
  char s20636c3f4;
  int s20636c3f5[3];
  __tsi64 s20636c3f6;
  void  mf20636c3(); // _ZN8S20636C39mf20636c3Ev
};
//SIG(-1 S20636C3) C1{ m Fi[7] Fp FD FL Fc Fi[3] FL}


void  S20636C3 ::mf20636c3(){}

static void Test_S20636C3()
{
  {
    init_simple_test("S20636C3");
    S20636C3 lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S20636C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C3)");
    check_field_offset(lv, s20636c3f0, 0, "S20636C3.s20636c3f0");
    check_field_offset(lv, s20636c3f1, ABISELECT(32,28), "S20636C3.s20636c3f1");
    check_field_offset(lv, s20636c3f2, ABISELECT(48,32), "S20636C3.s20636c3f2");
    check_field_offset(lv, s20636c3f3, ABISELECT(64,44), "S20636C3.s20636c3f3");
    check_field_offset(lv, s20636c3f4, ABISELECT(72,52), "S20636C3.s20636c3f4");
    check_field_offset(lv, s20636c3f5, ABISELECT(76,56), "S20636C3.s20636c3f5");
    check_field_offset(lv, s20636c3f6, ABISELECT(88,68), "S20636C3.s20636c3f6");
  }
}
static Arrange_To_Call_Me vS20636C3(Test_S20636C3, "S20636C3", ABISELECT(96,76));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20636C3[];
VTBL_ENTRY *P__ZTI8S20636C3 = _ZTI8S20636C3; 
Class_Descriptor cd_S20636C3 = {  "S20636C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(96,76), // object size
  NSPAIRA(_ZTI8S20636C3),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  S20636C5  : virtual S20636C3 {
  char s20636c5f0;
  int s20636c5f1;
  char s20636c5f2:8;
  virtual void  v1(); // _ZN8S20636C52v1Ev
  ~S20636C5(); // tgen
  S20636C5(); // tgen
};
//SIG(-1 S20636C5) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8}


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

static void Test_S20636C5()
{
  extern Class_Descriptor cd_S20636C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S20636C5, buf);
    S20636C5 *dp, &lv = *(dp=new (buf) S20636C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S20636C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C5)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(32,16), "S20636C5");
    check_field_offset(lv, s20636c5f0, ABISELECT(8,4), "S20636C5.s20636c5f0");
    check_field_offset(lv, s20636c5f1, ABISELECT(12,8), "S20636C5.s20636c5f1");
    set_bf_and_test(lv, s20636c5f2, ABISELECT(16,12), 0, 8, 1, "S20636C5");
    set_bf_and_test(lv, s20636c5f2, ABISELECT(16,12), 0, 8, hide_sll(1LL<<7), "S20636C5");
    test_class_info(&lv, &cd_S20636C5);
    dp->~S20636C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C5(Test_S20636C5, "S20636C5", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S20636C5C1Ev();
extern void _ZN8S20636C5D1Ev();
Name_Map name_map_S20636C5[] = {
  NSPAIR(_ZN8S20636C5C1Ev),
  NSPAIR(_ZN8S20636C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S20636C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20636C5[];
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY vtc_S20636C5[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20636C5[];
static  VTT_ENTRY vtt_S20636C5[] = {
  {&(_ZTV8S20636C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
Class_Descriptor cd_S20636C5 = {  "S20636C5", // class name
  bases_S20636C5, 1,
  &(vtc_S20636C5[0]), // expected_vtbl_contents
  &(vtt_S20636C5[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S20636C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20636C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C5),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  S20636C4  : S20636C3 , virtual S20636C5 {
  short s20636c4f0:8;
  void *s20636c4f1;
  char  :0;
  char s20636c4f3[4];
  int s20636c4f4;
  virtual void  v2(); // _ZN8S20636C42v2Ev
  ~S20636C4(); // tgen
  S20636C4(); // tgen
};
//SIG(-1 S20636C4) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v2 Fc Fi Fc:8} v1 Fs:8 Fp Fc:0 Fc[4] Fi}


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

static void Test_S20636C4()
{
  extern Class_Descriptor cd_S20636C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,48)];
    init_test(&cd_S20636C4, buf);
    S20636C4 *dp, &lv = *(dp=new (buf) S20636C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,188), "sizeof(S20636C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C4)");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S20636C4");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(160,112), "S20636C4");
    check_base_class_offset(lv, (S20636C5*), ABISELECT(136,96), "S20636C4");
    set_bf_and_test(lv, s20636c4f0, ABISELECT(112,80), 0, 8, 1, "S20636C4");
    set_bf_and_test(lv, s20636c4f0, ABISELECT(112,80), 0, 8, hide_sll(1LL<<7), "S20636C4");
    check_field_offset(lv, s20636c4f1, ABISELECT(120,84), "S20636C4.s20636c4f1");
    check_field_offset(lv, s20636c4f3, ABISELECT(128,88), "S20636C4.s20636c4f3");
    check_field_offset(lv, s20636c4f4, ABISELECT(132,92), "S20636C4.s20636c4f4");
    test_class_info(&lv, &cd_S20636C4);
    dp->~S20636C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C4(Test_S20636C4, "S20636C4", ABISELECT(256,188));

#else // __cplusplus

extern void _ZN8S20636C4C1Ev();
extern void _ZN8S20636C4D1Ev();
Name_Map name_map_S20636C4[] = {
  NSPAIR(_ZN8S20636C4C1Ev),
  NSPAIR(_ZN8S20636C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
static Base_Class bases_S20636C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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_S20636C3,    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, 1},
  {&cd_S20636C5,    ABISELECT(136,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20636C4[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY vtc_S20636C4[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20636C4[];
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C4[] = {
  {&(_ZTV8S20636C4[4]),  4,10},
  {&(_ZTV8S20636C4[9]),  9,10},
  {&(_tg__ZTV8S20636C5__8S20636C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
Class_Descriptor cd_S20636C4 = {  "S20636C4", // class name
  bases_S20636C4, 3,
  &(vtc_S20636C4[0]), // expected_vtbl_contents
  &(vtt_S20636C4[0]), // expected_vtt_contents
  ABISELECT(256,188), // object size
  NSPAIRA(_ZTI8S20636C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20636C4),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C4),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20636C2  : virtual S20636C3 , S20636C4 {
  virtual void  v3(); // _ZN8S20636C22v3Ev
  ~S20636C2(); // tgen
  S20636C2(); // tgen
};
//SIG(-1 S20636C2) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ BC2 VBC4{ VBC2 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v1}


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

static void Test_S20636C2()
{
  extern Class_Descriptor cd_S20636C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,48)];
    init_test(&cd_S20636C2, buf);
    S20636C2 *dp, &lv = *(dp=new (buf) S20636C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,188), "sizeof(S20636C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C2)");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S20636C2");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(144,96), "S20636C2");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(16,4), "S20636C2");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(240,172), "S20636C2");
    check_base_class_offset(lv, (S20636C4*), 0, "S20636C2");
    test_class_info(&lv, &cd_S20636C2);
    dp->~S20636C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C2(Test_S20636C2, "S20636C2", ABISELECT(272,188));

#else // __cplusplus

extern void _ZN8S20636C2C1Ev();
extern void _ZN8S20636C2D1Ev();
Name_Map name_map_S20636C2[] = {
  NSPAIR(_ZN8S20636C2C1Ev),
  NSPAIR(_ZN8S20636C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
static Base_Class bases_S20636C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(240,172), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    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 _ZTI8S20636C2[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY vtc_S20636C2[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20636C2[];
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__8S20636C2[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__8S20636C2[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C2[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C2[] = {
  {&(_ZTV8S20636C2[4]),  4,11},
  {&(_tg__ZTV8S20636C4__8S20636C2[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__8S20636C2[4]),  4,5},
  {&(_ZTV8S20636C2[10]),  10,11},
  {&(_tg__ZTV8S20636C5__8S20636C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
Class_Descriptor cd_S20636C2 = {  "S20636C2", // class name
  bases_S20636C2, 4,
  &(vtc_S20636C2[0]), // expected_vtbl_contents
  &(vtt_S20636C2[0]), // expected_vtt_contents
  ABISELECT(272,188), // object size
  NSPAIRA(_ZTI8S20636C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20636C2),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C2),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20636C7  : S20636C3 {
  int s20636c7f0[3];
  char s20636c7f1[15];
  char s20636c7f2:8;
  void *s20636c7f3[7];
  int s20636c7f4;
  __tsi64 s20636c7f5;
  virtual void  v4(); // _ZN8S20636C72v4Ev
  virtual void  v5(); // _ZN8S20636C72v5Ev
  ~S20636C7(); // tgen
  S20636C7(); // tgen
};
//SIG(-1 S20636C7) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 v2 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL}


void  S20636C7 ::v4(){vfunc_called(this, "_ZN8S20636C72v4Ev");}
void  S20636C7 ::v5(){vfunc_called(this, "_ZN8S20636C72v5Ev");}
S20636C7 ::~S20636C7(){ note_dtor("S20636C7", this);} // tgen
S20636C7 ::S20636C7(){ note_ctor("S20636C7", this);} // tgen

static void Test_S20636C7()
{
  extern Class_Descriptor cd_S20636C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,38)];
    init_test(&cd_S20636C7, buf);
    S20636C7 *dp, &lv = *(dp=new (buf) S20636C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S20636C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C7)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S20636C7");
    check_field_offset(lv, s20636c7f0, ABISELECT(112,80), "S20636C7.s20636c7f0");
    check_field_offset(lv, s20636c7f1, ABISELECT(124,92), "S20636C7.s20636c7f1");
    set_bf_and_test(lv, s20636c7f2, ABISELECT(139,107), 0, 8, 1, "S20636C7");
    set_bf_and_test(lv, s20636c7f2, ABISELECT(139,107), 0, 8, hide_sll(1LL<<7), "S20636C7");
    check_field_offset(lv, s20636c7f3, ABISELECT(144,108), "S20636C7.s20636c7f3");
    check_field_offset(lv, s20636c7f4, ABISELECT(200,136), "S20636C7.s20636c7f4");
    check_field_offset(lv, s20636c7f5, ABISELECT(208,140), "S20636C7.s20636c7f5");
    test_class_info(&lv, &cd_S20636C7);
    dp->~S20636C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C7(Test_S20636C7, "S20636C7", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN8S20636C7C1Ev();
extern void _ZN8S20636C7D1Ev();
Name_Map name_map_S20636C7[] = {
  NSPAIR(_ZN8S20636C7C1Ev),
  NSPAIR(_ZN8S20636C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S20636C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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 _ZTI8S20636C7[];
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY vtc_S20636C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C7[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
Class_Descriptor cd_S20636C7 = {  "S20636C7", // class name
  bases_S20636C7, 1,
  &(vtc_S20636C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI8S20636C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20636C7),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  S20636C9  : S20636C5 {
  void *s20636c9f0;
  ~S20636C9(); // tgen
  S20636C9(); // tgen
};
//SIG(-1 S20636C9) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} Fp}


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

static void Test_S20636C9()
{
  extern Class_Descriptor cd_S20636C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,25)];
    init_test(&cd_S20636C9, buf);
    S20636C9 *dp, &lv = *(dp=new (buf) S20636C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S20636C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C9)");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(32,20), "S20636C9");
    check_base_class_offset(lv, (S20636C5*), 0, "S20636C9");
    check_field_offset(lv, s20636c9f0, ABISELECT(24,16), "S20636C9.s20636c9f0");
    test_class_info(&lv, &cd_S20636C9);
    dp->~S20636C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C9(Test_S20636C9, "S20636C9", ABISELECT(128,96));

#else // __cplusplus

extern void _ZN8S20636C9C1Ev();
extern void _ZN8S20636C9D1Ev();
Name_Map name_map_S20636C9[] = {
  NSPAIR(_ZN8S20636C9C1Ev),
  NSPAIR(_ZN8S20636C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
static Base_Class bases_S20636C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20636C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20636C9[];
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY vtc_S20636C9[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C9[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20636C9[];
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C9[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C9[] = {
  {&(_ZTV8S20636C9[3]),  3,4},
  {&(_tg__ZTV8S20636C5__8S20636C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20636C9[];
extern  VTBL_ENTRY _ZTV8S20636C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C9[];
Class_Descriptor cd_S20636C9 = {  "S20636C9", // class name
  bases_S20636C9, 2,
  &(vtc_S20636C9[0]), // expected_vtbl_contents
  &(vtt_S20636C9[0]), // expected_vtt_contents
  ABISELECT(128,96), // object size
  NSPAIRA(_ZTI8S20636C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20636C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C9),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

union  S20636C12_nt  {
  void  mf20636c12(); // _ZN12S20636C12_nt10mf20636c12Ev
};
//SIG(1 S20636C12_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20636C11  : virtual S20636C3 , virtual S20636C5 , virtual S20636C7 {
  char s20636c11f0;
  int s20636c11f1;
  ::S20636C12_nt s20636c11f2;
  char s20636c11f3;
  int s20636c11f4;
  ~S20636C11(); // tgen
  S20636C11(); // tgen
};
//SIG(-1 S20636C11) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v1 Fc Fi Fc:8} VBC4{ BC2 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} Fc Fi FU5{ m} Fc Fi}


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

static void Test_S20636C11()
{
  extern Class_Descriptor cd_S20636C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,66)];
    init_test(&cd_S20636C11, buf);
    S20636C11 *dp, &lv = *(dp=new (buf) S20636C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,260), "sizeof(S20636C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C11)");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(32,20), "S20636C11");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(32,20), "S20636C11");
    check_base_class_offset(lv, (S20636C5*), ABISELECT(128,96), "S20636C11");
    check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(176,116), "S20636C11");
    check_base_class_offset(lv, (S20636C7*), ABISELECT(160,112), "S20636C11");
    check_field_offset(lv, s20636c11f0, ABISELECT(8,4), "S20636C11.s20636c11f0");
    check_field_offset(lv, s20636c11f1, ABISELECT(12,8), "S20636C11.s20636c11f1");
    check_field_offset(lv, s20636c11f2, ABISELECT(16,12), "S20636C11.s20636c11f2");
    check_field_offset(lv, s20636c11f3, ABISELECT(17,13), "S20636C11.s20636c11f3");
    check_field_offset(lv, s20636c11f4, ABISELECT(20,16), "S20636C11.s20636c11f4");
    test_class_info(&lv, &cd_S20636C11);
    dp->~S20636C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C11(Test_S20636C11, "S20636C11", ABISELECT(384,260));

#else // __cplusplus

extern void _ZN9S20636C11C1Ev();
extern void _ZN9S20636C11D1Ev();
Name_Map name_map_S20636C11[] = {
  NSPAIR(_ZN9S20636C11C1Ev),
  NSPAIR(_ZN9S20636C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
static Base_Class bases_S20636C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C5,    ABISELECT(128,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(160,112), //bcp->offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C11[];
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY vtc_S20636C11[] = {
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20636C11[];
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C11[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C11[] = {
  {&(_ZTV9S20636C11[5]),  5,16},
  {&(_ZTV9S20636C11[9]),  9,16},
  {&(_ZTV9S20636C11[14]),  14,16},
  {&(_tg__ZTV8S20636C5__9S20636C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
Class_Descriptor cd_S20636C11 = {  "S20636C11", // class name
  bases_S20636C11, 4,
  &(vtc_S20636C11[0]), // expected_vtbl_contents
  &(vtt_S20636C11[0]), // expected_vtt_contents
  ABISELECT(384,260), // object size
  NSPAIRA(_ZTI9S20636C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20636C11),16, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C11),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

union  S20636C14  {
  char s20636c14f0[9];
  int s20636c14f1;
  char s20636c14f2;
  long double s20636c14f3;
  short s20636c14f4;
  void *s20636c14f5;
  void *s20636c14f6[2];
  void *s20636c14f7;
  char s20636c14f8[10];
  int s20636c14f9;
  char s20636c14f10;
  int s20636c14f11;
  void *s20636c14f12;
  void  mf20636c14(); // _ZN9S20636C1410mf20636c14Ev
};
//SIG(1 S20636C14) U1{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20636C13  {
  void *s20636c13f0[2];
  __tsi64 s20636c13f1;
  void *s20636c13f2[8];
  int s20636c13f3;
  void *s20636c13f4;
  int s20636c13f5;
  ::S20636C14 s20636c13f6[6];
  char s20636c13f7;
  virtual void  v6(); // _ZN9S20636C132v6Ev
  virtual void  v7(); // _ZN9S20636C132v7Ev
  virtual void  v8(); // _ZN9S20636C132v8Ev
  ~S20636C13(); // tgen
  S20636C13(); // tgen
};
//SIG(-1 S20636C13) C1{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU2{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc}


void  S20636C13 ::v6(){vfunc_called(this, "_ZN9S20636C132v6Ev");}
void  S20636C13 ::v7(){vfunc_called(this, "_ZN9S20636C132v7Ev");}
void  S20636C13 ::v8(){vfunc_called(this, "_ZN9S20636C132v8Ev");}
S20636C13 ::~S20636C13(){ note_dtor("S20636C13", this);} // tgen
S20636C13 ::S20636C13(){ note_ctor("S20636C13", this);} // tgen

static void Test_S20636C13()
{
  extern Class_Descriptor cd_S20636C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,36)];
    init_test(&cd_S20636C13, buf);
    S20636C13 *dp, &lv = *(dp=new (buf) S20636C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,140), "sizeof(S20636C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C13)");
    check_field_offset(lv, s20636c13f0, ABISELECT(8,4), "S20636C13.s20636c13f0");
    check_field_offset(lv, s20636c13f1, ABISELECT(24,12), "S20636C13.s20636c13f1");
    check_field_offset(lv, s20636c13f2, ABISELECT(32,20), "S20636C13.s20636c13f2");
    check_field_offset(lv, s20636c13f3, ABISELECT(96,52), "S20636C13.s20636c13f3");
    check_field_offset(lv, s20636c13f4, ABISELECT(104,56), "S20636C13.s20636c13f4");
    check_field_offset(lv, s20636c13f5, ABISELECT(112,60), "S20636C13.s20636c13f5");
    check_field_offset(lv, s20636c13f6, ABISELECT(128,64), "S20636C13.s20636c13f6");
    check_field_offset(lv, s20636c13f7, ABISELECT(224,136), "S20636C13.s20636c13f7");
    test_class_info(&lv, &cd_S20636C13);
    dp->~S20636C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C13(Test_S20636C13, "S20636C13", ABISELECT(240,140));

#else // __cplusplus

extern void _ZN9S20636C13C1Ev();
extern void _ZN9S20636C13D1Ev();
Name_Map name_map_S20636C13[] = {
  NSPAIR(_ZN9S20636C13C1Ev),
  NSPAIR(_ZN9S20636C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20636C13[];
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY vtc_S20636C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C13[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
Class_Descriptor cd_S20636C13 = {  "S20636C13", // class name
  0,0,//no base classes
  &(vtc_S20636C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,140), // object size
  NSPAIRA(_ZTI9S20636C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20636C13),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  S20636C10  : virtual S20636C4 , S20636C7 , S20636C11 , S20636C5 , S20636C13 {
  void *s20636c10f0[7];
  char s20636c10f1;
  char s20636c10f2;
  int s20636c10f3;
  void *s20636c10f4;
  virtual void  v9(); // _ZN9S20636C102v9Ev
  ~S20636C10(); // tgen
  S20636C10(); // tgen
};
//SIG(-1 S20636C10) C1{ VBC2{ BC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC4{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} BC5{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC6{ VBC3 VBC4 VBC5 Fc Fi FU7{ m} Fc Fi} BC4 BC8{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU9{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v1 Fp[7] Fc Fc Fi Fp}


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

static void Test_S20636C10()
{
  extern Class_Descriptor cd_S20636C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(67,176)];
    init_test(&cd_S20636C10, buf);
    S20636C10 *dp, &lv = *(dp=new (buf) S20636C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,700), "sizeof(S20636C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C10)");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(592,368), "S20636C10");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(736,476), "S20636C10");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*), ABISELECT(736,476), "S20636C10");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(736,476), "S20636C10");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(712,460), "S20636C10");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*), ABISELECT(712,460), "S20636C10");
    check_base_class_offset(lv, (S20636C4*), ABISELECT(576,364), "S20636C10");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(16,4), "S20636C10");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*), 0, "S20636C10");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(848,556), "S20636C10");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*), ABISELECT(832,552), "S20636C10");
    check_base_class_offset(lv, (S20636C11*), ABISELECT(216,148), "S20636C10");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*), ABISELECT(240,168), "S20636C10");
    check_base_class_offset(lv, (S20636C13*), ABISELECT(272,184), "S20636C10");
    check_field_offset(lv, s20636c10f0, ABISELECT(504,324), "S20636C10.s20636c10f0");
    check_field_offset(lv, s20636c10f1, ABISELECT(560,352), "S20636C10.s20636c10f1");
    check_field_offset(lv, s20636c10f2, ABISELECT(561,353), "S20636C10.s20636c10f2");
    check_field_offset(lv, s20636c10f3, ABISELECT(564,356), "S20636C10.s20636c10f3");
    check_field_offset(lv, s20636c10f4, ABISELECT(568,360), "S20636C10.s20636c10f4");
    test_class_info(&lv, &cd_S20636C10);
    dp->~S20636C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C10(Test_S20636C10, "S20636C10", ABISELECT(1056,700));

#else // __cplusplus

extern void _ZN9S20636C10C1Ev();
extern void _ZN9S20636C10D1Ev();
Name_Map name_map_S20636C10[] = {
  NSPAIR(_ZN9S20636C10C1Ev),
  NSPAIR(_ZN9S20636C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
static Base_Class bases_S20636C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(592,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(736,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20636C5,    ABISELECT(712,460), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    ABISELECT(576,364), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20636C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20636C3,    ABISELECT(848,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
    7, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(832,552), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(216,148), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C5,    ABISELECT(240,168), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C13,    ABISELECT(272,184), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C10[];
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY vtc_S20636C10[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20636C10[];
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C11__9S20636C10[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C11__9S20636C10[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__9S20636C10[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C10[] = {
  {&(_ZTV9S20636C10[6]),  6,40},
  {&(_tg__ZTV9S20636C11__9S20636C10[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C11__9S20636C10[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C11__9S20636C10[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10[3]),  3,4},
  {&(_ZTV9S20636C10[28]),  28,40},
  {&(_ZTV9S20636C10[33]),  33,40},
  {&(_ZTV9S20636C10[14]),  14,40},
  {&(_ZTV9S20636C10[38]),  38,40},
  {&(_ZTV9S20636C10[17]),  17,40},
  {&(_tg__ZTV8S20636C4__9S20636C10[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__9S20636C10[4]),  4,5},
  {&(_tg__ZTV8S20636C5__9S20636C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
Class_Descriptor cd_S20636C10 = {  "S20636C10", // class name
  bases_S20636C10, 11,
  &(vtc_S20636C10[0]), // expected_vtbl_contents
  &(vtt_S20636C10[0]), // expected_vtt_contents
  ABISELECT(1056,700), // object size
  NSPAIRA(_ZTI9S20636C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20636C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C10),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20636C8  : virtual S20636C5 , S20636C4 , virtual S20636C9 , virtual S20636C10 , S20636C3 {
  unsigned char s20636c8f0:1;
  virtual  ~S20636C8(); // _ZN8S20636C8D2Ev
  virtual void  v10(); // _ZN8S20636C83v10Ev
  S20636C8(); // tgen
};
//SIG(-1 S20636C8) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v2 Fc Fi Fc:8} BC4{ BC3 VBC2 v3 Fs:8 Fp Fc:0 Fc[4] Fi} VBC5{ BC2 Fp} VBC6{ VBC4 BC7{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC2 VBC7 Fc Fi FU9{ m} Fc Fi} BC2 BC10{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU11{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v1 Fc:1}


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

static void Test_S20636C8()
{
  extern Class_Descriptor cd_S20636C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(85,225)];
    init_test(&cd_S20636C8, buf);
    S20636C8 *dp, &lv = *(dp=new (buf) S20636C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,896), "sizeof(S20636C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C8)");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(272,192), "S20636C8");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C9*), ABISELECT(272,192), "S20636C8");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(272,192), "S20636C8");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(272,192), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*), ABISELECT(248,176), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(248,176), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(248,176), "S20636C8");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(248,176), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(16,4), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C4*), 0, "S20636C8");
    check_base_class_offset(lv, (S20636C5*)(S20636C9*), ABISELECT(368,268), "S20636C8");
    check_base_class_offset(lv, (S20636C9*), ABISELECT(368,268), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(992,656), "S20636C8");
    check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(976,652), "S20636C8");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(416,292), "S20636C8");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(400,288), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(1136,752), "S20636C8");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(1120,748), "S20636C8");
    check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(616,436), "S20636C8");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(640,456), "S20636C8");
    check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(672,472), "S20636C8");
    check_base_class_offset(lv, (S20636C10*), ABISELECT(400,288), "S20636C8");
    /*is_ambiguous_... S20636C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S20636C8");
    set_bf_and_test(lv, s20636c8f0, ABISELECT(240,172), 0, 1, 1, "S20636C8");
    test_class_info(&lv, &cd_S20636C8);
    dp->~S20636C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C8(Test_S20636C8, "S20636C8", ABISELECT(1344,896));

#else // __cplusplus

extern void _ZN8S20636C8C1Ev();
extern void _ZN8S20636C8D2Ev();
Name_Map name_map_S20636C8[] = {
  NSPAIR(_ZN8S20636C8C1Ev),
  NSPAIR(_ZN8S20636C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C9;
extern VTBL_ENTRY _ZTI8S20636C9[];
extern  VTBL_ENTRY _ZTV8S20636C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S20636C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(272,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
    1, //immediately_derived
  0, 1},
  {&cd_S20636C5,    ABISELECT(248,176), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20636C4,    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_S20636C5,    ABISELECT(368,268), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20636C9,    ABISELECT(368,268), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(992,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20636C4,    ABISELECT(976,652), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(416,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(400,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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1136,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
    11, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(1120,748), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    12, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(616,436), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //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
    15, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(640,456), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(672,472), //bcp->offset
    47, //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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(400,288), //bcp->offset
    22, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20636C8[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C8D1Ev();
extern void _ZN8S20636C8D0Ev();
extern void _ZN8S20636C83v10Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY vtc_S20636C8[] = {
  ABISELECT(1120,748),
  ABISELECT(976,652),
  ABISELECT(400,288),
  ABISELECT(368,268),
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-616,-436),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  ABISELECT(-368,-264),
  ABISELECT(-640,-456),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-672,-472),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-976,-652),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  0,
  0,
  ABISELECT(-1120,-748),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S20636C8[];
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A__8S20636C8[] = {
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__A__8S20636C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C8[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C8[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C9[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C58S20636C9__A1__8S20636C8[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C8[] = {
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C8[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__8S20636C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(368,260),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__8S20636C8[] = {
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__8S20636C8[] = {
  ABISELECT(-368,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__8S20636C8[] = {
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__8S20636C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(152,112),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__8S20636C8[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__8S20636C8[] = {
  0,
  0,
  ABISELECT(-720,-460),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__8S20636C8[] = {
  ABISELECT(-368,-264),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C8[] = {
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__A1__8S20636C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(728,476),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C8[] = {
  {&(_ZTV8S20636C8[8]),  8,64},
  {&(_tg__ZTV8S20636C4__A__8S20636C8[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__A__8S20636C8[4]),  4,5},
  {&(_ZTV8S20636C8[16]),  16,64},
  {&(_ZTV8S20636C8[21]),  21,64},
  {&(_ZTV8S20636C8[35]),  35,64},
  {&(_ZTV8S20636C8[57]),  57,64},
  {&(_ZTV8S20636C8[43]),  43,64},
  {&(_ZTV8S20636C8[62]),  62,64},
  {&(_ZTV8S20636C8[46]),  46,64},
  {&(_ZTV8S20636C8[49]),  49,64},
  {&(_tg__ZTV8S20636C5__8S20636C8[3]),  3,4},
  {&(_tg__ZTV8S20636C9__8S20636C8[3]),  3,4},
  {&(_tg__ZTV8S20636C58S20636C9__A1__8S20636C8[3]),  3,4},
  {&(_tg__ZTV9S20636C10__8S20636C8[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C8[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__8S20636C8[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__8S20636C8[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__8S20636C8[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__8S20636C8[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__8S20636C8[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__8S20636C8[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__8S20636C8[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__8S20636C8[3]),  3,4},
  {&(_tg__ZTV8S20636C4__A1__8S20636C8[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__A1__8S20636C8[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20636C8[];
extern  VTBL_ENTRY _ZTV8S20636C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C8[];
Class_Descriptor cd_S20636C8 = {  "S20636C8", // class name
  bases_S20636C8, 17,
  &(vtc_S20636C8[0]), // expected_vtbl_contents
  &(vtt_S20636C8[0]), // expected_vtt_contents
  ABISELECT(1344,896), // object size
  NSPAIRA(_ZTI8S20636C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20636C8),64, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C8),26, //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  S20636C15  {
  int s20636c15f0;
  char s20636c15f1;
  ::S20636C3 s20636c15f2;
  int s20636c15f3;
  void *s20636c15f4;
  ::S20636C13 s20636c15f5;
  int s20636c15f6;
  ::S20636C4 s20636c15f7[9];
  __tsi64 s20636c15f8;
  virtual void  v15(); // _ZN9S20636C153v15Ev
  virtual void  v16(); // _ZN9S20636C153v16Ev
  ~S20636C15(); // tgen
  S20636C15(); // tgen
};
//SIG(-1 S20636C15) C1{ v1 v2 Fi Fc FC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} Fi Fp FC3{ v3 v4 v5 Fp[2] FL Fp[8] Fi Fp Fi FU4{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} Fi FC5{ BC2 VBC6{ VBC2 v7 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL}


void  S20636C15 ::v15(){vfunc_called(this, "_ZN9S20636C153v15Ev");}
void  S20636C15 ::v16(){vfunc_called(this, "_ZN9S20636C153v16Ev");}
S20636C15 ::~S20636C15(){ note_dtor("S20636C15", this);} // tgen
S20636C15 ::S20636C15(){ note_ctor("S20636C15", this);} // tgen

static void Test_S20636C15()
{
  extern Class_Descriptor cd_S20636C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(170,486)];
    init_test(&cd_S20636C15, buf);
    S20636C15 *dp, &lv = *(dp=new (buf) S20636C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2704,1940), "sizeof(S20636C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C15)");
    check_field_offset(lv, s20636c15f0, ABISELECT(8,4), "S20636C15.s20636c15f0");
    check_field_offset(lv, s20636c15f1, ABISELECT(12,8), "S20636C15.s20636c15f1");
    check_field_offset(lv, s20636c15f2, ABISELECT(16,12), "S20636C15.s20636c15f2");
    check_field_offset(lv, s20636c15f3, ABISELECT(112,88), "S20636C15.s20636c15f3");
    check_field_offset(lv, s20636c15f4, ABISELECT(120,92), "S20636C15.s20636c15f4");
    check_field_offset(lv, s20636c15f5, ABISELECT(128,96), "S20636C15.s20636c15f5");
    check_field_offset(lv, s20636c15f6, ABISELECT(368,236), "S20636C15.s20636c15f6");
    check_field_offset(lv, s20636c15f7, ABISELECT(384,240), "S20636C15.s20636c15f7");
    check_field_offset(lv, s20636c15f8, ABISELECT(2688,1932), "S20636C15.s20636c15f8");
    test_class_info(&lv, &cd_S20636C15);
    dp->~S20636C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C15(Test_S20636C15, "S20636C15", ABISELECT(2704,1940));

#else // __cplusplus

extern void _ZN9S20636C15C1Ev();
extern void _ZN9S20636C15D1Ev();
Name_Map name_map_S20636C15[] = {
  NSPAIR(_ZN9S20636C15C1Ev),
  NSPAIR(_ZN9S20636C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20636C15[];
extern void _ZN9S20636C153v15Ev();
extern void _ZN9S20636C153v16Ev();
static  VTBL_ENTRY vtc_S20636C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C15[0]),
  (VTBL_ENTRY)&_ZN9S20636C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20636C153v16Ev,
};
extern VTBL_ENTRY _ZTI9S20636C15[];
extern  VTBL_ENTRY _ZTV9S20636C15[];
Class_Descriptor cd_S20636C15 = {  "S20636C15", // class name
  0,0,//no base classes
  &(vtc_S20636C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2704,1940), // object size
  NSPAIRA(_ZTI9S20636C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20636C15),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  S20636C16  : S20636C13 {
  ::S20636C10 s20636c16f0[5];
  int s20636c16f1;
  char s20636c16f2;
  void *s20636c16f3;
  char s20636c16f4;
  int s20636c16f5:5;
  int s20636c16f6[6];
  int s20636c16f7;
  ::S20636C8 s20636c16f8;
  char s20636c16f9;
  char s20636c16f10;
  char s20636c16f11;
  ~S20636C16(); // tgen
  S20636C16(); // tgen
};
//SIG(-1 S20636C16) C1{ BC2{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU3{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC4{ VBC5{ BC6{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC7{ VBC6 v5 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi} BC8{ BC6 v7 v8 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC9{ VBC6 VBC7 VBC8 Fc Fi FU10{ m} Fc Fi} BC7 BC2 v4 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC11{ VBC7 BC5 VBC12{ BC7 Fp} VBC4 BC6 vd v9 Fc:1} Fc Fc Fc}


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

static void Test_S20636C16()
{
  extern Class_Descriptor cd_S20636C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(434,1147)];
    init_test(&cd_S20636C16, buf);
    S20636C16 *dp, &lv = *(dp=new (buf) S20636C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6928,4584), "sizeof(S20636C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C16)");
    check_base_class_offset(lv, (S20636C13*), 0, "S20636C16");
    check_field_offset(lv, s20636c16f0, ABISELECT(240,140), "S20636C16.s20636c16f0");
    check_field_offset(lv, s20636c16f1, ABISELECT(5520,3640), "S20636C16.s20636c16f1");
    check_field_offset(lv, s20636c16f2, ABISELECT(5524,3644), "S20636C16.s20636c16f2");
    check_field_offset(lv, s20636c16f3, ABISELECT(5528,3648), "S20636C16.s20636c16f3");
    check_field_offset(lv, s20636c16f4, ABISELECT(5536,3652), "S20636C16.s20636c16f4");
    set_bf_and_test(lv, s20636c16f5, ABISELECT(5537,3653), 0, 5, 1, "S20636C16");
    set_bf_and_test(lv, s20636c16f5, ABISELECT(5537,3653), 0, 5, hide_sll(1LL<<4), "S20636C16");
    check_field_offset(lv, s20636c16f6, ABISELECT(5540,3656), "S20636C16.s20636c16f6");
    check_field_offset(lv, s20636c16f7, ABISELECT(5564,3680), "S20636C16.s20636c16f7");
    check_field_offset(lv, s20636c16f8, ABISELECT(5568,3684), "S20636C16.s20636c16f8");
    check_field_offset(lv, s20636c16f9, ABISELECT(6912,4580), "S20636C16.s20636c16f9");
    check_field_offset(lv, s20636c16f10, ABISELECT(6913,4581), "S20636C16.s20636c16f10");
    check_field_offset(lv, s20636c16f11, ABISELECT(6914,4582), "S20636C16.s20636c16f11");
    test_class_info(&lv, &cd_S20636C16);
    dp->~S20636C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C16(Test_S20636C16, "S20636C16", ABISELECT(6928,4584));

#else // __cplusplus

extern void _ZN9S20636C16C1Ev();
extern void _ZN9S20636C16D1Ev();
Name_Map name_map_S20636C16[] = {
  NSPAIR(_ZN9S20636C16C1Ev),
  NSPAIR(_ZN9S20636C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
static Base_Class bases_S20636C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C13,    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 _ZTI9S20636C16[];
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY vtc_S20636C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C16[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern VTBL_ENTRY _ZTI9S20636C16[];
extern  VTBL_ENTRY _ZTV9S20636C16[];
Class_Descriptor cd_S20636C16 = {  "S20636C16", // class name
  bases_S20636C16, 1,
  &(vtc_S20636C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6928,4584), // object size
  NSPAIRA(_ZTI9S20636C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20636C16),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  S20636C6  : S20636C5 , virtual S20636C7 , S20636C8 {
  ::S20636C15 s20636c6f0;
  ::S20636C16 s20636c6f1;
  int s20636c6f2;
  ~S20636C6(); // tgen
  S20636C6(); // tgen
};
//SIG(-1 S20636C6) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} VBC4{ BC3 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC5{ VBC2 BC6{ BC3 VBC2 v4 Fs:8 Fp Fc:0 Fc[4] Fi} VBC7{ BC2 Fp} VBC8{ VBC6 BC4 BC9{ VBC3 VBC2 VBC4 Fc Fi FU10{ m} Fc Fi} BC2 BC11{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} BC3 vd v9 Fc:1} FC13{ v10 v11 Fi Fc FC3 Fi Fp FC11 Fi FC6[9] FL} FC14{ BC11 FC8[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC5 Fc Fc Fc} Fi}


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

static void Test_S20636C6()
{
  extern Class_Descriptor cd_S20636C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(690,1861)];
    init_test(&cd_S20636C6, buf);
    S20636C6 *dp, &lv = *(dp=new (buf) S20636C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11024,7440), "sizeof(S20636C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C6)");
    /*is_ambiguous_... S20636C6::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(9936,6720), "S20636C6");
    /*is_ambiguous_... S20636C6::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(9936,6720), "S20636C6");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C9*), ABISELECT(9936,6720), "S20636C6");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(9936,6720), "S20636C6");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(9936,6720), "S20636C6");
    /*is_ambiguous_... S20636C6::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*), 0, "S20636C6");
    /*is_ambiguous_... S20636C6::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(10048,6800), "S20636C6");
    /*is_ambiguous_... S20636C6::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*), ABISELECT(10032,6796), "S20636C6");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(10032,6796), "S20636C6");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C8*), ABISELECT(10248,6944), "S20636C6");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C8*), ABISELECT(10248,6944), "S20636C6");
    /*is_ambiguous_... S20636C6::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(10248,6944), "S20636C6");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(10248,6944), "S20636C6");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C8*), ABISELECT(48,20), "S20636C6");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C8*), ABISELECT(32,16), "S20636C6");
    check_base_class_offset(lv, (S20636C5*)(S20636C9*), ABISELECT(10272,6960), "S20636C6");
    check_base_class_offset(lv, (S20636C9*)(S20636C8*), ABISELECT(10272,6960), "S20636C6");
    /*is_ambiguous_... S20636C6::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(10896,7348), "S20636C6");
    check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(10880,7344), "S20636C6");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(10320,6984), "S20636C6");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(10304,6980), "S20636C6");
    check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(10520,7128), "S20636C6");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(10544,7148), "S20636C6");
    check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(10576,7164), "S20636C6");
    check_base_class_offset(lv, (S20636C10*)(S20636C8*), ABISELECT(10304,6980), "S20636C6");
    /*is_ambiguous_... S20636C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C8*), ABISELECT(176,112), "S20636C6");
    check_base_class_offset(lv, (S20636C8*), ABISELECT(32,16), "S20636C6");
    check_field_offset(lv, s20636c6f0, ABISELECT(288,192), "S20636C6.s20636c6f0");
    check_field_offset(lv, s20636c6f1, ABISELECT(2992,2132), "S20636C6.s20636c6f1");
    check_field_offset(lv, s20636c6f2, ABISELECT(9920,6716), "S20636C6.s20636c6f2");
    test_class_info(&lv, &cd_S20636C6);
    dp->~S20636C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C6(Test_S20636C6, "S20636C6", ABISELECT(11024,7440));

#else // __cplusplus

extern void _ZN8S20636C6C1Ev();
extern void _ZN8S20636C6D1Ev();
Name_Map name_map_S20636C6[] = {
  NSPAIR(_ZN8S20636C6C1Ev),
  NSPAIR(_ZN8S20636C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C9;
extern VTBL_ENTRY _ZTI8S20636C9[];
extern  VTBL_ENTRY _ZTV8S20636C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C8;
extern VTBL_ENTRY _ZTI8S20636C8[];
extern  VTBL_ENTRY _ZTV8S20636C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C8[];
static Base_Class bases_S20636C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(9936,6720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20636C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(10048,6800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(10032,6796), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C5,    ABISELECT(10248,6944), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20636C4,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(10272,6960), //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20636C9,    ABISELECT(10272,6960), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10896,7348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C4,    ABISELECT(10880,7344), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10320,6984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(10304,6980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(10520,7128), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(10544,7148), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(10576,7164), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(10304,6980), //bcp->offset
    39, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20636C8,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20636C6[];
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C6D1Ev();
extern void _ZN8S20636C6D0Ev();
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZThn32_N8S20636C6D1Ev,_ZThn16_N8S20636C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20636C6D0Ev,_ZThn16_N8S20636C6D0Ev)();
extern void _ZN8S20636C83v10Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY vtc_S20636C6[] = {
  ABISELECT(10880,7344),
  ABISELECT(10304,6980),
  ABISELECT(10272,6960),
  ABISELECT(10248,6944),
  ABISELECT(10032,6796),
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  (VTBL_ENTRY)&_ZN8S20636C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C6D0Ev,
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20636C6D1Ev,_ZThn16_N8S20636C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20636C6D0Ev,_ZThn16_N8S20636C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
  0,
  0,
  ABISELECT(-10032,-6796),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10248,-6944),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10272,-6960),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10304,-6980),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10520,-7128),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  ABISELECT(-608,-428),
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-10576,-7164),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10880,-7344),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern VTBL_ENTRY _ZTV8S20636C6[];
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__8S20636C6[] = {
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C8D1Ev();
extern void _ZN8S20636C8D0Ev();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C8__8S20636C6[] = {
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C8__8S20636C6[] = {
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C8__8S20636C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C8__8S20636C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C8__8S20636C6[] = {
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10240,-6944),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C8__8S20636C6[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10272,-6964),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C8__8S20636C6[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10848,-7328),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C8__8S20636C6[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10488,-7112),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__8S20636C8__8S20636C6[] = {
  0,
  0,
  ABISELECT(-10000,-6780),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__8S20636C8__8S20636C6[] = {
  ABISELECT(-608,-428),
  ABISELECT(-10512,-7132),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__8S20636C8__8S20636C6[] = {
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A1__8S20636C6[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C6[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C9[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C58S20636C9__A2__8S20636C6[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C6[] = {
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C6[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__8S20636C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__8S20636C6[] = {
  0,
  0,
  ABISELECT(488,332),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A3__8S20636C6[] = {
  ABISELECT(-608,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__8S20636C6[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__8S20636C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__8S20636C6[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__8S20636C6[] = {
  0,
  0,
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__8S20636C6[] = {
  ABISELECT(-608,-428),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C6[] = {
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__A1__8S20636C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(632,400),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C6[] = {
  {&(_ZTV8S20636C6[8]),  8,75},
  {&(_tg__ZTV8S20636C5__A__8S20636C6[3]),  3,4},
  {&(_tg__ZTV8S20636C8__8S20636C6[8]),  8,12},
  {&(_tg__ZTV8S20636C48S20636C8__8S20636C6[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C8__8S20636C6[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C8__8S20636C6[4]),  4,5},
  {&(_tg__ZTV8S20636C9__8S20636C8__8S20636C6[4]),  4,5},
  {&(_tg__ZTV9S20636C10__8S20636C8__8S20636C6[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A1__8S20636C8__8S20636C6[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C8__8S20636C6[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__8S20636C8__8S20636C6[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__8S20636C8__8S20636C6[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__8S20636C8__8S20636C6[2]),  2,5},
  {&(_ZTV8S20636C6[27]),  27,75},
  {&(_ZTV8S20636C6[19]),  19,75},
  {&(_ZTV8S20636C6[33]),  33,75},
  {&(_ZTV8S20636C6[38]),  38,75},
  {&(_ZTV8S20636C6[52]),  52,75},
  {&(_ZTV8S20636C6[74]),  74,75},
  {&(_ZTV8S20636C6[60]),  60,75},
  {&(_ZTV8S20636C6[63]),  63,75},
  {&(_ZTV8S20636C6[66]),  66,75},
  {&(_tg__ZTV8S20636C5__A1__8S20636C6[3]),  3,4},
  {&(_tg__ZTV8S20636C9__8S20636C6[3]),  3,4},
  {&(_tg__ZTV8S20636C58S20636C9__A2__8S20636C6[3]),  3,4},
  {&(_tg__ZTV9S20636C10__8S20636C6[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C6[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__8S20636C6[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__8S20636C6[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A3__8S20636C6[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__8S20636C6[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__8S20636C6[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__8S20636C6[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__8S20636C6[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__8S20636C6[3]),  3,4},
  {&(_tg__ZTV8S20636C4__A1__8S20636C6[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__A1__8S20636C6[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20636C6[];
extern  VTBL_ENTRY _ZTV8S20636C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C6[];
Class_Descriptor cd_S20636C6 = {  "S20636C6", // class name
  bases_S20636C6, 19,
  &(vtc_S20636C6[0]), // expected_vtbl_contents
  &(vtt_S20636C6[0]), // expected_vtt_contents
  ABISELECT(11024,7440), // object size
  NSPAIRA(_ZTI8S20636C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20636C6),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C6),37, //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  S20636C18  : virtual S20636C3 , S20636C2 , S20636C7 , S20636C11 {
  int s20636c18f0[4];
  virtual void  v11(); // _ZN9S20636C183v11Ev
  virtual void  v12(); // _ZN9S20636C183v12Ev
  ~S20636C18(); // tgen
  S20636C18(); // tgen
};
//SIG(-1 S20636C18) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ VBC2 BC4{ BC2 VBC5{ VBC2 v3 Fc Fi Fc:8} v4 Fs:8 Fp Fc:0 Fc[4] Fi} v5} BC6{ BC2 v6 v7 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC2 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} v1 v2 Fi[4]}


void  S20636C18 ::v11(){vfunc_called(this, "_ZN9S20636C183v11Ev");}
void  S20636C18 ::v12(){vfunc_called(this, "_ZN9S20636C183v12Ev");}
S20636C18 ::~S20636C18(){ note_dtor("S20636C18", this);} // tgen
S20636C18 ::S20636C18(){ note_ctor("S20636C18", this);} // tgen

static void Test_S20636C18()
{
  extern Class_Descriptor cd_S20636C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,131)];
    init_test(&cd_S20636C18, buf);
    S20636C18 *dp, &lv = *(dp=new (buf) S20636C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,520), "sizeof(S20636C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C18)");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(400,280), "S20636C18");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*), ABISELECT(400,280), "S20636C18");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(400,280), "S20636C18");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*), ABISELECT(400,280), "S20636C18");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*), ABISELECT(16,4), "S20636C18");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*), ABISELECT(496,356), "S20636C18");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*), ABISELECT(496,356), "S20636C18");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*), 0, "S20636C18");
    check_base_class_offset(lv, (S20636C2*), 0, "S20636C18");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(160,100), "S20636C18");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*), ABISELECT(144,96), "S20636C18");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(544,376), "S20636C18");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*), ABISELECT(528,372), "S20636C18");
    check_base_class_offset(lv, (S20636C11*), ABISELECT(360,244), "S20636C18");
    check_field_offset(lv, s20636c18f0, ABISELECT(384,264), "S20636C18.s20636c18f0");
    test_class_info(&lv, &cd_S20636C18);
    dp->~S20636C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C18(Test_S20636C18, "S20636C18", ABISELECT(752,520));

#else // __cplusplus

extern void _ZN9S20636C18C1Ev();
extern void _ZN9S20636C18D1Ev();
Name_Map name_map_S20636C18[] = {
  NSPAIR(_ZN9S20636C18C1Ev),
  NSPAIR(_ZN9S20636C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
static Base_Class bases_S20636C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(400,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(496,356), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20636C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(144,96), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(544,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(528,372), //bcp->offset
    23, //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
    9, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(360,244), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C18[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY vtc_S20636C18[] = {
  ABISELECT(528,372),
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-528,-372),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20636C18[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C2__9S20636C18[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C2__9S20636C18[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C2__9S20636C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C2__9S20636C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C18[] = {
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C11__9S20636C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C11__9S20636C18[] = {
  0,
  0,
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C18[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C18[] = {
  {&(_ZTV9S20636C18[5]),  5,29},
  {&(_tg__ZTV8S20636C2__9S20636C18[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C2__9S20636C18[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C2__9S20636C18[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C2__9S20636C18[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C18[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C11__9S20636C18[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C11__9S20636C18[4]),  4,6},
  {&(_ZTV9S20636C18[22]),  22,29},
  {&(_ZTV9S20636C18[18]),  18,29},
  {&(_ZTV9S20636C18[27]),  27,29},
  {&(_tg__ZTV8S20636C5__9S20636C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
Class_Descriptor cd_S20636C18 = {  "S20636C18", // class name
  bases_S20636C18, 10,
  &(vtc_S20636C18[0]), // expected_vtbl_contents
  &(vtt_S20636C18[0]), // expected_vtt_contents
  ABISELECT(752,520), // object size
  NSPAIRA(_ZTI9S20636C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20636C18),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C18),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20636C19  : S20636C18 , S20636C7 , virtual S20636C10 {
  __tsi64 s20636c19f0;
  void *s20636c19f1;
  int s20636c19f2;
  virtual void  v17(); // _ZN9S20636C193v17Ev
  ~S20636C19(); // tgen
  S20636C19(); // tgen
};
//SIG(-1 S20636C19) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ VBC3 BC5{ BC3 VBC6{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v4} BC7{ BC3 v5 v6 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} v7 v8 Fi[4]} BC7 VBC10{ VBC5 BC7 BC8 BC6 BC11{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v12 Fp[7] Fc Fc Fi Fp} v1 FL Fp Fi}


void  S20636C19 ::v17(){vfunc_called(this, "_ZN9S20636C193v17Ev");}
S20636C19 ::~S20636C19(){ note_dtor("S20636C19", this);} // tgen
S20636C19 ::S20636C19(){ note_ctor("S20636C19", this);} // tgen

static void Test_S20636C19()
{
  extern Class_Descriptor cd_S20636C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(108,287)];
    init_test(&cd_S20636C19, buf);
    S20636C19 *dp, &lv = *(dp=new (buf) S20636C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1712,1144), "sizeof(S20636C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C19)");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C18*), ABISELECT(640,444), "S20636C19");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*)(S20636C18*), ABISELECT(640,444), "S20636C19");
    /*is_ambiguous_... S20636C19::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(640,444), "S20636C19");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C18*), ABISELECT(640,444), "S20636C19");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(640,444), "S20636C19");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(640,444), "S20636C19");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*)(S20636C18*), ABISELECT(16,4), "S20636C19");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*)(S20636C18*), ABISELECT(736,520), "S20636C19");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C18*), ABISELECT(736,520), "S20636C19");
    /*is_ambiguous_... S20636C19::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(736,520), "S20636C19");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(736,520), "S20636C19");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*)(S20636C18*), 0, "S20636C19");
    check_base_class_offset(lv, (S20636C2*)(S20636C18*), 0, "S20636C19");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C18*), ABISELECT(160,100), "S20636C19");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C18*), ABISELECT(144,96), "S20636C19");
    /*is_ambiguous_... S20636C19::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(784,540), "S20636C19");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C18*), ABISELECT(768,536), "S20636C19");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(768,536), "S20636C19");
    check_base_class_offset(lv, (S20636C11*)(S20636C18*), ABISELECT(360,244), "S20636C19");
    check_base_class_offset(lv, (S20636C18*), 0, "S20636C19");
    /*is_ambiguous_... S20636C19::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(416,284), "S20636C19");
    /*is_ambiguous_... S20636C19::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*), ABISELECT(400,280), "S20636C19");
    /*is_ambiguous_... S20636C19::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(1584,1052), "S20636C19");
    check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(1568,1048), "S20636C19");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(1008,688), "S20636C19");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(992,684), "S20636C19");
    check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(1208,832), "S20636C19");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(1232,852), "S20636C19");
    check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(1264,868), "S20636C19");
    check_base_class_offset(lv, (S20636C10*), ABISELECT(992,684), "S20636C19");
    check_field_offset(lv, s20636c19f0, ABISELECT(616,428), "S20636C19.s20636c19f0");
    check_field_offset(lv, s20636c19f1, ABISELECT(624,436), "S20636C19.s20636c19f1");
    check_field_offset(lv, s20636c19f2, ABISELECT(632,440), "S20636C19.s20636c19f2");
    test_class_info(&lv, &cd_S20636C19);
    dp->~S20636C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C19(Test_S20636C19, "S20636C19", ABISELECT(1712,1144));

#else // __cplusplus

extern void _ZN9S20636C19C1Ev();
extern void _ZN9S20636C19D1Ev();
Name_Map name_map_S20636C19[] = {
  NSPAIR(_ZN9S20636C19C1Ev),
  NSPAIR(_ZN9S20636C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C18;
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
static Base_Class bases_S20636C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(640,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(736,520), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20636C2,    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_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(144,96), //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
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(784,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(768,536), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(360,244), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(416,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
    12, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(400,280), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(1584,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C4,    ABISELECT(1568,1048), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(1008,688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(992,684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(1208,832), //bcp->offset
    52, //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
    5, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(1232,852), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(1264,868), //bcp->offset
    61, //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
    20, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(992,684), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C19[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C193v17Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY vtc_S20636C19[] = {
  ABISELECT(1568,1048),
  ABISELECT(992,684),
  ABISELECT(768,536),
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C193v17Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(408,292),
  ABISELECT(376,276),
  ABISELECT(280,200),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-768,-536),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-224,-148),
  ABISELECT(-352,-240),
  ABISELECT(-256,-164),
  ABISELECT(576,364),
  ABISELECT(-992,-684),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(-440,-296),
  ABISELECT(-472,-312),
  ABISELECT(-568,-388),
  ABISELECT(-1208,-832),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  ABISELECT(-592,-408),
  ABISELECT(-1232,-852),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-1264,-868),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(-928,-604),
  ABISELECT(-832,-528),
  ABISELECT(-1568,-1048),
  (VTBL_ENTRY)&(_ZTI9S20636C19[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S20636C19[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C18__9S20636C19[] = {
  ABISELECT(768,536),
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C29S20636C18__9S20636C19[] = {
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C29S20636C18__9S20636C19[] = {
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C29S20636C18__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C29S20636C18__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C18__9S20636C19[] = {
  ABISELECT(408,292),
  ABISELECT(376,276),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C18__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C18__9S20636C19[] = {
  0,
  0,
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C18__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C18__9S20636C19[] = {
  ABISELECT(408,292),
  ABISELECT(376,276),
  ABISELECT(280,200),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C18__9S20636C19[] = {
  0,
  0,
  ABISELECT(-768,-536),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C19[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__9S20636C19[] = {
  ABISELECT(-224,-148),
  ABISELECT(-352,-240),
  ABISELECT(-256,-164),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__A1__9S20636C19[] = {
  ABISELECT(-440,-296),
  ABISELECT(-472,-312),
  ABISELECT(-568,-388),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__A1__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(472,312),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__A1__9S20636C19[] = {
  0,
  0,
  ABISELECT(440,296),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A1__9S20636C19[] = {
  ABISELECT(-592,-408),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__9S20636C19[] = {
  0,
  ABISELECT(-928,-604),
  ABISELECT(-832,-528),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(256,164),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__9S20636C19[] = {
  ABISELECT(-440,-296),
  ABISELECT(-472,-312),
  ABISELECT(-568,-388),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__9S20636C19[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__9S20636C19[] = {
  ABISELECT(-592,-408),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__9S20636C19[] = {
  ABISELECT(-928,-604),
  ABISELECT(-832,-528),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__A1__9S20636C19[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(832,528),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C19[] = {
  {&(_ZTV9S20636C19[7]),  7,72},
  {&(_tg__ZTV9S20636C18__9S20636C19[5]),  5,9},
  {&(_tg__ZTV8S20636C29S20636C18__9S20636C19[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C29S20636C18__9S20636C19[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C29S20636C18__9S20636C19[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C29S20636C18__9S20636C19[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C18__9S20636C19[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C18__9S20636C19[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C18__9S20636C19[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C18__9S20636C19[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C18__9S20636C19[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C18__9S20636C19[4]),  4,6},
  {&(_ZTV9S20636C19[29]),  29,72},
  {&(_ZTV9S20636C19[21]),  21,72},
  {&(_ZTV9S20636C19[34]),  34,72},
  {&(_ZTV9S20636C19[49]),  49,72},
  {&(_ZTV9S20636C19[71]),  71,72},
  {&(_ZTV9S20636C19[57]),  57,72},
  {&(_ZTV9S20636C19[60]),  60,72},
  {&(_ZTV9S20636C19[63]),  63,72},
  {&(_tg__ZTV8S20636C5__9S20636C19[3]),  3,4},
  {&(_tg__ZTV9S20636C10__9S20636C19[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__A1__9S20636C19[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__A1__9S20636C19[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__A1__9S20636C19[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A1__9S20636C19[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__9S20636C19[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__9S20636C19[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__9S20636C19[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__9S20636C19[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__9S20636C19[3]),  3,4},
  {&(_tg__ZTV8S20636C4__A1__9S20636C19[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__A1__9S20636C19[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20636C19[];
extern  VTBL_ENTRY _ZTV9S20636C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C19[];
Class_Descriptor cd_S20636C19 = {  "S20636C19", // class name
  bases_S20636C19, 21,
  &(vtc_S20636C19[0]), // expected_vtbl_contents
  &(vtt_S20636C19[0]), // expected_vtt_contents
  ABISELECT(1712,1144), // object size
  NSPAIRA(_ZTI9S20636C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20636C19),72, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C19),33, //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  S20636C17  : S20636C18 , virtual S20636C16 {
  int s20636c17f0;
  ::S20636C19 s20636c17f1;
  virtual void  v13(); // _ZN9S20636C173v13Ev
  ~S20636C17(); // tgen
  S20636C17(); // tgen
};
//SIG(-1 S20636C17) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ VBC3 BC5{ BC3 VBC6{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v4} BC7{ BC3 v5 v6 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} v7 v8 Fi[4]} VBC10{ BC11{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC13{ VBC5 BC7 BC8 BC6 BC11 v13 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC14{ VBC6 BC5 VBC15{ BC6 Fp} VBC13 BC3 vd v14 Fc:1} Fc Fc Fc} v1 Fi FC16{ BC2 BC7 VBC13 v12 FL Fp Fi}}


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

static void Test_S20636C17()
{
  extern Class_Descriptor cd_S20636C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(589,1564)];
    init_test(&cd_S20636C17, buf);
    S20636C17 *dp, &lv = *(dp=new (buf) S20636C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9408,6252), "sizeof(S20636C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C17)");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C18*), ABISELECT(2128,1428), "S20636C17");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*)(S20636C18*), ABISELECT(2128,1428), "S20636C17");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(2128,1428), "S20636C17");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C18*), ABISELECT(2128,1428), "S20636C17");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*)(S20636C18*), ABISELECT(16,4), "S20636C17");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*)(S20636C18*), ABISELECT(2224,1504), "S20636C17");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C18*), ABISELECT(2224,1504), "S20636C17");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*)(S20636C18*), 0, "S20636C17");
    check_base_class_offset(lv, (S20636C2*)(S20636C18*), 0, "S20636C17");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C18*), ABISELECT(160,100), "S20636C17");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C18*), ABISELECT(144,96), "S20636C17");
    /*is_ambiguous_... S20636C17::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(2272,1524), "S20636C17");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C18*), ABISELECT(2256,1520), "S20636C17");
    check_base_class_offset(lv, (S20636C11*)(S20636C18*), ABISELECT(360,244), "S20636C17");
    check_base_class_offset(lv, (S20636C18*), 0, "S20636C17");
    check_base_class_offset(lv, (S20636C13*)(S20636C16*), ABISELECT(2480,1668), "S20636C17");
    check_base_class_offset(lv, (S20636C16*), ABISELECT(2480,1668), "S20636C17");
    check_field_offset(lv, s20636c17f0, ABISELECT(400,280), "S20636C17.s20636c17f0");
    check_field_offset(lv, s20636c17f1, ABISELECT(416,284), "S20636C17.s20636c17f1");
    test_class_info(&lv, &cd_S20636C17);
    dp->~S20636C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C17(Test_S20636C17, "S20636C17", ABISELECT(9408,6252));

#else // __cplusplus

extern void _ZN9S20636C17C1Ev();
extern void _ZN9S20636C17D1Ev();
Name_Map name_map_S20636C17[] = {
  NSPAIR(_ZN9S20636C17C1Ev),
  NSPAIR(_ZN9S20636C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C18;
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C16;
extern VTBL_ENTRY _ZTI9S20636C16[];
extern  VTBL_ENTRY _ZTV9S20636C16[];
static Base_Class bases_S20636C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(2128,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(2224,1504), //bcp->offset
    20, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20636C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(144,96), //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(2272,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
    8, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(2256,1520), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(360,244), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C13,    ABISELECT(2480,1668), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20636C16,    ABISELECT(2480,1668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C17[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C173v13Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY vtc_S20636C17[] = {
  ABISELECT(2480,1668),
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C173v13Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-2480,-1668),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern VTBL_ENTRY _ZTV9S20636C17[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C18__9S20636C17[] = {
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C29S20636C18__9S20636C17[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C29S20636C18__9S20636C17[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C29S20636C18__9S20636C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C29S20636C18__9S20636C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C18__9S20636C17[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C18__9S20636C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-1864,-1260),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C18__9S20636C17[] = {
  0,
  0,
  ABISELECT(-1896,-1276),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C18__9S20636C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C18__9S20636C17[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C18__9S20636C17[] = {
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C17[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C17[] = {
  {&(_ZTV9S20636C17[6]),  6,39},
  {&(_tg__ZTV9S20636C18__9S20636C17[5]),  5,9},
  {&(_tg__ZTV8S20636C29S20636C18__9S20636C17[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C29S20636C18__9S20636C17[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C29S20636C18__9S20636C17[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C29S20636C18__9S20636C17[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C18__9S20636C17[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C18__9S20636C17[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C18__9S20636C17[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C18__9S20636C17[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C18__9S20636C17[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C18__9S20636C17[4]),  4,6},
  {&(_ZTV9S20636C17[24]),  24,39},
  {&(_ZTV9S20636C17[20]),  20,39},
  {&(_ZTV9S20636C17[29]),  29,39},
  {&(_ZTV9S20636C17[36]),  36,39},
  {&(_tg__ZTV8S20636C5__9S20636C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20636C17[];
extern  VTBL_ENTRY _ZTV9S20636C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C17[];
Class_Descriptor cd_S20636C17 = {  "S20636C17", // class name
  bases_S20636C17, 13,
  &(vtc_S20636C17[0]), // expected_vtbl_contents
  &(vtt_S20636C17[0]), // expected_vtt_contents
  ABISELECT(9408,6252), // object size
  NSPAIRA(_ZTI9S20636C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20636C17),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C17),17, //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  S20636C21_nt  {
};
//SIG(-1 S20636C21_nt) C1{}



//skip512 S20636C21_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S20636C21_nt[];
VTBL_ENTRY *P__ZTI12S20636C21_nt = _ZTI12S20636C21_nt; 
Class_Descriptor cd_S20636C21_nt = {  "S20636C21_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S20636C21_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  S20636C22  : virtual S20636C10 , virtual S20636C9 , virtual S20636C8 , virtual S20636C17 , virtual S20636C13 {
  int s20636c22f0;
  int s20636c22f1;
  virtual  ~S20636C22(); // _ZN9S20636C22D2Ev
  S20636C22(); // tgen
};
//SIG(-1 S20636C22) C1{ VBC2{ VBC3{ BC4{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC5{ VBC4 v1 Fc Fi Fc:8} v2 Fs:8 Fp Fc:0 Fc[4] Fi} BC6{ BC4 v3 v4 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC4 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} BC5 BC9{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU10{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} VBC11{ BC5 Fp} VBC12{ VBC5 BC3 VBC11 VBC2 BC4 vd v9 Fc:1} VBC13{ BC14{ VBC4 BC15{ VBC4 BC3 v10} BC6 BC7 v11 v12 Fi[4]} VBC16{ BC9 FC2[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC12 Fc Fc Fc} v13 Fi FC17{ BC14 BC6 VBC2 v14 FL Fp Fi}} VBC9 vd Fi Fi}


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

static void Test_S20636C22()
{
  extern Class_Descriptor cd_S20636C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(667,1766)];
    init_test(&cd_S20636C22, buf);
    S20636C22 *dp, &lv = *(dp=new (buf) S20636C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10656,7060), "sizeof(S20636C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C22)");
    /*is_ambiguous_... S20636C22::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(608,380), "S20636C22");
    /*is_ambiguous_... S20636C22::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(752,488), "S20636C22");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(752,488), "S20636C22");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(752,488), "S20636C22");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C9*), ABISELECT(752,488), "S20636C22");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C18*)(S20636C17*), ABISELECT(752,488), "S20636C22");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(752,488), "S20636C22");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(752,488), "S20636C22");
    /*is_ambiguous_... S20636C22::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(728,472), "S20636C22");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(728,472), "S20636C22");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C8*), ABISELECT(728,472), "S20636C22");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C8*), ABISELECT(728,472), "S20636C22");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(728,472), "S20636C22");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(728,472), "S20636C22");
    check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(592,376), "S20636C22");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(32,16), "S20636C22");
    /*is_ambiguous_... S20636C10::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(16,12), "S20636C22");
    /*is_ambiguous_... S20636C22::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(864,568), "S20636C22");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(848,564), "S20636C22");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(848,564), "S20636C22");
    check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(232,160), "S20636C22");
    /*is_ambiguous_... S20636C10::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(256,180), "S20636C22");
    check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(288,196), "S20636C22");
    check_base_class_offset(lv, (S20636C10*), ABISELECT(16,12), "S20636C22");
    check_base_class_offset(lv, (S20636C10*)(S20636C8*), ABISELECT(16,12), "S20636C22");
    check_base_class_offset(lv, (S20636C5*)(S20636C9*), ABISELECT(1064,712), "S20636C22");
    check_base_class_offset(lv, (S20636C9*), ABISELECT(1064,712), "S20636C22");
    check_base_class_offset(lv, (S20636C9*)(S20636C8*), ABISELECT(1064,712), "S20636C22");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C8*), ABISELECT(1120,736), "S20636C22");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C8*), ABISELECT(1104,732), "S20636C22");
    /*is_ambiguous_... S20636C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C8*), ABISELECT(1248,828), "S20636C22");
    check_base_class_offset(lv, (S20636C8*), ABISELECT(1104,732), "S20636C22");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(1376,912), "S20636C22");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(1360,908), "S20636C22");
    check_base_class_offset(lv, (S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(1360,908), "S20636C22");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C18*)(S20636C17*), ABISELECT(1520,1008), "S20636C22");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C18*)(S20636C17*), ABISELECT(1504,1004), "S20636C22");
    check_base_class_offset(lv, (S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(1720,1152), "S20636C22");
    check_base_class_offset(lv, (S20636C18*)(S20636C17*), ABISELECT(1360,908), "S20636C22");
    check_base_class_offset(lv, (S20636C13*)(S20636C16*), ABISELECT(3488,2336), "S20636C22");
    check_base_class_offset(lv, (S20636C16*)(S20636C17*), ABISELECT(3488,2336), "S20636C22");
    check_base_class_offset(lv, (S20636C17*), ABISELECT(1360,908), "S20636C22");
    /*is_ambiguous_... S20636C22::S20636C13 */ AMB_check_base_class_offset(lv, (S20636C13*), ABISELECT(10416,6920), "S20636C22");
    check_field_offset(lv, s20636c22f0, ABISELECT(8,4), "S20636C22.s20636c22f0");
    check_field_offset(lv, s20636c22f1, ABISELECT(12,8), "S20636C22.s20636c22f1");
    test_class_info(&lv, &cd_S20636C22);
    dp->~S20636C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C22(Test_S20636C22, "S20636C22", ABISELECT(10656,7060));

#else // __cplusplus

extern void _ZN9S20636C22C1Ev();
extern void _ZN9S20636C22D2Ev();
Name_Map name_map_S20636C22[] = {
  NSPAIR(_ZN9S20636C22C1Ev),
  NSPAIR(_ZN9S20636C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C9;
extern VTBL_ENTRY _ZTI8S20636C9[];
extern  VTBL_ENTRY _ZTV8S20636C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C8;
extern VTBL_ENTRY _ZTI8S20636C8[];
extern  VTBL_ENTRY _ZTV8S20636C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C18;
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C16;
extern VTBL_ENTRY _ZTI9S20636C16[];
extern  VTBL_ENTRY _ZTV9S20636C16[];
extern Class_Descriptor cd_S20636C17;
extern VTBL_ENTRY _ZTI9S20636C17[];
extern  VTBL_ENTRY _ZTV9S20636C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C17[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
static Base_Class bases_S20636C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(608,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(752,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C5,    ABISELECT(728,472), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    ABISELECT(592,376), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(864,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
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(848,564), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(232,160), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(256,180), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(288,196), //bcp->offset
    39, //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C5,    ABISELECT(1064,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20636C9,    ABISELECT(1064,712), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(1120,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
    15, //immediately_derived
  0, 0},
  {&cd_S20636C4,    ABISELECT(1104,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1248,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20636C8,    ABISELECT(1104,732), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(1376,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20636C4,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20636C2,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1520,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(1504,1004), //bcp->offset
    99, //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
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(1720,1152), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C18,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(3488,2336), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20636C16,    ABISELECT(3488,2336), //bcp->offset
    -1, //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
    14, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S20636C17,    ABISELECT(1360,908), //bcp->offset
    81, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C13,    ABISELECT(10416,6920), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C22[];
extern void _ZN9S20636C22D1Ev();
extern void _ZN9S20636C22D0Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20636C22D1Ev,_ZTv0_n40_N9S20636C22D1Ev)();
extern void ABISELECT(_ZThn1104_N9S20636C22D1Ev,_ZThn732_N9S20636C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20636C22D0Ev,_ZTv0_n40_N9S20636C22D0Ev)();
extern void ABISELECT(_ZThn1104_N9S20636C22D0Ev,_ZThn732_N9S20636C22D0Ev)() __attribute__((weak));
extern void _ZN8S20636C83v10Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C173v13Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY vtc_S20636C22[] = {
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN9S20636C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20636C22D0Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  ABISELECT(496,308),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-592,-376),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-728,-472),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-848,-564),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1064,-712),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  ABISELECT(-1104,-732),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1104,-732),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20636C22D1Ev,_ZTv0_n40_N9S20636C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20636C22D0Ev,_ZTv0_n40_N9S20636C22D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1360,-908),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C173v13Ev,
  ABISELECT(-1504,-1004),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1720,-1152),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  0,
  0,
  0,
  ABISELECT(-3488,-2336),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  0,
  0,
  ABISELECT(-10416,-6920),
  (VTBL_ENTRY)&(_ZTI9S20636C22[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern VTBL_ENTRY _ZTV9S20636C22[];
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__9S20636C22[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__9S20636C22[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__9S20636C22[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A1__9S20636C22[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__9S20636C22[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__9S20636C22[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__9S20636C22[] = {
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__9S20636C22[] = {
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C22[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C22[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__9S20636C22[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C9[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C58S20636C9__A2__9S20636C22[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C8D1Ev();
extern void _ZN8S20636C8D0Ev();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C8__9S20636C22[] = {
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C8__A1__9S20636C22[] = {
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C8__A1__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C8__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C8__9S20636C22[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C8__9S20636C22[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(1088,720),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C8__9S20636C22[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(512,356),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C8__9S20636C22[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(872,572),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__8S20636C8__9S20636C22[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__8S20636C8__9S20636C22[] = {
  ABISELECT(496,308),
  ABISELECT(848,552),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__8S20636C8__9S20636C22[] = {
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C173v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C17__9S20636C22[] = {
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C173v13Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C189S20636C17__9S20636C22[] = {
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C29S20636C189S20636C17__9S20636C22[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C29S20636C189S20636C17__A2__9S20636C22[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C29S20636C189S20636C17__A2__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C29S20636C189S20636C17__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C189S20636C17__A1__9S20636C22[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C189S20636C17__A1__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(992,680),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C189S20636C17__A1__9S20636C22[] = {
  0,
  0,
  ABISELECT(872,588),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C189S20636C17__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C189S20636C17__9S20636C22[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C189S20636C17__9S20636C22[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C17__9S20636C22[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C18__9S20636C17__9S20636C22[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C17__9S20636C22[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C16__9S20636C17__9S20636C22[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
static  VTT_ENTRY vtt_S20636C22[] = {
  {&(_ZTV9S20636C22[12]),  12,124},
  {&(_ZTV9S20636C22[27]),  27,124},
  {&(_ZTV9S20636C22[49]),  49,124},
  {&(_ZTV9S20636C22[54]),  54,124},
  {&(_ZTV9S20636C22[35]),  35,124},
  {&(_ZTV9S20636C22[59]),  59,124},
  {&(_ZTV9S20636C22[38]),  38,124},
  {&(_ZTV9S20636C22[41]),  41,124},
  {&(_ZTV9S20636C22[65]),  65,124},
  {&(_ZTV9S20636C22[77]),  77,124},
  {&(_ZTV9S20636C22[94]),  94,124},
  {&(_ZTV9S20636C22[101]),  101,124},
  {&(_ZTV9S20636C22[108]),  108,124},
  {&(_ZTV9S20636C22[113]),  113,124},
  {&(_ZTV9S20636C22[121]),  121,124},
  {&(_tg__ZTV9S20636C10__9S20636C22[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__9S20636C22[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__9S20636C22[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A1__9S20636C22[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__9S20636C22[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__9S20636C22[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__9S20636C22[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__9S20636C22[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__9S20636C22[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C5__9S20636C22[3]),  3,4},
  {&(_tg__ZTV8S20636C9__9S20636C22[3]),  3,4},
  {&(_tg__ZTV8S20636C58S20636C9__A2__9S20636C22[3]),  3,4},
  {&(_tg__ZTV8S20636C8__9S20636C22[8]),  8,12},
  {&(_tg__ZTV8S20636C48S20636C8__A1__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C8__A1__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C8__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C9__8S20636C8__9S20636C22[4]),  4,5},
  {&(_tg__ZTV9S20636C10__8S20636C8__9S20636C22[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A1__8S20636C8__9S20636C22[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C8__9S20636C22[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__8S20636C8__9S20636C22[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__8S20636C8__9S20636C22[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__8S20636C8__9S20636C22[2]),  2,5},
  {&(_tg__ZTV9S20636C17__9S20636C22[6]),  6,11},
  {&(_tg__ZTV9S20636C189S20636C17__9S20636C22[5]),  5,9},
  {&(_tg__ZTV8S20636C29S20636C189S20636C17__9S20636C22[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C29S20636C189S20636C17__A2__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C29S20636C189S20636C17__A2__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C29S20636C189S20636C17__9S20636C22[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C189S20636C17__A1__9S20636C22[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C189S20636C17__A1__9S20636C22[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C189S20636C17__A1__9S20636C22[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C189S20636C17__9S20636C22[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C189S20636C17__9S20636C22[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C189S20636C17__9S20636C22[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C17__9S20636C22[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C18__9S20636C17__9S20636C22[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C17__9S20636C22[4]),  4,6},
  {&(_tg__ZTV9S20636C139S20636C16__9S20636C17__9S20636C22[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20636C22[];
extern  VTBL_ENTRY _ZTV9S20636C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C22[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20636C22D0Ev,_ZTv0_n40_N9S20636C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S20636C22D0Ev,_ZThn732_N9S20636C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20636C22D1Ev,_ZTv0_n40_N9S20636C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S20636C22D1Ev,_ZThn732_N9S20636C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20636C22 = {  "S20636C22", // class name
  bases_S20636C22, 29,
  &(vtc_S20636C22[0]), // expected_vtbl_contents
  &(vtt_S20636C22[0]), // expected_vtt_contents
  ABISELECT(10656,7060), // object size
  NSPAIRA(_ZTI9S20636C22),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20636C22),124, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C22),57, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20636C20  : virtual S20636C11 , S20636C18 , S20636C8 , S20636C10 {
  int s20636c20f0;
  char s20636c20f1;
  long double s20636c20f2;
  char s20636c20f3;
  int s20636c20f4;
  ::S20636C21_nt s20636c20f5;
  __tsi64 s20636c20f6:4;
  ::S20636C13 s20636c20f7;
  int s20636c20f8;
  __tsi64 s20636c20f9;
  char s20636c20f10;
  int s20636c20f11;
  ::S20636C22 s20636c20f12;
  virtual  ~S20636C20(); // _ZN9S20636C20D2Ev
  virtual void  v14(); // _ZN9S20636C203v14Ev
  S20636C20(); // tgen
};
//SIG(-1 S20636C20) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC4{ VBC3 v2 Fc Fi Fc:8} VBC5{ BC3 v3 v4 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} Fc Fi FU6{ m} Fc Fi} BC7{ VBC3 BC8{ VBC3 BC9{ BC3 VBC4 v5 Fs:8 Fp Fc:0 Fc[4] Fi} v6} BC5 BC2 v7 v8 Fi[4]} BC10{ VBC4 BC9 VBC11{ BC4 Fp} VBC12{ VBC9 BC5 BC2 BC4 BC13{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU14{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v12 Fp[7] Fc Fc Fi Fp} BC3 vd v13 Fc:1} BC12 vd v1 Fi Fc FD Fc Fi FC15{} FL:4 FC13 Fi FL Fc Fi FC16{ VBC12 VBC11 VBC10 VBC17{ BC7 VBC18{ BC13 FC12[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC10 Fc Fc Fc} v14 Fi FC19{ BC7 BC5 VBC12 v15 FL Fp Fi}} VBC13 vd Fi Fi}}


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

static void Test_S20636C20()
{
  extern Class_Descriptor cd_S20636C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(835,2204)];
    init_test(&cd_S20636C20, buf);
    S20636C20 *dp, &lv = *(dp=new (buf) S20636C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13344,8812), "sizeof(S20636C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C20)");
    /*is_ambiguous_... S20636C20::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C18*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*)(S20636C18*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C18*), ABISELECT(12240,8092), "S20636C20");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C9*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(12240,8092), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C11*), ABISELECT(12336,8168), "S20636C20");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*)(S20636C18*), ABISELECT(12336,8168), "S20636C20");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C18*), ABISELECT(12336,8168), "S20636C20");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C8*), ABISELECT(12336,8168), "S20636C20");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C8*), ABISELECT(12336,8168), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(12336,8168), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(12336,8168), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(12336,8168), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(12384,8188), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C11*), ABISELECT(12368,8184), "S20636C20");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C18*), ABISELECT(12368,8184), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(12368,8184), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(12368,8184), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C11*), ABISELECT(12208,8072), "S20636C20");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*)(S20636C18*), ABISELECT(16,4), "S20636C20");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*)(S20636C18*), 0, "S20636C20");
    check_base_class_offset(lv, (S20636C2*)(S20636C18*), 0, "S20636C20");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C18*), ABISELECT(160,100), "S20636C20");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C18*), ABISELECT(144,96), "S20636C20");
    check_base_class_offset(lv, (S20636C11*)(S20636C18*), ABISELECT(360,244), "S20636C20");
    check_base_class_offset(lv, (S20636C18*), 0, "S20636C20");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C8*), ABISELECT(416,284), "S20636C20");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C8*), ABISELECT(400,280), "S20636C20");
    check_base_class_offset(lv, (S20636C5*)(S20636C9*), ABISELECT(12584,8332), "S20636C20");
    check_base_class_offset(lv, (S20636C9*)(S20636C8*), ABISELECT(12584,8332), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(13216,8720), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(13200,8716), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(13200,8716), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(12640,8356), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(12624,8352), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(12840,8500), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(12864,8520), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(12896,8536), "S20636C20");
    check_base_class_offset(lv, (S20636C10*)(S20636C8*), ABISELECT(12624,8352), "S20636C20");
    /*is_ambiguous_... S20636C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C8*), ABISELECT(544,376), "S20636C20");
    check_base_class_offset(lv, (S20636C8*), ABISELECT(400,280), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(672,460), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(656,456), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(872,604), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(896,624), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(928,640), "S20636C20");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C10*), ABISELECT(656,456), "S20636C20");
    check_field_offset(lv, s20636c20f0, ABISELECT(1232,820), "S20636C20.s20636c20f0");
    check_field_offset(lv, s20636c20f1, ABISELECT(1236,824), "S20636C20.s20636c20f1");
    check_field_offset(lv, s20636c20f2, ABISELECT(1248,828), "S20636C20.s20636c20f2");
    check_field_offset(lv, s20636c20f3, ABISELECT(1264,840), "S20636C20.s20636c20f3");
    check_field_offset(lv, s20636c20f4, ABISELECT(1268,844), "S20636C20.s20636c20f4");
    check_field_offset(lv, s20636c20f5, ABISELECT(1272,848), "S20636C20.s20636c20f5");
    set_bf_and_test(lv, s20636c20f6, ABISELECT(1273,849), 0, 4, 1, "S20636C20");
    set_bf_and_test(lv, s20636c20f6, ABISELECT(1273,849), 0, 4, hide_sll(1LL<<3), "S20636C20");
    check_field_offset(lv, s20636c20f7, ABISELECT(1280,852), "S20636C20.s20636c20f7");
    check_field_offset(lv, s20636c20f8, ABISELECT(1520,992), "S20636C20.s20636c20f8");
    check_field_offset(lv, s20636c20f9, ABISELECT(1528,996), "S20636C20.s20636c20f9");
    check_field_offset(lv, s20636c20f10, ABISELECT(1536,1004), "S20636C20.s20636c20f10");
    check_field_offset(lv, s20636c20f11, ABISELECT(1540,1008), "S20636C20.s20636c20f11");
    check_field_offset(lv, s20636c20f12, ABISELECT(1552,1012), "S20636C20.s20636c20f12");
    test_class_info(&lv, &cd_S20636C20);
    dp->~S20636C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C20(Test_S20636C20, "S20636C20", ABISELECT(13344,8812));

#else // __cplusplus

extern void _ZN9S20636C20C1Ev();
extern void _ZN9S20636C20D2Ev();
Name_Map name_map_S20636C20[] = {
  NSPAIR(_ZN9S20636C20C1Ev),
  NSPAIR(_ZN9S20636C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C18;
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C9;
extern VTBL_ENTRY _ZTI8S20636C9[];
extern  VTBL_ENTRY _ZTV8S20636C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C8;
extern VTBL_ENTRY _ZTI8S20636C8[];
extern  VTBL_ENTRY _ZTV8S20636C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
static Base_Class bases_S20636C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(12240,8092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20636C5,    ABISELECT(12336,8168), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(12384,8188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(12368,8184), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20636C11,    ABISELECT(12208,8072), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20636C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20636C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(144,96), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(360,244), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(416,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
    13, //immediately_derived
  0, 0},
  {&cd_S20636C4,    ABISELECT(400,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(12584,8332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C9,    ABISELECT(12584,8332), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(13216,8720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C4,    ABISELECT(13200,8716), //bcp->offset
    111, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(12640,8356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(12624,8352), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(12840,8500), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(12864,8520), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(12896,8536), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(12624,8352), //bcp->offset
    81, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(544,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20636C8,    ABISELECT(400,280), //bcp->offset
    25, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(672,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
    27, //immediately_derived
  0, 0},
  {&cd_S20636C7,    ABISELECT(656,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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(872,604), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(896,624), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(928,640), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(656,456), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20636C20[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C20D1Ev();
extern void _ZN9S20636C20D0Ev();
extern void _ZN9S20636C203v14Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZThn400_N9S20636C20D1Ev,_ZThn280_N9S20636C20D1Ev)();
extern void ABISELECT(_ZThn400_N9S20636C20D0Ev,_ZThn280_N9S20636C20D0Ev)();
extern void _ZN8S20636C83v10Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY vtc_S20636C20[] = {
  ABISELECT(13200,8716),
  ABISELECT(12624,8352),
  ABISELECT(12584,8332),
  ABISELECT(12208,8072),
  ABISELECT(12368,8184),
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20636C20D0Ev,
  (VTBL_ENTRY)&_ZN9S20636C203v14Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(12008,7940),
  ABISELECT(11976,7924),
  ABISELECT(11880,7848),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  ABISELECT(11968,7904),
  ABISELECT(12800,8436),
  ABISELECT(12224,8072),
  ABISELECT(12184,8052),
  ABISELECT(11840,7812),
  ABISELECT(11936,7888),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20636C20D1Ev,_ZThn280_N9S20636C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20636C20D0Ev,_ZThn280_N9S20636C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
  ABISELECT(11712,7728),
  ABISELECT(11584,7636),
  ABISELECT(11680,7712),
  ABISELECT(12544,8260),
  ABISELECT(-656,-456),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(11496,7580),
  ABISELECT(11464,7564),
  ABISELECT(11368,7488),
  ABISELECT(-872,-604),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  ABISELECT(11344,7468),
  ABISELECT(-896,-624),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-928,-640),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  ABISELECT(-12208,-8072),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  0,
  0,
  ABISELECT(-12368,-8184),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  0,
  ABISELECT(-344,-240),
  ABISELECT(-12584,-8332),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-384,-260),
  ABISELECT(-288,-184),
  ABISELECT(576,364),
  ABISELECT(-12624,-8352),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  ABISELECT(-12840,-8500),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  ABISELECT(-624,-428),
  ABISELECT(-12864,-8520),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-12896,-8536),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-13200,-8716),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S20636C20[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C18__9S20636C20[] = {
  ABISELECT(12368,8184),
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C29S20636C18__9S20636C20[] = {
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C29S20636C18__9S20636C20[] = {
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C29S20636C18__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C29S20636C18__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C18__A1__9S20636C20[] = {
  ABISELECT(12008,7940),
  ABISELECT(11976,7924),
  ABISELECT(11880,7848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C18__A1__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11976,-7924),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C18__A1__9S20636C20[] = {
  0,
  0,
  ABISELECT(-12008,-7940),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C18__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C18__9S20636C20[] = {
  ABISELECT(12008,7940),
  ABISELECT(11976,7924),
  ABISELECT(11880,7848),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C18__9S20636C20[] = {
  0,
  0,
  ABISELECT(-12368,-8184),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C8D1Ev();
extern void _ZN8S20636C8D0Ev();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C8__9S20636C20[] = {
  ABISELECT(11968,7904),
  ABISELECT(12800,8436),
  ABISELECT(12224,8072),
  ABISELECT(12184,8052),
  ABISELECT(11840,7812),
  ABISELECT(11936,7888),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C8__A1__9S20636C20[] = {
  ABISELECT(11840,7812),
  ABISELECT(11936,7888),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C8__A1__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11936,-7888),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C8__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11936,-7888),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C8__9S20636C20[] = {
  0,
  ABISELECT(-344,-240),
  ABISELECT(-12184,-8052),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C8__9S20636C20[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-384,-260),
  ABISELECT(-288,-184),
  ABISELECT(576,364),
  ABISELECT(-12224,-8072),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C8__9S20636C20[] = {
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-12800,-8436),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C8__9S20636C20[] = {
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  ABISELECT(-12440,-8220),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__8S20636C8__9S20636C20[] = {
  0,
  0,
  ABISELECT(-11968,-7904),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__8S20636C8__9S20636C20[] = {
  ABISELECT(-624,-428),
  ABISELECT(-12464,-8240),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__8S20636C8__9S20636C20[] = {
  ABISELECT(-12496,-8256),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__A__9S20636C20[] = {
  ABISELECT(11712,7728),
  ABISELECT(11584,7636),
  ABISELECT(11680,7712),
  ABISELECT(12544,8260),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__A3__9S20636C20[] = {
  ABISELECT(11496,7580),
  ABISELECT(11464,7564),
  ABISELECT(11368,7488),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__A3__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11464,-7564),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__A3__9S20636C20[] = {
  0,
  0,
  ABISELECT(-11496,-7580),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A3__9S20636C20[] = {
  ABISELECT(11344,7468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__A__9S20636C20[] = {
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-12544,-8260),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__A__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11680,-7712),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__A__9S20636C20[] = {
  ABISELECT(11496,7580),
  ABISELECT(11464,7564),
  ABISELECT(11368,7488),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__A__9S20636C20[] = {
  0,
  0,
  ABISELECT(-11712,-7728),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__A__9S20636C20[] = {
  ABISELECT(11344,7468),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C20[] = {
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C11__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C11__9S20636C20[] = {
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C20[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__9S20636C20[] = {
  ABISELECT(-344,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C9[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C58S20636C9__A1__9S20636C20[] = {
  ABISELECT(-344,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__9S20636C20[] = {
  ABISELECT(-256,-168),
  ABISELECT(-384,-260),
  ABISELECT(-288,-184),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__A2__9S20636C20[] = {
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__A2__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(504,332),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__A2__9S20636C20[] = {
  0,
  0,
  ABISELECT(472,316),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__9S20636C20[] = {
  ABISELECT(-624,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__9S20636C20[] = {
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(288,184),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__9S20636C20[] = {
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__9S20636C20[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__9S20636C20[] = {
  ABISELECT(-624,-428),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A2__9S20636C20[] = {
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__A2__9S20636C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(864,548),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTT_ENTRY vtt_S20636C20[] = {
  {&(_ZTV9S20636C20[9]),  9,117},
  {&(_tg__ZTV9S20636C18__9S20636C20[5]),  5,9},
  {&(_tg__ZTV8S20636C29S20636C18__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C29S20636C18__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C29S20636C18__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C29S20636C18__9S20636C20[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C18__A1__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C18__A1__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C18__A1__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C18__9S20636C20[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C18__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C18__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C8__9S20636C20[8]),  8,12},
  {&(_tg__ZTV8S20636C48S20636C8__A1__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C8__A1__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C8__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C9__8S20636C8__9S20636C20[4]),  4,5},
  {&(_tg__ZTV9S20636C10__8S20636C8__9S20636C20[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A1__8S20636C8__9S20636C20[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C8__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__8S20636C8__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__8S20636C8__9S20636C20[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__8S20636C8__9S20636C20[2]),  2,5},
  {&(_tg__ZTV9S20636C10__A__9S20636C20[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__A3__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__A3__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__A3__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A3__9S20636C20[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__A__9S20636C20[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__A__9S20636C20[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__A__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__A__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__A__9S20636C20[3]),  3,4},
  {&(_ZTV9S20636C20[65]),  65,117},
  {&(_ZTV9S20636C20[69]),  69,117},
  {&(_ZTV9S20636C20[74]),  74,117},
  {&(_ZTV9S20636C20[25]),  25,117},
  {&(_ZTV9S20636C20[33]),  33,117},
  {&(_ZTV9S20636C20[80]),  80,117},
  {&(_ZTV9S20636C20[94]),  94,117},
  {&(_ZTV9S20636C20[116]),  116,117},
  {&(_ZTV9S20636C20[102]),  102,117},
  {&(_ZTV9S20636C20[105]),  105,117},
  {&(_ZTV9S20636C20[108]),  108,117},
  {&(_ZTV9S20636C20[43]),  43,117},
  {&(_ZTV9S20636C20[51]),  51,117},
  {&(_ZTV9S20636C20[54]),  54,117},
  {&(_tg__ZTV9S20636C11__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C11__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C11__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C20[3]),  3,4},
  {&(_tg__ZTV8S20636C9__9S20636C20[3]),  3,4},
  {&(_tg__ZTV8S20636C58S20636C9__A1__9S20636C20[3]),  3,4},
  {&(_tg__ZTV9S20636C10__9S20636C20[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__A2__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__A2__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__A2__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__9S20636C20[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__9S20636C20[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__9S20636C20[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__9S20636C20[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__9S20636C20[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__9S20636C20[3]),  3,4},
  {&(_tg__ZTV8S20636C4__A2__9S20636C20[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__A2__9S20636C20[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20636C20[];
extern  VTBL_ENTRY _ZTV9S20636C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C20[];
Class_Descriptor cd_S20636C20 = {  "S20636C20", // class name
  bases_S20636C20, 32,
  &(vtc_S20636C20[0]), // expected_vtbl_contents
  &(vtt_S20636C20[0]), // expected_vtt_contents
  ABISELECT(13344,8812), // object size
  NSPAIRA(_ZTI9S20636C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20636C20),117, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20636C20),65, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20636C1  : virtual S20636C2 , virtual S20636C6 , virtual S20636C17 , virtual S20636C20 {
  int s20636c1f0;
  ~S20636C1(); // tgen
  S20636C1(); // tgen
};
//SIG(1 S20636C1) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ BC3 VBC5{ VBC3 v1 Fc Fi Fc:8} v2 Fs:8 Fp Fc:0 Fc[4] Fi} v3} VBC6{ BC5 VBC7{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC5 BC4 VBC9{ BC5 Fp} VBC10{ VBC4 BC7 BC11{ VBC3 VBC5 VBC7 Fc Fi FU12{ m} Fc Fi} BC5 BC13{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU14{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v10 Fc:1} FC15{ v15 v16 Fi Fc FC3 Fi Fp FC13 Fi FC4[9] FL} FC16{ BC13 FC10[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC8 Fc Fc Fc} Fi} VBC17{ BC18{ VBC3 BC2 BC7 BC11 v11 v12 Fi[4]} VBC16 v13 Fi FC19{ BC18 BC7 VBC10 v17 FL Fp Fi}} VBC20{ VBC11 BC18 BC8 BC10 vd v14 Fi Fc FD Fc Fi FC21{} FL:4 FC13 Fi FL Fc Fi FC22{ VBC10 VBC9 VBC8 VBC17 VBC13 vd Fi Fi}} Fi}


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

static void Test_S20636C1()
{
  extern Class_Descriptor cd_S20636C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2032,5413)];
    init_test(&cd_S20636C1, buf);
    S20636C1 *dp, &lv = *(dp=new (buf) S20636C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32496,21648), "sizeof(S20636C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20636C1)");
    /*is_ambiguous_... S20636C1::S20636C2 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C6::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C6*), ABISELECT(160,104), "S20636C1");
    check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C9*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C18*)(S20636C17*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C18*)(S20636C20*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C2*)(S20636C18*)(S20636C20*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C18*)(S20636C20*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C11*)(S20636C10*)(S20636C20*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C5*)(S20636C10*)(S20636C20*), ABISELECT(160,104), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C2 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*), ABISELECT(32,12), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C2 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C8*)(S20636C6*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C8*)(S20636C6*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*), ABISELECT(256,180), "S20636C1");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(256,180), "S20636C1");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C11*), ABISELECT(256,180), "S20636C1");
    check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C2*)(S20636C18*)(S20636C20*), ABISELECT(256,180), "S20636C1");
    check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C18*)(S20636C20*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C8*)(S20636C20*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C4*)(S20636C8*)(S20636C20*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C11*)(S20636C10*)(S20636C20*), ABISELECT(256,180), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C2 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C2*), ABISELECT(16,8), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C2 */ AMB_check_base_class_offset(lv, (S20636C2*), ABISELECT(16,8), "S20636C1");
    /*is_ambiguous_... S20636C6::S20636C5 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C6*), ABISELECT(288,196), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*), ABISELECT(10240,6920), "S20636C1");
    /*is_ambiguous_... S20636C6::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C6*), ABISELECT(10224,6916), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*), ABISELECT(10224,6916), "S20636C1");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(10224,6916), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C11*), ABISELECT(10224,6916), "S20636C1");
    check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C18*)(S20636C20*), ABISELECT(10224,6916), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C11*)(S20636C10*)(S20636C20*), ABISELECT(10224,6916), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C8*)(S20636C6*), ABISELECT(336,216), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C8*)(S20636C6*), ABISELECT(320,212), "S20636C1");
    check_base_class_offset(lv, (S20636C5*)(S20636C9*), ABISELECT(10440,7064), "S20636C1");
    check_base_class_offset(lv, (S20636C9*)(S20636C8*)(S20636C6*), ABISELECT(10440,7064), "S20636C1");
    check_base_class_offset(lv, (S20636C9*)(S20636C8*)(S20636C20*), ABISELECT(10440,7064), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*), ABISELECT(11072,7452), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C10*), ABISELECT(11056,7448), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C10*)(S20636C20*), ABISELECT(11056,7448), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*), ABISELECT(10496,7088), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*), ABISELECT(10480,7084), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C11*)(S20636C10*), ABISELECT(10696,7232), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*), ABISELECT(10720,7252), "S20636C1");
    /*is_ambiguous_... S20636C1::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C13*)(S20636C10*), ABISELECT(10752,7268), "S20636C1");
    check_base_class_offset(lv, (S20636C10*)(S20636C8*)(S20636C6*), ABISELECT(10480,7084), "S20636C1");
    check_base_class_offset(lv, (S20636C10*)(S20636C8*)(S20636C20*), ABISELECT(10480,7084), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C8*)(S20636C6*), ABISELECT(464,308), "S20636C1");
    check_base_class_offset(lv, (S20636C8*)(S20636C6*), ABISELECT(320,212), "S20636C1");
    check_base_class_offset(lv, (S20636C6*), ABISELECT(288,196), "S20636C1");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(11216,7548), "S20636C1");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(11200,7544), "S20636C1");
    check_base_class_offset(lv, (S20636C2*)(S20636C18*)(S20636C17*), ABISELECT(11200,7544), "S20636C1");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C18*)(S20636C17*), ABISELECT(11360,7644), "S20636C1");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C18*)(S20636C17*), ABISELECT(11344,7640), "S20636C1");
    check_base_class_offset(lv, (S20636C11*)(S20636C18*)(S20636C17*), ABISELECT(11560,7788), "S20636C1");
    check_base_class_offset(lv, (S20636C18*)(S20636C17*), ABISELECT(11200,7544), "S20636C1");
    check_base_class_offset(lv, (S20636C13*)(S20636C16*), ABISELECT(13328,8972), "S20636C1");
    check_base_class_offset(lv, (S20636C16*)(S20636C17*), ABISELECT(13328,8972), "S20636C1");
    check_base_class_offset(lv, (S20636C17*), ABISELECT(11200,7544), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C11 */ AMB_check_base_class_offset(lv, (S20636C11*)(S20636C20*), ABISELECT(32464,21628), "S20636C1");
    /*is_ambiguous_... S20636C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C2*)(S20636C18*)(S20636C20*), ABISELECT(20272,13560), "S20636C1");
    check_base_class_offset(lv, (S20636C4*)(S20636C2*)(S20636C18*)(S20636C20*), ABISELECT(20256,13556), "S20636C1");
    check_base_class_offset(lv, (S20636C2*)(S20636C18*)(S20636C20*), ABISELECT(20256,13556), "S20636C1");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C18*)(S20636C20*), ABISELECT(20416,13656), "S20636C1");
    /*is_ambiguous_... S20636C18::S20636C7 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C18*)(S20636C20*), ABISELECT(20400,13652), "S20636C1");
    check_base_class_offset(lv, (S20636C11*)(S20636C18*)(S20636C20*), ABISELECT(20616,13800), "S20636C1");
    check_base_class_offset(lv, (S20636C18*)(S20636C20*), ABISELECT(20256,13556), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C4*)(S20636C8*)(S20636C20*), ABISELECT(20672,13840), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C4 */ AMB_check_base_class_offset(lv, (S20636C4*)(S20636C8*)(S20636C20*), ABISELECT(20656,13836), "S20636C1");
    /*is_ambiguous_... S20636C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C8*)(S20636C20*), ABISELECT(20800,13932), "S20636C1");
    check_base_class_offset(lv, (S20636C8*)(S20636C20*), ABISELECT(20656,13836), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20636C7*)(S20636C10*)(S20636C20*), ABISELECT(20928,14016), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C7*)(S20636C10*)(S20636C20*), ABISELECT(20912,14012), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C11*)(S20636C10*)(S20636C20*), ABISELECT(21128,14160), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C5*)(S20636C10*)(S20636C20*), ABISELECT(21152,14180), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C13*)(S20636C10*)(S20636C20*), ABISELECT(21184,14196), "S20636C1");
    /*is_ambiguous_... S20636C20::S20636C10 */ AMB_check_base_class_offset(lv, (S20636C10*)(S20636C20*), ABISELECT(20912,14012), "S20636C1");
    check_base_class_offset(lv, (S20636C20*), ABISELECT(20256,13556), "S20636C1");
    check_field_offset(lv, s20636c1f0, ABISELECT(8,4), "S20636C1.s20636c1f0");
    test_class_info(&lv, &cd_S20636C1);
    dp->~S20636C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20636C1(Test_S20636C1, "S20636C1", ABISELECT(32496,21648));

#else // __cplusplus

extern void _ZN8S20636C1C1Ev();
extern void _ZN8S20636C1D1Ev();
Name_Map name_map_S20636C1[] = {
  NSPAIR(_ZN8S20636C1C1Ev),
  NSPAIR(_ZN8S20636C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C9;
extern VTBL_ENTRY _ZTI8S20636C9[];
extern  VTBL_ENTRY _ZTV8S20636C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C8;
extern VTBL_ENTRY _ZTI8S20636C8[];
extern  VTBL_ENTRY _ZTV8S20636C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C8[];
extern Class_Descriptor cd_S20636C6;
extern VTBL_ENTRY _ZTI8S20636C6[];
extern  VTBL_ENTRY _ZTV8S20636C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C18;
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C16;
extern VTBL_ENTRY _ZTI9S20636C16[];
extern  VTBL_ENTRY _ZTV9S20636C16[];
extern Class_Descriptor cd_S20636C17;
extern VTBL_ENTRY _ZTI9S20636C17[];
extern  VTBL_ENTRY _ZTV9S20636C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C17[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C2;
extern VTBL_ENTRY _ZTI8S20636C2[];
extern  VTBL_ENTRY _ZTV8S20636C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C18;
extern VTBL_ENTRY _ZTI9S20636C18[];
extern  VTBL_ENTRY _ZTV9S20636C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C18[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C4;
extern VTBL_ENTRY _ZTI8S20636C4[];
extern  VTBL_ENTRY _ZTV8S20636C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C8;
extern VTBL_ENTRY _ZTI8S20636C8[];
extern  VTBL_ENTRY _ZTV8S20636C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C7;
extern VTBL_ENTRY _ZTI8S20636C7[];
extern  VTBL_ENTRY _ZTV8S20636C7[];
extern Class_Descriptor cd_S20636C11;
extern VTBL_ENTRY _ZTI9S20636C11[];
extern  VTBL_ENTRY _ZTV9S20636C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C11[];
extern Class_Descriptor cd_S20636C5;
extern VTBL_ENTRY _ZTI8S20636C5[];
extern  VTBL_ENTRY _ZTV8S20636C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C5[];
extern Class_Descriptor cd_S20636C13;
extern VTBL_ENTRY _ZTI9S20636C13[];
extern  VTBL_ENTRY _ZTV9S20636C13[];
extern Class_Descriptor cd_S20636C10;
extern VTBL_ENTRY _ZTI9S20636C10[];
extern  VTBL_ENTRY _ZTV9S20636C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C10[];
extern Class_Descriptor cd_S20636C20;
extern VTBL_ENTRY _ZTI9S20636C20[];
extern  VTBL_ENTRY _ZTV9S20636C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20636C20[];
static Base_Class bases_S20636C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(256,180), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20636C4,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20636C2,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C5,    ABISELECT(288,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(10240,6920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20636C7,    ABISELECT(10224,6916), //bcp->offset
    56, //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
    16, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(336,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20636C4,    ABISELECT(320,212), //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
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(10440,7064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C9,    ABISELECT(10440,7064), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(11072,7452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C4,    ABISELECT(11056,7448), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10496,7088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(10480,7084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(10696,7232), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(10720,7252), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(10752,7268), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(10480,7084), //bcp->offset
    67, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(464,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
    21, //immediately_derived
  0, 0},
  {&cd_S20636C8,    ABISELECT(320,212), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20636C6,    ABISELECT(288,196), //bcp->offset
    29, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(11216,7548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C4,    ABISELECT(11200,7544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20636C2,    ABISELECT(11200,7544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(11360,7644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(11344,7640), //bcp->offset
    121, //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
    21, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(11560,7788), //bcp->offset
    125, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20636C18,    ABISELECT(11200,7544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(13328,8972), //bcp->offset
    130, //bcp->virtual_function_table_offset
    5, //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
    31, //immediately_derived
  0, 0},
  {&cd_S20636C16,    ABISELECT(13328,8972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20636C17,    ABISELECT(11200,7544), //bcp->offset
    103, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C11,    ABISELECT(32464,21628), //bcp->offset
    212, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(20272,13560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C4,    ABISELECT(20256,13556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20636C2,    ABISELECT(20256,13556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20416,13656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(20400,13652), //bcp->offset
    168, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(20616,13800), //bcp->offset
    172, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20636C18,    ABISELECT(20256,13556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20672,13840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C4,    ABISELECT(20656,13836), //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
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20800,13932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C8,    ABISELECT(20656,13836), //bcp->offset
    177, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20928,14016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20636C7,    ABISELECT(20912,14012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20636C11,    ABISELECT(21128,14160), //bcp->offset
    198, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20636C5,    ABISELECT(21152,14180), //bcp->offset
    203, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20636C13,    ABISELECT(21184,14196), //bcp->offset
    207, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20636C10,    ABISELECT(20912,14012), //bcp->offset
    189, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20636C20,    ABISELECT(20256,13556), //bcp->offset
    138, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20636C1[];
extern void _ZN8S20636C1D1Ev();
extern void _ZN8S20636C1D0Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S20636C1D1Ev,_ZTv0_n40_N8S20636C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20636C1D1Ev,_ZThn196_N8S20636C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20636C1D0Ev,_ZTv0_n40_N8S20636C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20636C1D0Ev,_ZThn196_N8S20636C1D0Ev)() __attribute__((weak));
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZTvn32_n80_N8S20636C1D1Ev,_ZTvn16_n40_N8S20636C1D1Ev)();
extern void ABISELECT(_ZTvn32_n80_N8S20636C1D0Ev,_ZTvn16_n40_N8S20636C1D0Ev)();
extern void _ZN8S20636C83v10Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C173v13Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void ABISELECT(_ZTv0_n128_N8S20636C1D1Ev,_ZTv0_n64_N8S20636C1D1Ev)();
extern void ABISELECT(_ZThn20256_N8S20636C1D1Ev,_ZThn13556_N8S20636C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20636C1D0Ev,_ZTv0_n64_N8S20636C1D0Ev)();
extern void ABISELECT(_ZThn20256_N8S20636C1D0Ev,_ZThn13556_N8S20636C1D0Ev)() __attribute__((weak));
extern void _ZN9S20636C203v14Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZTvn400_n128_N8S20636C1D1Ev,_ZTvn280_n64_N8S20636C1D1Ev)();
extern void ABISELECT(_ZTvn400_n128_N8S20636C1D0Ev,_ZTvn280_n64_N8S20636C1D0Ev)();
extern void _ZN8S20636C83v10Ev();
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
extern void _ZN8S20636C52v1Ev();
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY vtc_S20636C1[] = {
  ABISELECT(32464,21628),
  ABISELECT(20256,13556),
  ABISELECT(13328,8972),
  ABISELECT(11200,7544),
  ABISELECT(11056,7448),
  ABISELECT(10480,7084),
  ABISELECT(10440,7064),
  ABISELECT(10224,6916),
  ABISELECT(288,196),
  ABISELECT(256,180),
  ABISELECT(160,104),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C1D0Ev,
  0,
  0,
  ABISELECT(144,96),
  ABISELECT(240,172),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-288,-196),
  0,
  ABISELECT(10768,7252),
  ABISELECT(10192,6888),
  ABISELECT(10152,6868),
  ABISELECT(-32,-16),
  ABISELECT(9936,6720),
  ABISELECT(-128,-92),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20636C1D1Ev,_ZTv0_n40_N8S20636C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20636C1D0Ev,_ZTv0_n40_N8S20636C1D0Ev),
  ABISELECT(9904,6704),
  ABISELECT(10736,7236),
  ABISELECT(10160,6872),
  ABISELECT(10120,6852),
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n80_N8S20636C1D1Ev,_ZTvn16_n40_N8S20636C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n80_N8S20636C1D0Ev,_ZTvn16_n40_N8S20636C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
  0,
  0,
  ABISELECT(-10224,-6916),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(-10440,-7064),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(-10480,-7084),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-10696,-7232),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  ABISELECT(-10560,-7148),
  ABISELECT(-10720,-7252),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-10752,-7268),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-11056,-7448),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-976,-628),
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  ABISELECT(-11200,-7544),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C173v13Ev,
  ABISELECT(-11344,-7640),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  ABISELECT(-11560,-7788),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  0,
  0,
  0,
  ABISELECT(-13328,-8972),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  ABISELECT(928,640),
  ABISELECT(928,640),
  ABISELECT(928,640),
  ABISELECT(896,624),
  ABISELECT(656,456),
  ABISELECT(400,280),
  0,
  ABISELECT(-20256,-13556),
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-9200,-6108),
  ABISELECT(-9776,-6472),
  ABISELECT(-9816,-6492),
  ABISELECT(12208,8072),
  ABISELECT(-10032,-6640),
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  ABISELECT(-20256,-13556),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20636C1D1Ev,_ZTv0_n64_N8S20636C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20636C1D0Ev,_ZTv0_n64_N8S20636C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20636C203v14Ev,
  ABISELECT(-20400,-13652),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  ABISELECT(-20616,-13800),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  ABISELECT(-10432,-6920),
  ABISELECT(-9600,-6388),
  ABISELECT(-10176,-6752),
  ABISELECT(-10216,-6772),
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  ABISELECT(-20656,-13836),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn400_n128_N8S20636C1D1Ev,_ZTvn280_n64_N8S20636C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn400_n128_N8S20636C1D0Ev,_ZTvn280_n64_N8S20636C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
  ABISELECT(-10688,-7096),
  ABISELECT(-20752,-13908),
  ABISELECT(-20656,-13832),
  ABISELECT(-9856,-6564),
  ABISELECT(-20912,-14012),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  ABISELECT(-21128,-14160),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  ABISELECT(-20992,-14076),
  ABISELECT(-21152,-14180),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  ABISELECT(-21184,-14196),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
  ABISELECT(-22240,-14712),
  ABISELECT(-32208,-21448),
  ABISELECT(-32304,-21524),
  ABISELECT(-32464,-21628),
  (VTBL_ENTRY)&(_ZTI8S20636C1[0]),
};
extern VTBL_ENTRY _ZTV8S20636C1[];
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C2__8S20636C1[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C2__8S20636C1[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C2__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C2__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C1[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
extern void _ZN8S20636C6D1Ev();
extern void _ZN8S20636C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C6__8S20636C1[] = {
  ABISELECT(10768,7252),
  ABISELECT(10192,6888),
  ABISELECT(10152,6868),
  ABISELECT(-32,-16),
  ABISELECT(9936,6720),
  ABISELECT(-128,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
  (VTBL_ENTRY)&_ZN8S20636C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C6D0Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C58S20636C6__A1__8S20636C1[] = {
  ABISELECT(-128,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C8D1Ev();
extern void _ZN8S20636C8D0Ev();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C88S20636C6__8S20636C1[] = {
  ABISELECT(9904,6704),
  ABISELECT(10736,7236),
  ABISELECT(10160,6872),
  ABISELECT(10120,6852),
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C88S20636C6__A1__8S20636C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C88S20636C6__A1__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C88S20636C6__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C88S20636C6__8S20636C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(-10120,-6852),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C88S20636C6__8S20636C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(-10160,-6872),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C88S20636C6__8S20636C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-10736,-7236),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C88S20636C6__8S20636C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-10376,-7020),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__8S20636C88S20636C6__8S20636C1[] = {
  0,
  0,
  ABISELECT(-9904,-6704),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__8S20636C88S20636C6__8S20636C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(-10400,-7040),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__8S20636C88S20636C6__8S20636C1[] = {
  ABISELECT(-10432,-7056),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__8S20636C6__8S20636C1[] = {
  0,
  0,
  ABISELECT(-9936,-6720),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZThn32_N8S20636C6D1Ev,_ZThn16_N8S20636C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20636C6D0Ev,_ZThn16_N8S20636C6D0Ev)();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C8__8S20636C6__8S20636C1[] = {
  ABISELECT(9904,6704),
  ABISELECT(10736,7236),
  ABISELECT(10160,6872),
  ABISELECT(10120,6852),
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20636C6D1Ev,_ZThn16_N8S20636C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20636C6D0Ev,_ZThn16_N8S20636C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A1__8S20636C6__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C6__8S20636C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(-10152,-6868),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C6__8S20636C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(-10192,-6888),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C6__8S20636C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-10768,-7252),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C6__8S20636C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-10408,-7036),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A3__8S20636C6__8S20636C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(-10432,-7056),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__8S20636C6__8S20636C1[] = {
  ABISELECT(-10464,-7072),
  (VTBL_ENTRY)&(_ZTI8S20636C6[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C1[] = {
  ABISELECT(-10280,-6960),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C9[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C58S20636C9__A2__8S20636C1[] = {
  ABISELECT(-10280,-6960),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C10__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10440,7052),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C10__8S20636C1[] = {
  0,
  0,
  ABISELECT(472,316),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A3__8S20636C1[] = {
  ABISELECT(-10560,-7148),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C10__8S20636C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C10__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10224,6904),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C10__8S20636C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C10__8S20636C1[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C10__8S20636C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A2__8S20636C1[] = {
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C4__A2__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10800,7268),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C173v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C17__8S20636C1[] = {
  ABISELECT(2128,1428),
  ABISELECT(-976,-628),
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C173v13Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C189S20636C17__8S20636C1[] = {
  ABISELECT(-976,-628),
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C29S20636C189S20636C17__A1__8S20636C1[] = {
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C29S20636C189S20636C17__A3__8S20636C1[] = {
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C29S20636C189S20636C17__A3__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C29S20636C189S20636C17__A1__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C189S20636C17__A1__8S20636C1[] = {
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C189S20636C17__A1__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(11304,7608),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C189S20636C17__A1__8S20636C1[] = {
  0,
  0,
  ABISELECT(1336,872),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C189S20636C17__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C189S20636C17__8S20636C1[] = {
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C189S20636C17__8S20636C1[] = {
  0,
  0,
  ABISELECT(976,628),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C17__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C18__9S20636C17__8S20636C1[] = {
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C17__8S20636C1[] = {
  0,
  0,
  ABISELECT(976,628),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C16__9S20636C17__8S20636C1[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI9S20636C17[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
extern void _ZN9S20636C20D1Ev();
extern void _ZN9S20636C20D0Ev();
extern void _ZN9S20636C203v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C20__8S20636C1[] = {
  ABISELECT(-9200,-6108),
  ABISELECT(-9776,-6472),
  ABISELECT(-9816,-6492),
  ABISELECT(12208,8072),
  ABISELECT(-10032,-6640),
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20636C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20636C20D0Ev,
  (VTBL_ENTRY)&_ZN9S20636C203v14Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
extern void _ZN9S20636C183v11Ev();
extern void _ZN9S20636C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C189S20636C20__A1__8S20636C1[] = {
  ABISELECT(-10032,-6640),
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20636C183v12Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C29S20636C189S20636C20__A2__8S20636C1[] = {
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C22v3Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C29S20636C189S20636C20__A4__8S20636C1[] = {
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C29S20636C189S20636C20__A4__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C29S20636C189S20636C20__A2__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI8S20636C2[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C189S20636C20__A3__8S20636C1[] = {
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C189S20636C20__A3__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20360,13620),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C189S20636C20__A3__8S20636C1[] = {
  0,
  0,
  ABISELECT(10392,6884),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C189S20636C20__A1__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C189S20636C20__A1__8S20636C1[] = {
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C189S20636C20__A1__8S20636C1[] = {
  0,
  0,
  ABISELECT(10032,6640),
  (VTBL_ENTRY)&(_ZTI9S20636C18[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C42v2Ev();
extern void _ZN8S20636C8D1Ev();
extern void _ZN8S20636C8D0Ev();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C89S20636C20__A1__8S20636C1[] = {
  ABISELECT(-10432,-6920),
  ABISELECT(-9600,-6388),
  ABISELECT(-10176,-6752),
  ABISELECT(-10216,-6772),
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20636C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C48S20636C89S20636C20__A5__8S20636C1[] = {
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C48S20636C89S20636C20__A5__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20400,13656),
  (VTBL_ENTRY)&(_ZTI8S20636C4[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__8S20636C89S20636C20__A1__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20400,13656),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__8S20636C89S20636C20__A1__8S20636C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(10216,6772),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__8S20636C89S20636C20__A1__8S20636C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(10176,6752),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A1__8S20636C89S20636C20__A1__8S20636C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(9600,6388),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__8S20636C89S20636C20__A1__8S20636C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(9960,6604),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__8S20636C89S20636C20__A1__8S20636C1[] = {
  0,
  0,
  ABISELECT(10432,6920),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__8S20636C89S20636C20__A1__8S20636C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(9936,6584),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__8S20636C89S20636C20__A1__8S20636C1[] = {
  ABISELECT(9904,6568),
  (VTBL_ENTRY)&(_ZTI8S20636C8[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C109S20636C20__A1__8S20636C1[] = {
  ABISELECT(-10688,-7096),
  ABISELECT(-20752,-13908),
  ABISELECT(-20656,-13832),
  ABISELECT(-9856,-6564),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C109S20636C20__A4__8S20636C1[] = {
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C119S20636C109S20636C20__A4__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20872,13980),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C119S20636C109S20636C20__A4__8S20636C1[] = {
  0,
  0,
  ABISELECT(10904,7244),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C109S20636C20__A4__8S20636C1[] = {
  ABISELECT(-20992,-14076),
  0,
  (VTBL_ENTRY)&(_ZTI8S20636C5[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__9S20636C109S20636C20__A1__8S20636C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(9856,6564),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C109S20636C20__A1__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20656,13832),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C109S20636C20__A1__8S20636C1[] = {
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__A1__9S20636C109S20636C20__A1__8S20636C1[] = {
  0,
  0,
  ABISELECT(10688,7096),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__A__9S20636C109S20636C20__A1__8S20636C1[] = {
  ABISELECT(-20992,-14076),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20636C10[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__9S20636C20__8S20636C1[] = {
  ABISELECT(-22240,-14712),
  ABISELECT(-32208,-21448),
  ABISELECT(-32304,-21524),
  ABISELECT(-12208,-8072),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C20__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C20__8S20636C1[] = {
  0,
  0,
  ABISELECT(10032,6640),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C18__A1__9S20636C20__8S20636C1[] = {
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
};
extern void _ZN8S20636C42v2Ev();
extern void ABISELECT(_ZThn400_N9S20636C20D1Ev,_ZThn280_N9S20636C20D1Ev)();
extern void ABISELECT(_ZThn400_N9S20636C20D0Ev,_ZThn280_N9S20636C20D0Ev)();
extern void _ZN8S20636C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C8__9S20636C20__8S20636C1[] = {
  ABISELECT(-10432,-6920),
  ABISELECT(-9600,-6388),
  ABISELECT(-10176,-6752),
  ABISELECT(-10216,-6772),
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20636C20D1Ev,_ZThn280_N9S20636C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20636C20D0Ev,_ZThn280_N9S20636C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20636C83v10Ev,
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C9__9S20636C20__8S20636C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(9816,6492),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__9S20636C20__8S20636C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(9776,6472),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
extern void _ZN8S20636C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C4__A2__9S20636C20__8S20636C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(9200,6108),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__A2__9S20636C20__8S20636C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(9560,6324),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A2__9S20636C20__8S20636C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(9536,6304),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN9S20636C132v6Ev();
extern void _ZN9S20636C132v7Ev();
extern void _ZN9S20636C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C139S20636C10__9S20636C20__8S20636C1[] = {
  ABISELECT(9504,6288),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN9S20636C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20636C132v8Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
extern void _ZN9S20636C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20636C10__A__9S20636C20__8S20636C1[] = {
  ABISELECT(-10688,-7096),
  ABISELECT(-20752,-13908),
  ABISELECT(-20656,-13832),
  ABISELECT(-9856,-6564),
  ABISELECT(-656,-456),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20636C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C119S20636C10__A3__9S20636C20__8S20636C1[] = {
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  ABISELECT(-872,-604),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C59S20636C10__A3__9S20636C20__8S20636C1[] = {
  ABISELECT(-20992,-14076),
  ABISELECT(-896,-624),
  (VTBL_ENTRY)&(_ZTI9S20636C20[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20636C11__A2__8S20636C1[] = {
  ABISELECT(-22240,-14712),
  ABISELECT(-32208,-21448),
  ABISELECT(-32304,-21524),
  0,
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
};
extern void _ZN8S20636C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C5__9S20636C11__A2__8S20636C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(32208,21448),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C52v1Ev,
};
extern void _ZN8S20636C72v4Ev();
extern void _ZN8S20636C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20636C7__9S20636C11__A2__8S20636C1[] = {
  0,
  0,
  ABISELECT(22240,14712),
  (VTBL_ENTRY)&(_ZTI9S20636C11[0]),
  (VTBL_ENTRY)&_ZN8S20636C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20636C72v5Ev,
};
static  VTT_ENTRY vtt_S20636C1[] = {
  {&(_ZTV8S20636C1[14]),  14,217},
  {&(_ZTV8S20636C1[22]),  22,217},
  {&(_ZTV8S20636C1[28]),  28,217},
  {&(_ZTV8S20636C1[41]),  41,217},
  {&(_ZTV8S20636C1[60]),  60,217},
  {&(_ZTV8S20636C1[52]),  52,217},
  {&(_ZTV8S20636C1[66]),  66,217},
  {&(_ZTV8S20636C1[80]),  80,217},
  {&(_ZTV8S20636C1[102]),  102,217},
  {&(_ZTV8S20636C1[88]),  88,217},
  {&(_ZTV8S20636C1[91]),  91,217},
  {&(_ZTV8S20636C1[94]),  94,217},
  {&(_ZTV8S20636C1[116]),  116,217},
  {&(_ZTV8S20636C1[123]),  123,217},
  {&(_ZTV8S20636C1[130]),  130,217},
  {&(_ZTV8S20636C1[135]),  135,217},
  {&(_ZTV8S20636C1[161]),  161,217},
  {&(_ZTV8S20636C1[217]),  217,217},
  {&(_ZTV8S20636C1[170]),  170,217},
  {&(_ZTV8S20636C1[177]),  177,217},
  {&(_ZTV8S20636C1[185]),  185,217},
  {&(_ZTV8S20636C1[195]),  195,217},
  {&(_ZTV8S20636C1[203]),  203,217},
  {&(_ZTV8S20636C1[206]),  206,217},
  {&(_ZTV8S20636C1[209]),  209,217},
  {&(_tg__ZTV8S20636C2__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C1[3]),  3,4},
  {&(_tg__ZTV8S20636C6__8S20636C1[8]),  8,11},
  {&(_tg__ZTV8S20636C58S20636C6__A1__8S20636C1[3]),  3,4},
  {&(_tg__ZTV8S20636C88S20636C6__8S20636C1[8]),  8,12},
  {&(_tg__ZTV8S20636C48S20636C88S20636C6__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C88S20636C6__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C88S20636C6__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C9__8S20636C88S20636C6__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C10__8S20636C88S20636C6__8S20636C1[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A1__8S20636C88S20636C6__8S20636C1[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C88S20636C6__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__8S20636C88S20636C6__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__8S20636C88S20636C6__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__8S20636C88S20636C6__8S20636C1[2]),  2,5},
  {&(_tg__ZTV8S20636C7__8S20636C6__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C8__8S20636C6__8S20636C1[8]),  8,12},
  {&(_tg__ZTV8S20636C5__A1__8S20636C6__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C9__8S20636C6__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C10__8S20636C6__8S20636C1[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A1__8S20636C6__8S20636C1[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C6__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C59S20636C10__A3__8S20636C6__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__8S20636C6__8S20636C1[2]),  2,5},
  {&(_tg__ZTV8S20636C9__8S20636C1[3]),  3,4},
  {&(_tg__ZTV8S20636C58S20636C9__A2__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C10__8S20636C1[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C10__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C10__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A3__8S20636C1[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C10__8S20636C1[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C10__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C10__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C10__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C10__8S20636C1[3]),  3,4},
  {&(_tg__ZTV8S20636C4__A2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C4__A2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C17__8S20636C1[6]),  6,11},
  {&(_tg__ZTV9S20636C189S20636C17__8S20636C1[5]),  5,9},
  {&(_tg__ZTV8S20636C29S20636C189S20636C17__A1__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C29S20636C189S20636C17__A3__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C29S20636C189S20636C17__A3__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C29S20636C189S20636C17__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C189S20636C17__A1__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C189S20636C17__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C189S20636C17__A1__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C189S20636C17__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C189S20636C17__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C189S20636C17__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C17__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C18__9S20636C17__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C17__8S20636C1[4]),  4,6},
  {&(_tg__ZTV9S20636C139S20636C16__9S20636C17__8S20636C1[5]),  5,8},
  {&(_tg__ZTV9S20636C20__8S20636C1[9]),  9,16},
  {&(_tg__ZTV9S20636C189S20636C20__A1__8S20636C1[5]),  5,9},
  {&(_tg__ZTV8S20636C29S20636C189S20636C20__A2__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C48S20636C29S20636C189S20636C20__A4__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C29S20636C189S20636C20__A4__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C29S20636C189S20636C20__A2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C119S20636C189S20636C20__A3__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C189S20636C20__A3__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C189S20636C20__A3__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C5__9S20636C189S20636C20__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C189S20636C20__A1__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C189S20636C20__A1__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C89S20636C20__A1__8S20636C1[8]),  8,12},
  {&(_tg__ZTV8S20636C48S20636C89S20636C20__A5__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C48S20636C89S20636C20__A5__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C5__8S20636C89S20636C20__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C9__8S20636C89S20636C20__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C10__8S20636C89S20636C20__A1__8S20636C1[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A1__8S20636C89S20636C20__A1__8S20636C1[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__8S20636C89S20636C20__A1__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__8S20636C89S20636C20__A1__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C10__A2__8S20636C89S20636C20__A1__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__8S20636C89S20636C20__A1__8S20636C1[2]),  2,5},
  {&(_tg__ZTV9S20636C109S20636C20__A1__8S20636C1[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C109S20636C20__A4__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C119S20636C109S20636C20__A4__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C119S20636C109S20636C20__A4__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C59S20636C109S20636C20__A4__8S20636C1[3]),  3,4},
  {&(_tg__ZTV8S20636C4__9S20636C109S20636C20__A1__8S20636C1[5]),  5,6},
  {&(_tg__ZTV8S20636C5__9S20636C109S20636C20__A1__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C11__9S20636C109S20636C20__A1__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C7__A1__9S20636C109S20636C20__A1__8S20636C1[4]),  4,6},
  {&(_tg__ZTV8S20636C5__A__9S20636C109S20636C20__A1__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C11__9S20636C20__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C20__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C20__8S20636C1[4]),  4,6},
  {&(_tg__ZTV9S20636C119S20636C18__A1__9S20636C20__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C8__9S20636C20__8S20636C1[8]),  8,12},
  {&(_tg__ZTV8S20636C9__9S20636C20__8S20636C1[4]),  4,5},
  {&(_tg__ZTV9S20636C10__9S20636C20__8S20636C1[13]),  13,16},
  {&(_tg__ZTV8S20636C4__A2__9S20636C20__8S20636C1[5]),  5,6},
  {&(_tg__ZTV9S20636C119S20636C10__A2__9S20636C20__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C59S20636C10__A2__9S20636C20__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C139S20636C10__9S20636C20__8S20636C1[2]),  2,5},
  {&(_tg__ZTV9S20636C10__A__9S20636C20__8S20636C1[6]),  6,9},
  {&(_tg__ZTV9S20636C119S20636C10__A3__9S20636C20__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C59S20636C10__A3__9S20636C20__8S20636C1[3]),  3,4},
  {&(_tg__ZTV9S20636C11__A2__8S20636C1[5]),  5,5},
  {&(_tg__ZTV8S20636C5__9S20636C11__A2__8S20636C1[4]),  4,5},
  {&(_tg__ZTV8S20636C7__9S20636C11__A2__8S20636C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20636C1[];
extern  VTBL_ENTRY _ZTV8S20636C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20636C1[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20636C1D0Ev,_ZTv0_n64_N8S20636C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20256_N8S20636C1D0Ev,_ZThn13556_N8S20636C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20636C1D1Ev,_ZTv0_n64_N8S20636C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20256_N8S20636C1D1Ev,_ZThn13556_N8S20636C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20636C1D0Ev,_ZTv0_n40_N8S20636C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20636C1D0Ev,_ZThn196_N8S20636C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20636C1D1Ev,_ZTv0_n40_N8S20636C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20636C1D1Ev,_ZThn196_N8S20636C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20636C1 = {  "S20636C1", // class name
  bases_S20636C1, 52,
  &(vtc_S20636C1[0]), // expected_vtbl_contents
  &(vtt_S20636C1[0]), // expected_vtt_contents
  ABISELECT(32496,21648), // object size
  NSPAIRA(_ZTI8S20636C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20636C1),217, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20636C1),132, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20635C5  : virtual S20636C3 {
  char s20635c5f0;
  int s20635c5f1;
  char s20635c5f2:8;
  virtual void  v1(); // _ZN8S20635C52v1Ev
  ~S20635C5(); // tgen
  S20635C5(); // tgen
};
//SIG(-1 S20635C5) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8}


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

static void Test_S20635C5()
{
  extern Class_Descriptor cd_S20635C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S20635C5, buf);
    S20635C5 *dp, &lv = *(dp=new (buf) S20635C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S20635C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C5)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(32,16), "S20635C5");
    check_field_offset(lv, s20635c5f0, ABISELECT(8,4), "S20635C5.s20635c5f0");
    check_field_offset(lv, s20635c5f1, ABISELECT(12,8), "S20635C5.s20635c5f1");
    set_bf_and_test(lv, s20635c5f2, ABISELECT(16,12), 0, 8, 1, "S20635C5");
    set_bf_and_test(lv, s20635c5f2, ABISELECT(16,12), 0, 8, hide_sll(1LL<<7), "S20635C5");
    test_class_info(&lv, &cd_S20635C5);
    dp->~S20635C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C5(Test_S20635C5, "S20635C5", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S20635C5C1Ev();
extern void _ZN8S20635C5D1Ev();
Name_Map name_map_S20635C5[] = {
  NSPAIR(_ZN8S20635C5C1Ev),
  NSPAIR(_ZN8S20635C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S20635C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20635C5[];
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY vtc_S20635C5[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20635C5[];
static  VTT_ENTRY vtt_S20635C5[] = {
  {&(_ZTV8S20635C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
Class_Descriptor cd_S20635C5 = {  "S20635C5", // class name
  bases_S20635C5, 1,
  &(vtc_S20635C5[0]), // expected_vtbl_contents
  &(vtt_S20635C5[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S20635C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20635C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C5),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  S20635C4  : S20636C3 , virtual S20635C5 {
  short s20635c4f0:8;
  void *s20635c4f1;
  char  :0;
  char s20635c4f3[4];
  int s20635c4f4;
  virtual void  v2(); // _ZN8S20635C42v2Ev
  ~S20635C4(); // tgen
  S20635C4(); // tgen
};
//SIG(-1 S20635C4) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v2 Fc Fi Fc:8} v1 Fs:8 Fp Fc:0 Fc[4] Fi}


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

static void Test_S20635C4()
{
  extern Class_Descriptor cd_S20635C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,48)];
    init_test(&cd_S20635C4, buf);
    S20635C4 *dp, &lv = *(dp=new (buf) S20635C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,188), "sizeof(S20635C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C4)");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S20635C4");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(160,112), "S20635C4");
    check_base_class_offset(lv, (S20635C5*), ABISELECT(136,96), "S20635C4");
    set_bf_and_test(lv, s20635c4f0, ABISELECT(112,80), 0, 8, 1, "S20635C4");
    set_bf_and_test(lv, s20635c4f0, ABISELECT(112,80), 0, 8, hide_sll(1LL<<7), "S20635C4");
    check_field_offset(lv, s20635c4f1, ABISELECT(120,84), "S20635C4.s20635c4f1");
    check_field_offset(lv, s20635c4f3, ABISELECT(128,88), "S20635C4.s20635c4f3");
    check_field_offset(lv, s20635c4f4, ABISELECT(132,92), "S20635C4.s20635c4f4");
    test_class_info(&lv, &cd_S20635C4);
    dp->~S20635C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C4(Test_S20635C4, "S20635C4", ABISELECT(256,188));

#else // __cplusplus

extern void _ZN8S20635C4C1Ev();
extern void _ZN8S20635C4D1Ev();
Name_Map name_map_S20635C4[] = {
  NSPAIR(_ZN8S20635C4C1Ev),
  NSPAIR(_ZN8S20635C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
static Base_Class bases_S20635C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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_S20636C3,    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, 1},
  {&cd_S20635C5,    ABISELECT(136,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20635C4[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY vtc_S20635C4[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20635C4[];
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C4[] = {
  {&(_ZTV8S20635C4[4]),  4,10},
  {&(_ZTV8S20635C4[9]),  9,10},
  {&(_tg__ZTV8S20635C5__8S20635C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
Class_Descriptor cd_S20635C4 = {  "S20635C4", // class name
  bases_S20635C4, 3,
  &(vtc_S20635C4[0]), // expected_vtbl_contents
  &(vtt_S20635C4[0]), // expected_vtt_contents
  ABISELECT(256,188), // object size
  NSPAIRA(_ZTI8S20635C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20635C4),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C4),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20635C2  : virtual S20636C3 , S20635C4 {
  virtual void  v3(); // _ZN8S20635C22v3Ev
  ~S20635C2(); // tgen
  S20635C2(); // tgen
};
//SIG(-1 S20635C2) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ BC2 VBC4{ VBC2 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v1}


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

static void Test_S20635C2()
{
  extern Class_Descriptor cd_S20635C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,48)];
    init_test(&cd_S20635C2, buf);
    S20635C2 *dp, &lv = *(dp=new (buf) S20635C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,188), "sizeof(S20635C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C2)");
    /*is_ambiguous_... S20635C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S20635C2");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(144,96), "S20635C2");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(16,4), "S20635C2");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(240,172), "S20635C2");
    check_base_class_offset(lv, (S20635C4*), 0, "S20635C2");
    test_class_info(&lv, &cd_S20635C2);
    dp->~S20635C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C2(Test_S20635C2, "S20635C2", ABISELECT(272,188));

#else // __cplusplus

extern void _ZN8S20635C2C1Ev();
extern void _ZN8S20635C2D1Ev();
Name_Map name_map_S20635C2[] = {
  NSPAIR(_ZN8S20635C2C1Ev),
  NSPAIR(_ZN8S20635C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
static Base_Class bases_S20635C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(240,172), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20635C4,    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 _ZTI8S20635C2[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY vtc_S20635C2[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20635C2[];
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__8S20635C2[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__8S20635C2[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C2[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C2[] = {
  {&(_ZTV8S20635C2[4]),  4,11},
  {&(_tg__ZTV8S20635C4__8S20635C2[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__8S20635C2[4]),  4,5},
  {&(_ZTV8S20635C2[10]),  10,11},
  {&(_tg__ZTV8S20635C5__8S20635C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
Class_Descriptor cd_S20635C2 = {  "S20635C2", // class name
  bases_S20635C2, 4,
  &(vtc_S20635C2[0]), // expected_vtbl_contents
  &(vtt_S20635C2[0]), // expected_vtt_contents
  ABISELECT(272,188), // object size
  NSPAIRA(_ZTI8S20635C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20635C2),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C2),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20635C7  : S20636C3 {
  int s20635c7f0[3];
  char s20635c7f1[15];
  char s20635c7f2:8;
  void *s20635c7f3[7];
  int s20635c7f4;
  __tsi64 s20635c7f5;
  virtual void  v4(); // _ZN8S20635C72v4Ev
  virtual void  v5(); // _ZN8S20635C72v5Ev
  ~S20635C7(); // tgen
  S20635C7(); // tgen
};
//SIG(-1 S20635C7) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 v2 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL}


void  S20635C7 ::v4(){vfunc_called(this, "_ZN8S20635C72v4Ev");}
void  S20635C7 ::v5(){vfunc_called(this, "_ZN8S20635C72v5Ev");}
S20635C7 ::~S20635C7(){ note_dtor("S20635C7", this);} // tgen
S20635C7 ::S20635C7(){ note_ctor("S20635C7", this);} // tgen

static void Test_S20635C7()
{
  extern Class_Descriptor cd_S20635C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,38)];
    init_test(&cd_S20635C7, buf);
    S20635C7 *dp, &lv = *(dp=new (buf) S20635C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S20635C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C7)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S20635C7");
    check_field_offset(lv, s20635c7f0, ABISELECT(112,80), "S20635C7.s20635c7f0");
    check_field_offset(lv, s20635c7f1, ABISELECT(124,92), "S20635C7.s20635c7f1");
    set_bf_and_test(lv, s20635c7f2, ABISELECT(139,107), 0, 8, 1, "S20635C7");
    set_bf_and_test(lv, s20635c7f2, ABISELECT(139,107), 0, 8, hide_sll(1LL<<7), "S20635C7");
    check_field_offset(lv, s20635c7f3, ABISELECT(144,108), "S20635C7.s20635c7f3");
    check_field_offset(lv, s20635c7f4, ABISELECT(200,136), "S20635C7.s20635c7f4");
    check_field_offset(lv, s20635c7f5, ABISELECT(208,140), "S20635C7.s20635c7f5");
    test_class_info(&lv, &cd_S20635C7);
    dp->~S20635C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C7(Test_S20635C7, "S20635C7", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN8S20635C7C1Ev();
extern void _ZN8S20635C7D1Ev();
Name_Map name_map_S20635C7[] = {
  NSPAIR(_ZN8S20635C7C1Ev),
  NSPAIR(_ZN8S20635C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S20635C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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 _ZTI8S20635C7[];
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY vtc_S20635C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C7[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
Class_Descriptor cd_S20635C7 = {  "S20635C7", // class name
  bases_S20635C7, 1,
  &(vtc_S20635C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI8S20635C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20635C7),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  S20635C9  : S20635C5 {
  void *s20635c9f0;
  ~S20635C9(); // tgen
  S20635C9(); // tgen
};
//SIG(-1 S20635C9) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} Fp}


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

static void Test_S20635C9()
{
  extern Class_Descriptor cd_S20635C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,25)];
    init_test(&cd_S20635C9, buf);
    S20635C9 *dp, &lv = *(dp=new (buf) S20635C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S20635C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C9)");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(32,20), "S20635C9");
    check_base_class_offset(lv, (S20635C5*), 0, "S20635C9");
    check_field_offset(lv, s20635c9f0, ABISELECT(24,16), "S20635C9.s20635c9f0");
    test_class_info(&lv, &cd_S20635C9);
    dp->~S20635C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C9(Test_S20635C9, "S20635C9", ABISELECT(128,96));

#else // __cplusplus

extern void _ZN8S20635C9C1Ev();
extern void _ZN8S20635C9D1Ev();
Name_Map name_map_S20635C9[] = {
  NSPAIR(_ZN8S20635C9C1Ev),
  NSPAIR(_ZN8S20635C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
static Base_Class bases_S20635C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20635C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20635C9[];
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY vtc_S20635C9[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C9[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S20635C9[];
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C9[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C9[] = {
  {&(_ZTV8S20635C9[3]),  3,4},
  {&(_tg__ZTV8S20635C5__8S20635C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20635C9[];
extern  VTBL_ENTRY _ZTV8S20635C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C9[];
Class_Descriptor cd_S20635C9 = {  "S20635C9", // class name
  bases_S20635C9, 2,
  &(vtc_S20635C9[0]), // expected_vtbl_contents
  &(vtt_S20635C9[0]), // expected_vtt_contents
  ABISELECT(128,96), // object size
  NSPAIRA(_ZTI8S20635C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20635C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C9),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  S20635C11  : virtual S20636C3 , virtual S20635C5 , virtual S20635C7 {
  char s20635c11f0;
  int s20635c11f1;
  ::S20636C12_nt s20635c11f2;
  char s20635c11f3;
  int s20635c11f4;
  ~S20635C11(); // tgen
  S20635C11(); // tgen
};
//SIG(-1 S20635C11) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v1 Fc Fi Fc:8} VBC4{ BC2 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} Fc Fi FU5{ m} Fc Fi}


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

static void Test_S20635C11()
{
  extern Class_Descriptor cd_S20635C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,66)];
    init_test(&cd_S20635C11, buf);
    S20635C11 *dp, &lv = *(dp=new (buf) S20635C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,260), "sizeof(S20635C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C11)");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(32,20), "S20635C11");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(32,20), "S20635C11");
    check_base_class_offset(lv, (S20635C5*), ABISELECT(128,96), "S20635C11");
    check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(176,116), "S20635C11");
    check_base_class_offset(lv, (S20635C7*), ABISELECT(160,112), "S20635C11");
    check_field_offset(lv, s20635c11f0, ABISELECT(8,4), "S20635C11.s20635c11f0");
    check_field_offset(lv, s20635c11f1, ABISELECT(12,8), "S20635C11.s20635c11f1");
    check_field_offset(lv, s20635c11f2, ABISELECT(16,12), "S20635C11.s20635c11f2");
    check_field_offset(lv, s20635c11f3, ABISELECT(17,13), "S20635C11.s20635c11f3");
    check_field_offset(lv, s20635c11f4, ABISELECT(20,16), "S20635C11.s20635c11f4");
    test_class_info(&lv, &cd_S20635C11);
    dp->~S20635C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C11(Test_S20635C11, "S20635C11", ABISELECT(384,260));

#else // __cplusplus

extern void _ZN9S20635C11C1Ev();
extern void _ZN9S20635C11D1Ev();
Name_Map name_map_S20635C11[] = {
  NSPAIR(_ZN9S20635C11C1Ev),
  NSPAIR(_ZN9S20635C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
static Base_Class bases_S20635C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20635C5,    ABISELECT(128,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(160,112), //bcp->offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20635C11[];
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY vtc_S20635C11[] = {
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20635C11[];
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C11[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C11[] = {
  {&(_ZTV9S20635C11[5]),  5,16},
  {&(_ZTV9S20635C11[9]),  9,16},
  {&(_ZTV9S20635C11[14]),  14,16},
  {&(_tg__ZTV8S20635C5__9S20635C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
Class_Descriptor cd_S20635C11 = {  "S20635C11", // class name
  bases_S20635C11, 4,
  &(vtc_S20635C11[0]), // expected_vtbl_contents
  &(vtt_S20635C11[0]), // expected_vtt_contents
  ABISELECT(384,260), // object size
  NSPAIRA(_ZTI9S20635C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20635C11),16, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20635C11),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  S20635C13  {
  void *s20635c13f0[2];
  __tsi64 s20635c13f1;
  void *s20635c13f2[8];
  int s20635c13f3;
  void *s20635c13f4;
  int s20635c13f5;
  ::S20636C14 s20635c13f6[6];
  char s20635c13f7;
  virtual void  v6(); // _ZN9S20635C132v6Ev
  virtual void  v7(); // _ZN9S20635C132v7Ev
  virtual void  v8(); // _ZN9S20635C132v8Ev
  ~S20635C13(); // tgen
  S20635C13(); // tgen
};
//SIG(-1 S20635C13) C1{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU2{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc}


void  S20635C13 ::v6(){vfunc_called(this, "_ZN9S20635C132v6Ev");}
void  S20635C13 ::v7(){vfunc_called(this, "_ZN9S20635C132v7Ev");}
void  S20635C13 ::v8(){vfunc_called(this, "_ZN9S20635C132v8Ev");}
S20635C13 ::~S20635C13(){ note_dtor("S20635C13", this);} // tgen
S20635C13 ::S20635C13(){ note_ctor("S20635C13", this);} // tgen

static void Test_S20635C13()
{
  extern Class_Descriptor cd_S20635C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,36)];
    init_test(&cd_S20635C13, buf);
    S20635C13 *dp, &lv = *(dp=new (buf) S20635C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,140), "sizeof(S20635C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C13)");
    check_field_offset(lv, s20635c13f0, ABISELECT(8,4), "S20635C13.s20635c13f0");
    check_field_offset(lv, s20635c13f1, ABISELECT(24,12), "S20635C13.s20635c13f1");
    check_field_offset(lv, s20635c13f2, ABISELECT(32,20), "S20635C13.s20635c13f2");
    check_field_offset(lv, s20635c13f3, ABISELECT(96,52), "S20635C13.s20635c13f3");
    check_field_offset(lv, s20635c13f4, ABISELECT(104,56), "S20635C13.s20635c13f4");
    check_field_offset(lv, s20635c13f5, ABISELECT(112,60), "S20635C13.s20635c13f5");
    check_field_offset(lv, s20635c13f6, ABISELECT(128,64), "S20635C13.s20635c13f6");
    check_field_offset(lv, s20635c13f7, ABISELECT(224,136), "S20635C13.s20635c13f7");
    test_class_info(&lv, &cd_S20635C13);
    dp->~S20635C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C13(Test_S20635C13, "S20635C13", ABISELECT(240,140));

#else // __cplusplus

extern void _ZN9S20635C13C1Ev();
extern void _ZN9S20635C13D1Ev();
Name_Map name_map_S20635C13[] = {
  NSPAIR(_ZN9S20635C13C1Ev),
  NSPAIR(_ZN9S20635C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20635C13[];
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY vtc_S20635C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C13[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
Class_Descriptor cd_S20635C13 = {  "S20635C13", // class name
  0,0,//no base classes
  &(vtc_S20635C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,140), // object size
  NSPAIRA(_ZTI9S20635C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20635C13),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  S20635C10  : virtual S20635C4 , S20635C7 , S20635C11 , S20635C5 , S20635C13 {
  void *s20635c10f0[7];
  char s20635c10f1;
  char s20635c10f2;
  int s20635c10f3;
  void *s20635c10f4;
  virtual void  v9(); // _ZN9S20635C102v9Ev
  ~S20635C10(); // tgen
  S20635C10(); // tgen
};
//SIG(-1 S20635C10) C1{ VBC2{ BC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC4{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} BC5{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC6{ VBC3 VBC4 VBC5 Fc Fi FU7{ m} Fc Fi} BC4 BC8{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU9{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v1 Fp[7] Fc Fc Fi Fp}


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

static void Test_S20635C10()
{
  extern Class_Descriptor cd_S20635C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(67,176)];
    init_test(&cd_S20635C10, buf);
    S20635C10 *dp, &lv = *(dp=new (buf) S20635C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,700), "sizeof(S20635C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C10)");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(592,368), "S20635C10");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(736,476), "S20635C10");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*), ABISELECT(736,476), "S20635C10");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(736,476), "S20635C10");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(712,460), "S20635C10");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*), ABISELECT(712,460), "S20635C10");
    check_base_class_offset(lv, (S20635C4*), ABISELECT(576,364), "S20635C10");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(16,4), "S20635C10");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*), 0, "S20635C10");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(848,556), "S20635C10");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*), ABISELECT(832,552), "S20635C10");
    check_base_class_offset(lv, (S20635C11*), ABISELECT(216,148), "S20635C10");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*), ABISELECT(240,168), "S20635C10");
    check_base_class_offset(lv, (S20635C13*), ABISELECT(272,184), "S20635C10");
    check_field_offset(lv, s20635c10f0, ABISELECT(504,324), "S20635C10.s20635c10f0");
    check_field_offset(lv, s20635c10f1, ABISELECT(560,352), "S20635C10.s20635c10f1");
    check_field_offset(lv, s20635c10f2, ABISELECT(561,353), "S20635C10.s20635c10f2");
    check_field_offset(lv, s20635c10f3, ABISELECT(564,356), "S20635C10.s20635c10f3");
    check_field_offset(lv, s20635c10f4, ABISELECT(568,360), "S20635C10.s20635c10f4");
    test_class_info(&lv, &cd_S20635C10);
    dp->~S20635C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C10(Test_S20635C10, "S20635C10", ABISELECT(1056,700));

#else // __cplusplus

extern void _ZN9S20635C10C1Ev();
extern void _ZN9S20635C10D1Ev();
Name_Map name_map_S20635C10[] = {
  NSPAIR(_ZN9S20635C10C1Ev),
  NSPAIR(_ZN9S20635C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
static Base_Class bases_S20635C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(592,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(736,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20635C5,    ABISELECT(712,460), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20635C4,    ABISELECT(576,364), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20635C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20636C3,    ABISELECT(848,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
    7, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(832,552), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20635C11,    ABISELECT(216,148), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20635C5,    ABISELECT(240,168), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20635C13,    ABISELECT(272,184), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20635C10[];
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY vtc_S20635C10[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20635C10[];
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C10[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C11__9S20635C10[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C11__9S20635C10[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C10[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C10[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__9S20635C10[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C10[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C10[] = {
  {&(_ZTV9S20635C10[6]),  6,40},
  {&(_tg__ZTV9S20635C11__9S20635C10[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C11__9S20635C10[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C11__9S20635C10[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C10[3]),  3,4},
  {&(_ZTV9S20635C10[28]),  28,40},
  {&(_ZTV9S20635C10[33]),  33,40},
  {&(_ZTV9S20635C10[14]),  14,40},
  {&(_ZTV9S20635C10[38]),  38,40},
  {&(_ZTV9S20635C10[17]),  17,40},
  {&(_tg__ZTV8S20635C4__9S20635C10[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__9S20635C10[4]),  4,5},
  {&(_tg__ZTV8S20635C5__9S20635C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
Class_Descriptor cd_S20635C10 = {  "S20635C10", // class name
  bases_S20635C10, 11,
  &(vtc_S20635C10[0]), // expected_vtbl_contents
  &(vtt_S20635C10[0]), // expected_vtt_contents
  ABISELECT(1056,700), // object size
  NSPAIRA(_ZTI9S20635C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20635C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20635C10),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20635C8  : virtual S20635C5 , S20635C4 , virtual S20635C9 , virtual S20635C10 , S20636C3 {
  unsigned char s20635c8f0:1;
  virtual  ~S20635C8(); // _ZN8S20635C8D2Ev
  virtual void  v10(); // _ZN8S20635C83v10Ev
  S20635C8(); // tgen
};
//SIG(-1 S20635C8) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v2 Fc Fi Fc:8} BC4{ BC3 VBC2 v3 Fs:8 Fp Fc:0 Fc[4] Fi} VBC5{ BC2 Fp} VBC6{ VBC4 BC7{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC2 VBC7 Fc Fi FU9{ m} Fc Fi} BC2 BC10{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU11{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v1 Fc:1}


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

static void Test_S20635C8()
{
  extern Class_Descriptor cd_S20635C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(85,225)];
    init_test(&cd_S20635C8, buf);
    S20635C8 *dp, &lv = *(dp=new (buf) S20635C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,896), "sizeof(S20635C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C8)");
    /*is_ambiguous_... S20635C8::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(272,192), "S20635C8");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C9*), ABISELECT(272,192), "S20635C8");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C10*), ABISELECT(272,192), "S20635C8");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C10*), ABISELECT(272,192), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*), ABISELECT(248,176), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(248,176), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(248,176), "S20635C8");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C10*), ABISELECT(248,176), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(16,4), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C4*), 0, "S20635C8");
    check_base_class_offset(lv, (S20635C5*)(S20635C9*), ABISELECT(368,268), "S20635C8");
    check_base_class_offset(lv, (S20635C9*), ABISELECT(368,268), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(992,656), "S20635C8");
    check_base_class_offset(lv, (S20635C4*)(S20635C10*), ABISELECT(976,652), "S20635C8");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C10*), ABISELECT(416,292), "S20635C8");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C10*), ABISELECT(400,288), "S20635C8");
    /*is_ambiguous_... S20635C8::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(1136,752), "S20635C8");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C10*), ABISELECT(1120,748), "S20635C8");
    check_base_class_offset(lv, (S20635C11*)(S20635C10*), ABISELECT(616,436), "S20635C8");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C10*), ABISELECT(640,456), "S20635C8");
    check_base_class_offset(lv, (S20635C13*)(S20635C10*), ABISELECT(672,472), "S20635C8");
    check_base_class_offset(lv, (S20635C10*), ABISELECT(400,288), "S20635C8");
    /*is_ambiguous_... S20635C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S20635C8");
    set_bf_and_test(lv, s20635c8f0, ABISELECT(240,172), 0, 1, 1, "S20635C8");
    test_class_info(&lv, &cd_S20635C8);
    dp->~S20635C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C8(Test_S20635C8, "S20635C8", ABISELECT(1344,896));

#else // __cplusplus

extern void _ZN8S20635C8C1Ev();
extern void _ZN8S20635C8D2Ev();
Name_Map name_map_S20635C8[] = {
  NSPAIR(_ZN8S20635C8C1Ev),
  NSPAIR(_ZN8S20635C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C9;
extern VTBL_ENTRY _ZTI8S20635C9[];
extern  VTBL_ENTRY _ZTV8S20635C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C10;
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S20635C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(272,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
    1, //immediately_derived
  0, 1},
  {&cd_S20635C5,    ABISELECT(248,176), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20635C4,    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_S20635C5,    ABISELECT(368,268), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20635C9,    ABISELECT(368,268), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(992,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20635C4,    ABISELECT(976,652), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(416,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(400,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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1136,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
    11, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(1120,748), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    12, //immediately_derived
  0, 1},
  {&cd_S20635C11,    ABISELECT(616,436), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //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
    15, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(640,456), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(672,472), //bcp->offset
    47, //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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20635C10,    ABISELECT(400,288), //bcp->offset
    22, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20635C8[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C8D1Ev();
extern void _ZN8S20635C8D0Ev();
extern void _ZN8S20635C83v10Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY vtc_S20635C8[] = {
  ABISELECT(1120,748),
  ABISELECT(976,652),
  ABISELECT(400,288),
  ABISELECT(368,268),
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-616,-436),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  ABISELECT(-368,-264),
  ABISELECT(-640,-456),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-672,-472),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-976,-652),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  0,
  0,
  ABISELECT(-1120,-748),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S20635C8[];
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A__8S20635C8[] = {
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__A__8S20635C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C8[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C8[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C9[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C58S20635C9__A1__8S20635C8[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C8[] = {
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C8[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C10__8S20635C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(368,260),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C10__8S20635C8[] = {
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__8S20635C8[] = {
  ABISELECT(-368,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C10__8S20635C8[] = {
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C10__8S20635C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(152,112),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C10__8S20635C8[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C10__8S20635C8[] = {
  0,
  0,
  ABISELECT(-720,-460),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C10__8S20635C8[] = {
  ABISELECT(-368,-264),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C8[] = {
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__A1__8S20635C8[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(728,476),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C8[] = {
  {&(_ZTV8S20635C8[8]),  8,64},
  {&(_tg__ZTV8S20635C4__A__8S20635C8[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__A__8S20635C8[4]),  4,5},
  {&(_ZTV8S20635C8[16]),  16,64},
  {&(_ZTV8S20635C8[21]),  21,64},
  {&(_ZTV8S20635C8[35]),  35,64},
  {&(_ZTV8S20635C8[57]),  57,64},
  {&(_ZTV8S20635C8[43]),  43,64},
  {&(_ZTV8S20635C8[62]),  62,64},
  {&(_ZTV8S20635C8[46]),  46,64},
  {&(_ZTV8S20635C8[49]),  49,64},
  {&(_tg__ZTV8S20635C5__8S20635C8[3]),  3,4},
  {&(_tg__ZTV8S20635C9__8S20635C8[3]),  3,4},
  {&(_tg__ZTV8S20635C58S20635C9__A1__8S20635C8[3]),  3,4},
  {&(_tg__ZTV9S20635C10__8S20635C8[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C8[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C10__8S20635C8[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C10__8S20635C8[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A2__8S20635C8[3]),  3,4},
  {&(_tg__ZTV8S20635C4__9S20635C10__8S20635C8[5]),  5,6},
  {&(_tg__ZTV8S20635C5__9S20635C10__8S20635C8[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C10__8S20635C8[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C10__8S20635C8[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C10__8S20635C8[3]),  3,4},
  {&(_tg__ZTV8S20635C4__A1__8S20635C8[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__A1__8S20635C8[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20635C8[];
extern  VTBL_ENTRY _ZTV8S20635C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C8[];
Class_Descriptor cd_S20635C8 = {  "S20635C8", // class name
  bases_S20635C8, 17,
  &(vtc_S20635C8[0]), // expected_vtbl_contents
  &(vtt_S20635C8[0]), // expected_vtt_contents
  ABISELECT(1344,896), // object size
  NSPAIRA(_ZTI8S20635C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20635C8),64, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C8),26, //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  S20635C16  : S20635C13 {
  ::S20635C10 s20635c16f0[5];
  int s20635c16f1;
  char s20635c16f2;
  void *s20635c16f3;
  char s20635c16f4;
  int s20635c16f5:5;
  int s20635c16f6[6];
  int s20635c16f7;
  ::S20635C8 s20635c16f8;
  char s20635c16f9;
  char s20635c16f10;
  char s20635c16f11;
  ~S20635C16(); // tgen
  S20635C16(); // tgen
};
//SIG(-1 S20635C16) C1{ BC2{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU3{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC4{ VBC5{ BC6{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC7{ VBC6 v5 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi} BC8{ BC6 v7 v8 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC9{ VBC6 VBC7 VBC8 Fc Fi FU10{ m} Fc Fi} BC7 BC2 v4 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC11{ VBC7 BC5 VBC12{ BC7 Fp} VBC4 BC6 vd v9 Fc:1} Fc Fc Fc}


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

static void Test_S20635C16()
{
  extern Class_Descriptor cd_S20635C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(434,1147)];
    init_test(&cd_S20635C16, buf);
    S20635C16 *dp, &lv = *(dp=new (buf) S20635C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6928,4584), "sizeof(S20635C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C16)");
    check_base_class_offset(lv, (S20635C13*), 0, "S20635C16");
    check_field_offset(lv, s20635c16f0, ABISELECT(240,140), "S20635C16.s20635c16f0");
    check_field_offset(lv, s20635c16f1, ABISELECT(5520,3640), "S20635C16.s20635c16f1");
    check_field_offset(lv, s20635c16f2, ABISELECT(5524,3644), "S20635C16.s20635c16f2");
    check_field_offset(lv, s20635c16f3, ABISELECT(5528,3648), "S20635C16.s20635c16f3");
    check_field_offset(lv, s20635c16f4, ABISELECT(5536,3652), "S20635C16.s20635c16f4");
    set_bf_and_test(lv, s20635c16f5, ABISELECT(5537,3653), 0, 5, 1, "S20635C16");
    set_bf_and_test(lv, s20635c16f5, ABISELECT(5537,3653), 0, 5, hide_sll(1LL<<4), "S20635C16");
    check_field_offset(lv, s20635c16f6, ABISELECT(5540,3656), "S20635C16.s20635c16f6");
    check_field_offset(lv, s20635c16f7, ABISELECT(5564,3680), "S20635C16.s20635c16f7");
    check_field_offset(lv, s20635c16f8, ABISELECT(5568,3684), "S20635C16.s20635c16f8");
    check_field_offset(lv, s20635c16f9, ABISELECT(6912,4580), "S20635C16.s20635c16f9");
    check_field_offset(lv, s20635c16f10, ABISELECT(6913,4581), "S20635C16.s20635c16f10");
    check_field_offset(lv, s20635c16f11, ABISELECT(6914,4582), "S20635C16.s20635c16f11");
    test_class_info(&lv, &cd_S20635C16);
    dp->~S20635C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C16(Test_S20635C16, "S20635C16", ABISELECT(6928,4584));

#else // __cplusplus

extern void _ZN9S20635C16C1Ev();
extern void _ZN9S20635C16D1Ev();
Name_Map name_map_S20635C16[] = {
  NSPAIR(_ZN9S20635C16C1Ev),
  NSPAIR(_ZN9S20635C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
static Base_Class bases_S20635C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20635C13,    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 _ZTI9S20635C16[];
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY vtc_S20635C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C16[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern VTBL_ENTRY _ZTI9S20635C16[];
extern  VTBL_ENTRY _ZTV9S20635C16[];
Class_Descriptor cd_S20635C16 = {  "S20635C16", // class name
  bases_S20635C16, 1,
  &(vtc_S20635C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6928,4584), // object size
  NSPAIRA(_ZTI9S20635C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20635C16),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  S20635C6  : S20635C5 , virtual S20635C7 , S20635C8 {
  ::S20636C15 s20635c6f0;
  ::S20635C16 s20635c6f1;
  int s20635c6f2;
  ~S20635C6(); // tgen
  S20635C6(); // tgen
};
//SIG(-1 S20635C6) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} VBC4{ BC3 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC5{ VBC2 BC6{ BC3 VBC2 v4 Fs:8 Fp Fc:0 Fc[4] Fi} VBC7{ BC2 Fp} VBC8{ VBC6 BC4 BC9{ VBC3 VBC2 VBC4 Fc Fi FU10{ m} Fc Fi} BC2 BC11{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} BC3 vd v9 Fc:1} FC13{ v10 v11 Fi Fc FC3 Fi Fp FC14{ v12 v13 v14 Fp[2] FL Fp[8] Fi Fp Fi FU12[6] Fc} Fi FC15{ BC3 VBC16{ VBC3 v16 Fc Fi Fc:8} v15 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL} FC17{ BC11 FC8[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC5 Fc Fc Fc} Fi}


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

static void Test_S20635C6()
{
  extern Class_Descriptor cd_S20635C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(690,1861)];
    init_test(&cd_S20635C6, buf);
    S20635C6 *dp, &lv = *(dp=new (buf) S20635C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11024,7440), "sizeof(S20635C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C6)");
    /*is_ambiguous_... S20635C6::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(9936,6720), "S20635C6");
    /*is_ambiguous_... S20635C6::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(9936,6720), "S20635C6");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C9*), ABISELECT(9936,6720), "S20635C6");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C10*), ABISELECT(9936,6720), "S20635C6");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C10*), ABISELECT(9936,6720), "S20635C6");
    /*is_ambiguous_... S20635C6::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*), 0, "S20635C6");
    /*is_ambiguous_... S20635C6::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(10048,6800), "S20635C6");
    /*is_ambiguous_... S20635C6::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*), ABISELECT(10032,6796), "S20635C6");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C10*), ABISELECT(10032,6796), "S20635C6");
    /*is_ambiguous_... S20635C8::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C8*), ABISELECT(10248,6944), "S20635C6");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C8*), ABISELECT(10248,6944), "S20635C6");
    /*is_ambiguous_... S20635C6::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(10248,6944), "S20635C6");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C10*), ABISELECT(10248,6944), "S20635C6");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C8*), ABISELECT(48,20), "S20635C6");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C8*), ABISELECT(32,16), "S20635C6");
    check_base_class_offset(lv, (S20635C5*)(S20635C9*), ABISELECT(10272,6960), "S20635C6");
    check_base_class_offset(lv, (S20635C9*)(S20635C8*), ABISELECT(10272,6960), "S20635C6");
    /*is_ambiguous_... S20635C6::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(10896,7348), "S20635C6");
    check_base_class_offset(lv, (S20635C4*)(S20635C10*), ABISELECT(10880,7344), "S20635C6");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C10*), ABISELECT(10320,6984), "S20635C6");
    /*is_ambiguous_... S20635C10::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C10*), ABISELECT(10304,6980), "S20635C6");
    check_base_class_offset(lv, (S20635C11*)(S20635C10*), ABISELECT(10520,7128), "S20635C6");
    /*is_ambiguous_... S20635C10::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C10*), ABISELECT(10544,7148), "S20635C6");
    check_base_class_offset(lv, (S20635C13*)(S20635C10*), ABISELECT(10576,7164), "S20635C6");
    check_base_class_offset(lv, (S20635C10*)(S20635C8*), ABISELECT(10304,6980), "S20635C6");
    /*is_ambiguous_... S20635C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C8*), ABISELECT(176,112), "S20635C6");
    check_base_class_offset(lv, (S20635C8*), ABISELECT(32,16), "S20635C6");
    check_field_offset(lv, s20635c6f0, ABISELECT(288,192), "S20635C6.s20635c6f0");
    check_field_offset(lv, s20635c6f1, ABISELECT(2992,2132), "S20635C6.s20635c6f1");
    check_field_offset(lv, s20635c6f2, ABISELECT(9920,6716), "S20635C6.s20635c6f2");
    test_class_info(&lv, &cd_S20635C6);
    dp->~S20635C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C6(Test_S20635C6, "S20635C6", ABISELECT(11024,7440));

#else // __cplusplus

extern void _ZN8S20635C6C1Ev();
extern void _ZN8S20635C6D1Ev();
Name_Map name_map_S20635C6[] = {
  NSPAIR(_ZN8S20635C6C1Ev),
  NSPAIR(_ZN8S20635C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C9;
extern VTBL_ENTRY _ZTI8S20635C9[];
extern  VTBL_ENTRY _ZTV8S20635C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C10;
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C8;
extern VTBL_ENTRY _ZTI8S20635C8[];
extern  VTBL_ENTRY _ZTV8S20635C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C8[];
static Base_Class bases_S20635C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(9936,6720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20635C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(10048,6800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(10032,6796), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20635C5,    ABISELECT(10248,6944), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20635C4,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(10272,6960), //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20635C9,    ABISELECT(10272,6960), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10896,7348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20635C4,    ABISELECT(10880,7344), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10320,6984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C7,    ABISELECT(10304,6980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(10520,7128), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(10544,7148), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(10576,7164), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20635C10,    ABISELECT(10304,6980), //bcp->offset
    39, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20635C8,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20635C6[];
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C6D1Ev();
extern void _ZN8S20635C6D0Ev();
extern void _ZN8S20635C42v2Ev();
extern void ABISELECT(_ZThn32_N8S20635C6D1Ev,_ZThn16_N8S20635C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20635C6D0Ev,_ZThn16_N8S20635C6D0Ev)();
extern void _ZN8S20635C83v10Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY vtc_S20635C6[] = {
  ABISELECT(10880,7344),
  ABISELECT(10304,6980),
  ABISELECT(10272,6960),
  ABISELECT(10248,6944),
  ABISELECT(10032,6796),
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  (VTBL_ENTRY)&_ZN8S20635C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C6D0Ev,
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20635C6D1Ev,_ZThn16_N8S20635C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20635C6D0Ev,_ZThn16_N8S20635C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
  0,
  0,
  ABISELECT(-10032,-6796),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10248,-6944),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10272,-6960),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10304,-6980),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10520,-7128),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  ABISELECT(-608,-428),
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-10576,-7164),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10880,-7344),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern VTBL_ENTRY _ZTV8S20635C6[];
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__8S20635C6[] = {
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C8D1Ev();
extern void _ZN8S20635C8D0Ev();
extern void _ZN8S20635C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C8__8S20635C6[] = {
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C8__8S20635C6[] = {
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C8__8S20635C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C8__8S20635C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C8__8S20635C6[] = {
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10240,-6944),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C8__8S20635C6[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10272,-6964),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C8__8S20635C6[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10848,-7328),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C8__8S20635C6[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10488,-7112),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__8S20635C8__8S20635C6[] = {
  0,
  0,
  ABISELECT(-10000,-6780),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__8S20635C8__8S20635C6[] = {
  ABISELECT(-608,-428),
  ABISELECT(-10512,-7132),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C10__8S20635C8__8S20635C6[] = {
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A1__8S20635C6[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C6[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C9[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C58S20635C9__A2__8S20635C6[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C6[] = {
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C6[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C10__8S20635C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C10__8S20635C6[] = {
  0,
  0,
  ABISELECT(488,332),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A3__8S20635C6[] = {
  ABISELECT(-608,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C10__8S20635C6[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C10__8S20635C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C10__8S20635C6[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C10__8S20635C6[] = {
  0,
  0,
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C10__8S20635C6[] = {
  ABISELECT(-608,-428),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C6[] = {
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__A1__8S20635C6[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(632,400),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C6[] = {
  {&(_ZTV8S20635C6[8]),  8,75},
  {&(_tg__ZTV8S20635C5__A__8S20635C6[3]),  3,4},
  {&(_tg__ZTV8S20635C8__8S20635C6[8]),  8,12},
  {&(_tg__ZTV8S20635C48S20635C8__8S20635C6[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C8__8S20635C6[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C8__8S20635C6[4]),  4,5},
  {&(_tg__ZTV8S20635C9__8S20635C8__8S20635C6[4]),  4,5},
  {&(_tg__ZTV9S20635C10__8S20635C8__8S20635C6[13]),  13,16},
  {&(_tg__ZTV8S20635C4__A1__8S20635C8__8S20635C6[5]),  5,6},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C8__8S20635C6[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__8S20635C8__8S20635C6[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A2__8S20635C8__8S20635C6[3]),  3,4},
  {&(_tg__ZTV9S20635C139S20635C10__8S20635C8__8S20635C6[2]),  2,5},
  {&(_ZTV8S20635C6[27]),  27,75},
  {&(_ZTV8S20635C6[19]),  19,75},
  {&(_ZTV8S20635C6[33]),  33,75},
  {&(_ZTV8S20635C6[38]),  38,75},
  {&(_ZTV8S20635C6[52]),  52,75},
  {&(_ZTV8S20635C6[74]),  74,75},
  {&(_ZTV8S20635C6[60]),  60,75},
  {&(_ZTV8S20635C6[63]),  63,75},
  {&(_ZTV8S20635C6[66]),  66,75},
  {&(_tg__ZTV8S20635C5__A1__8S20635C6[3]),  3,4},
  {&(_tg__ZTV8S20635C9__8S20635C6[3]),  3,4},
  {&(_tg__ZTV8S20635C58S20635C9__A2__8S20635C6[3]),  3,4},
  {&(_tg__ZTV9S20635C10__8S20635C6[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C6[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C10__8S20635C6[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C10__8S20635C6[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A3__8S20635C6[3]),  3,4},
  {&(_tg__ZTV8S20635C4__9S20635C10__8S20635C6[5]),  5,6},
  {&(_tg__ZTV8S20635C5__9S20635C10__8S20635C6[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C10__8S20635C6[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C10__8S20635C6[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C10__8S20635C6[3]),  3,4},
  {&(_tg__ZTV8S20635C4__A1__8S20635C6[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__A1__8S20635C6[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20635C6[];
extern  VTBL_ENTRY _ZTV8S20635C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C6[];
Class_Descriptor cd_S20635C6 = {  "S20635C6", // class name
  bases_S20635C6, 19,
  &(vtc_S20635C6[0]), // expected_vtbl_contents
  &(vtt_S20635C6[0]), // expected_vtt_contents
  ABISELECT(11024,7440), // object size
  NSPAIRA(_ZTI8S20635C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20635C6),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C6),37, //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  S20635C18  : virtual S20636C3 , S20635C2 , S20635C7 , S20635C11 {
  int s20635c18f0[4];
  virtual void  v11(); // _ZN9S20635C183v11Ev
  virtual void  v12(); // _ZN9S20635C183v12Ev
  ~S20635C18(); // tgen
  S20635C18(); // tgen
};
//SIG(-1 S20635C18) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ VBC2 BC4{ BC2 VBC5{ VBC2 v3 Fc Fi Fc:8} v4 Fs:8 Fp Fc:0 Fc[4] Fi} v5} BC6{ BC2 v6 v7 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC2 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} v1 v2 Fi[4]}


void  S20635C18 ::v11(){vfunc_called(this, "_ZN9S20635C183v11Ev");}
void  S20635C18 ::v12(){vfunc_called(this, "_ZN9S20635C183v12Ev");}
S20635C18 ::~S20635C18(){ note_dtor("S20635C18", this);} // tgen
S20635C18 ::S20635C18(){ note_ctor("S20635C18", this);} // tgen

static void Test_S20635C18()
{
  extern Class_Descriptor cd_S20635C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,131)];
    init_test(&cd_S20635C18, buf);
    S20635C18 *dp, &lv = *(dp=new (buf) S20635C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,520), "sizeof(S20635C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C18)");
    /*is_ambiguous_... S20635C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(400,280), "S20635C18");
    /*is_ambiguous_... S20635C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C2*), ABISELECT(400,280), "S20635C18");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(400,280), "S20635C18");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*), ABISELECT(400,280), "S20635C18");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C2*), ABISELECT(16,4), "S20635C18");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C2*), ABISELECT(496,356), "S20635C18");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*), ABISELECT(496,356), "S20635C18");
    check_base_class_offset(lv, (S20635C4*)(S20635C2*), 0, "S20635C18");
    check_base_class_offset(lv, (S20635C2*), 0, "S20635C18");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(160,100), "S20635C18");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*), ABISELECT(144,96), "S20635C18");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(544,376), "S20635C18");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*), ABISELECT(528,372), "S20635C18");
    check_base_class_offset(lv, (S20635C11*), ABISELECT(360,244), "S20635C18");
    check_field_offset(lv, s20635c18f0, ABISELECT(384,264), "S20635C18.s20635c18f0");
    test_class_info(&lv, &cd_S20635C18);
    dp->~S20635C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C18(Test_S20635C18, "S20635C18", ABISELECT(752,520));

#else // __cplusplus

extern void _ZN9S20635C18C1Ev();
extern void _ZN9S20635C18D1Ev();
Name_Map name_map_S20635C18[] = {
  NSPAIR(_ZN9S20635C18C1Ev),
  NSPAIR(_ZN9S20635C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C2;
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
static Base_Class bases_S20635C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(400,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(496,356), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20635C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20635C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(144,96), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(544,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(528,372), //bcp->offset
    23, //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
    9, //immediately_derived
  0, 1},
  {&cd_S20635C11,    ABISELECT(360,244), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20635C18[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY vtc_S20635C18[] = {
  ABISELECT(528,372),
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  0,
  ABISELECT(-528,-372),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20635C18[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C2__9S20635C18[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C2__9S20635C18[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C2__9S20635C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C2__9S20635C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C18[] = {
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C11__9S20635C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C11__9S20635C18[] = {
  0,
  0,
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C18[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C18[] = {
  {&(_ZTV9S20635C18[5]),  5,29},
  {&(_tg__ZTV8S20635C2__9S20635C18[4]),  4,6},
  {&(_tg__ZTV8S20635C48S20635C2__9S20635C18[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C2__9S20635C18[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C2__9S20635C18[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C18[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C11__9S20635C18[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C11__9S20635C18[4]),  4,6},
  {&(_ZTV9S20635C18[22]),  22,29},
  {&(_ZTV9S20635C18[18]),  18,29},
  {&(_ZTV9S20635C18[27]),  27,29},
  {&(_tg__ZTV8S20635C5__9S20635C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20635C18[];
extern  VTBL_ENTRY _ZTV9S20635C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C18[];
Class_Descriptor cd_S20635C18 = {  "S20635C18", // class name
  bases_S20635C18, 10,
  &(vtc_S20635C18[0]), // expected_vtbl_contents
  &(vtt_S20635C18[0]), // expected_vtt_contents
  ABISELECT(752,520), // object size
  NSPAIRA(_ZTI9S20635C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20635C18),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20635C18),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20635C17  : S20635C18 , virtual S20635C16 {
  int s20635c17f0;
  ::S20636C19 s20635c17f1;
  virtual void  v13(); // _ZN9S20635C173v13Ev
  ~S20635C17(); // tgen
  S20635C17(); // tgen
};
//SIG(-1 S20635C17) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ VBC3 BC5{ BC3 VBC6{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v4} BC7{ BC3 v5 v6 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} v7 v8 Fi[4]} VBC10{ BC11{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC13{ VBC5 BC7 BC8 BC6 BC11 v24 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC14{ VBC6 BC5 VBC15{ BC6 Fp} VBC13 BC3 vd v25 Fc:1} Fc Fc Fc} v1 Fi FC16{ BC17{ VBC3 BC18{ VBC3 BC19{ BC3 VBC20{ VBC3 v13 Fc Fi Fc:8} v14 Fs:8 Fp Fc:0 Fc[4] Fi} v15} BC21{ BC3 v16 v17 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC22{ VBC3 VBC20 VBC21 Fc Fi FU9 Fc Fi} v18 v19 Fi[4]} BC21 VBC23{ VBC19 BC21 BC22 BC20 BC24{ v20 v21 v22 Fp[2] FL Fp[8] Fi Fp Fi FU12[6] Fc} v23 Fp[7] Fc Fc Fi Fp} v12 FL Fp Fi}}


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

static void Test_S20635C17()
{
  extern Class_Descriptor cd_S20635C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(589,1564)];
    init_test(&cd_S20635C17, buf);
    S20635C17 *dp, &lv = *(dp=new (buf) S20635C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9408,6252), "sizeof(S20635C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C17)");
    /*is_ambiguous_... S20635C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C18*), ABISELECT(2128,1428), "S20635C17");
    /*is_ambiguous_... S20635C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C2*)(S20635C18*), ABISELECT(2128,1428), "S20635C17");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(2128,1428), "S20635C17");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C18*), ABISELECT(2128,1428), "S20635C17");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C2*)(S20635C18*), ABISELECT(16,4), "S20635C17");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C2*)(S20635C18*), ABISELECT(2224,1504), "S20635C17");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C18*), ABISELECT(2224,1504), "S20635C17");
    check_base_class_offset(lv, (S20635C4*)(S20635C2*)(S20635C18*), 0, "S20635C17");
    check_base_class_offset(lv, (S20635C2*)(S20635C18*), 0, "S20635C17");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C18*), ABISELECT(160,100), "S20635C17");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C18*), ABISELECT(144,96), "S20635C17");
    /*is_ambiguous_... S20635C17::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(2272,1524), "S20635C17");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C18*), ABISELECT(2256,1520), "S20635C17");
    check_base_class_offset(lv, (S20635C11*)(S20635C18*), ABISELECT(360,244), "S20635C17");
    check_base_class_offset(lv, (S20635C18*), 0, "S20635C17");
    check_base_class_offset(lv, (S20635C13*)(S20635C16*), ABISELECT(2480,1668), "S20635C17");
    check_base_class_offset(lv, (S20635C16*), ABISELECT(2480,1668), "S20635C17");
    check_field_offset(lv, s20635c17f0, ABISELECT(400,280), "S20635C17.s20635c17f0");
    check_field_offset(lv, s20635c17f1, ABISELECT(416,284), "S20635C17.s20635c17f1");
    test_class_info(&lv, &cd_S20635C17);
    dp->~S20635C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C17(Test_S20635C17, "S20635C17", ABISELECT(9408,6252));

#else // __cplusplus

extern void _ZN9S20635C17C1Ev();
extern void _ZN9S20635C17D1Ev();
Name_Map name_map_S20635C17[] = {
  NSPAIR(_ZN9S20635C17C1Ev),
  NSPAIR(_ZN9S20635C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C2;
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C18;
extern VTBL_ENTRY _ZTI9S20635C18[];
extern  VTBL_ENTRY _ZTV9S20635C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C18[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C16;
extern VTBL_ENTRY _ZTI9S20635C16[];
extern  VTBL_ENTRY _ZTV9S20635C16[];
static Base_Class bases_S20635C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(2128,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(2224,1504), //bcp->offset
    20, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20635C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20635C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(144,96), //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(2272,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
    8, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(2256,1520), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20635C11,    ABISELECT(360,244), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20635C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20635C13,    ABISELECT(2480,1668), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20635C16,    ABISELECT(2480,1668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20635C17[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void _ZN9S20635C173v13Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY vtc_S20635C17[] = {
  ABISELECT(2480,1668),
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20635C173v13Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-2480,-1668),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern VTBL_ENTRY _ZTV9S20635C17[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C18__9S20635C17[] = {
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C29S20635C18__9S20635C17[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C29S20635C18__9S20635C17[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C29S20635C18__9S20635C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C29S20635C18__9S20635C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C18__9S20635C17[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C18__9S20635C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-1864,-1260),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C18__9S20635C17[] = {
  0,
  0,
  ABISELECT(-1896,-1276),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C18__9S20635C17[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C18__9S20635C17[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C18__9S20635C17[] = {
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C17[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C17[] = {
  {&(_ZTV9S20635C17[6]),  6,39},
  {&(_tg__ZTV9S20635C18__9S20635C17[5]),  5,9},
  {&(_tg__ZTV8S20635C29S20635C18__9S20635C17[4]),  4,6},
  {&(_tg__ZTV8S20635C48S20635C29S20635C18__9S20635C17[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C29S20635C18__9S20635C17[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C29S20635C18__9S20635C17[4]),  4,5},
  {&(_tg__ZTV9S20635C119S20635C18__9S20635C17[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C18__9S20635C17[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C18__9S20635C17[4]),  4,6},
  {&(_tg__ZTV8S20635C5__9S20635C18__9S20635C17[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C18__9S20635C17[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C18__9S20635C17[4]),  4,6},
  {&(_ZTV9S20635C17[24]),  24,39},
  {&(_ZTV9S20635C17[20]),  20,39},
  {&(_ZTV9S20635C17[29]),  29,39},
  {&(_ZTV9S20635C17[36]),  36,39},
  {&(_tg__ZTV8S20635C5__9S20635C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20635C17[];
extern  VTBL_ENTRY _ZTV9S20635C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C17[];
Class_Descriptor cd_S20635C17 = {  "S20635C17", // class name
  bases_S20635C17, 13,
  &(vtc_S20635C17[0]), // expected_vtbl_contents
  &(vtt_S20635C17[0]), // expected_vtt_contents
  ABISELECT(9408,6252), // object size
  NSPAIRA(_ZTI9S20635C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20635C17),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20635C17),17, //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  S20635C20  : virtual S20635C11 , S20635C18 , S20635C8 , S20635C10 {
  int s20635c20f0;
  char s20635c20f1;
  long double s20635c20f2;
  char s20635c20f3;
  int s20635c20f4;
  ::S20636C21_nt s20635c20f5;
  int s20635c20f6:4;
  ::S20635C13 s20635c20f7;
  int s20635c20f8;
  __tsi64 s20635c20f9;
  char s20635c20f10;
  int s20635c20f11;
  ::S20636C22 s20635c20f12;
  virtual  ~S20635C20(); // _ZN9S20635C20D2Ev
  virtual void  v14(); // _ZN9S20635C203v14Ev
  S20635C20(); // tgen
};
//SIG(-1 S20635C20) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC4{ VBC3 v2 Fc Fi Fc:8} VBC5{ BC3 v3 v4 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} Fc Fi FU6{ m} Fc Fi} BC7{ VBC3 BC8{ VBC3 BC9{ BC3 VBC4 v5 Fs:8 Fp Fc:0 Fc[4] Fi} v6} BC5 BC2 v7 v8 Fi[4]} BC10{ VBC4 BC9 VBC11{ BC4 Fp} VBC12{ VBC9 BC5 BC2 BC4 BC13{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU14{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v12 Fp[7] Fc Fc Fi Fp} BC3 vd v13 Fc:1} BC12 vd v1 Fi Fc FD Fc Fi FC15{} Fi:4 FC13 Fi FL Fc Fi FC16{ VBC17{ VBC18{ BC3 VBC19{ VBC3 v14 Fc Fi Fc:8} v15 Fs:8 Fp Fc:0 Fc[4] Fi} BC20{ BC3 v16 v17 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC21{ VBC3 VBC19 VBC20 Fc Fi FU6 Fc Fi} BC19 BC22{ v18 v19 v20 Fp[2] FL Fp[8] Fi Fp Fi FU14[6] Fc} v21 Fp[7] Fc Fc Fi Fp} VBC23{ BC19 Fp} VBC24{ VBC19 BC18 VBC23 VBC17 BC3 vd v22 Fc:1} VBC25{ BC26{ VBC3 BC27{ VBC3 BC18 v23} BC20 BC21 v24 v25 Fi[4]} VBC28{ BC22 FC17[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC24 Fc Fc Fc} v26 Fi FC29{ BC26 BC20 VBC17 v27 FL Fp Fi}} VBC22 vd Fi Fi}}


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

static void Test_S20635C20()
{
  extern Class_Descriptor cd_S20635C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(835,2204)];
    init_test(&cd_S20635C20, buf);
    S20635C20 *dp, &lv = *(dp=new (buf) S20635C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13344,8812), "sizeof(S20635C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C20)");
    /*is_ambiguous_... S20635C20::S20635C11 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C18*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C2*)(S20635C18*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C18*), ABISELECT(12240,8092), "S20635C20");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C9*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C10*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C10*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C10*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C10*), ABISELECT(12240,8092), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C11 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C11*), ABISELECT(12336,8168), "S20635C20");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C2*)(S20635C18*), ABISELECT(12336,8168), "S20635C20");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C18*), ABISELECT(12336,8168), "S20635C20");
    /*is_ambiguous_... S20635C8::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C8*), ABISELECT(12336,8168), "S20635C20");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C8*), ABISELECT(12336,8168), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(12336,8168), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C10*), ABISELECT(12336,8168), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C10*), ABISELECT(12336,8168), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(12384,8188), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C11 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C11*), ABISELECT(12368,8184), "S20635C20");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C18*), ABISELECT(12368,8184), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C10*), ABISELECT(12368,8184), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C10*), ABISELECT(12368,8184), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C11 */ AMB_check_base_class_offset(lv, (S20635C11*), ABISELECT(12208,8072), "S20635C20");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C2*)(S20635C18*), ABISELECT(16,4), "S20635C20");
    check_base_class_offset(lv, (S20635C4*)(S20635C2*)(S20635C18*), 0, "S20635C20");
    check_base_class_offset(lv, (S20635C2*)(S20635C18*), 0, "S20635C20");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C18*), ABISELECT(160,100), "S20635C20");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C18*), ABISELECT(144,96), "S20635C20");
    check_base_class_offset(lv, (S20635C11*)(S20635C18*), ABISELECT(360,244), "S20635C20");
    check_base_class_offset(lv, (S20635C18*), 0, "S20635C20");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C8*), ABISELECT(416,284), "S20635C20");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C8*), ABISELECT(400,280), "S20635C20");
    check_base_class_offset(lv, (S20635C5*)(S20635C9*), ABISELECT(12584,8332), "S20635C20");
    check_base_class_offset(lv, (S20635C9*)(S20635C8*), ABISELECT(12584,8332), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(13216,8720), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C10*), ABISELECT(13200,8716), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C10*), ABISELECT(13200,8716), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C10*), ABISELECT(12640,8356), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C10*), ABISELECT(12624,8352), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C11*)(S20635C10*), ABISELECT(12840,8500), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C10*), ABISELECT(12864,8520), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C13*)(S20635C10*), ABISELECT(12896,8536), "S20635C20");
    check_base_class_offset(lv, (S20635C10*)(S20635C8*), ABISELECT(12624,8352), "S20635C20");
    /*is_ambiguous_... S20635C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C8*), ABISELECT(544,376), "S20635C20");
    check_base_class_offset(lv, (S20635C8*), ABISELECT(400,280), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C10*), ABISELECT(672,460), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C10*), ABISELECT(656,456), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C11*)(S20635C10*), ABISELECT(872,604), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C10*), ABISELECT(896,624), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C13*)(S20635C10*), ABISELECT(928,640), "S20635C20");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C10*), ABISELECT(656,456), "S20635C20");
    check_field_offset(lv, s20635c20f0, ABISELECT(1232,820), "S20635C20.s20635c20f0");
    check_field_offset(lv, s20635c20f1, ABISELECT(1236,824), "S20635C20.s20635c20f1");
    check_field_offset(lv, s20635c20f2, ABISELECT(1248,828), "S20635C20.s20635c20f2");
    check_field_offset(lv, s20635c20f3, ABISELECT(1264,840), "S20635C20.s20635c20f3");
    check_field_offset(lv, s20635c20f4, ABISELECT(1268,844), "S20635C20.s20635c20f4");
    check_field_offset(lv, s20635c20f5, ABISELECT(1272,848), "S20635C20.s20635c20f5");
    set_bf_and_test(lv, s20635c20f6, ABISELECT(1273,849), 0, 4, 1, "S20635C20");
    set_bf_and_test(lv, s20635c20f6, ABISELECT(1273,849), 0, 4, hide_sll(1LL<<3), "S20635C20");
    check_field_offset(lv, s20635c20f7, ABISELECT(1280,852), "S20635C20.s20635c20f7");
    check_field_offset(lv, s20635c20f8, ABISELECT(1520,992), "S20635C20.s20635c20f8");
    check_field_offset(lv, s20635c20f9, ABISELECT(1528,996), "S20635C20.s20635c20f9");
    check_field_offset(lv, s20635c20f10, ABISELECT(1536,1004), "S20635C20.s20635c20f10");
    check_field_offset(lv, s20635c20f11, ABISELECT(1540,1008), "S20635C20.s20635c20f11");
    check_field_offset(lv, s20635c20f12, ABISELECT(1552,1012), "S20635C20.s20635c20f12");
    test_class_info(&lv, &cd_S20635C20);
    dp->~S20635C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C20(Test_S20635C20, "S20635C20", ABISELECT(13344,8812));

#else // __cplusplus

extern void _ZN9S20635C20C1Ev();
extern void _ZN9S20635C20D2Ev();
Name_Map name_map_S20635C20[] = {
  NSPAIR(_ZN9S20635C20C1Ev),
  NSPAIR(_ZN9S20635C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C2;
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C18;
extern VTBL_ENTRY _ZTI9S20635C18[];
extern  VTBL_ENTRY _ZTV9S20635C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C18[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C9;
extern VTBL_ENTRY _ZTI8S20635C9[];
extern  VTBL_ENTRY _ZTV8S20635C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C10;
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C8;
extern VTBL_ENTRY _ZTI8S20635C8[];
extern  VTBL_ENTRY _ZTV8S20635C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C10;
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
static Base_Class bases_S20635C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(12240,8092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20635C5,    ABISELECT(12336,8168), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(12384,8188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(12368,8184), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20635C11,    ABISELECT(12208,8072), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20635C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20635C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(144,96), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(360,244), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20635C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(416,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
    13, //immediately_derived
  0, 0},
  {&cd_S20635C4,    ABISELECT(400,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(12584,8332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20635C9,    ABISELECT(12584,8332), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(13216,8720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C4,    ABISELECT(13200,8716), //bcp->offset
    111, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(12640,8356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C7,    ABISELECT(12624,8352), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(12840,8500), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(12864,8520), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(12896,8536), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20635C10,    ABISELECT(12624,8352), //bcp->offset
    81, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(544,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20635C8,    ABISELECT(400,280), //bcp->offset
    25, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(672,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
    27, //immediately_derived
  0, 0},
  {&cd_S20635C7,    ABISELECT(656,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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(872,604), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(896,624), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(928,640), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20635C10,    ABISELECT(656,456), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20635C20[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void _ZN9S20635C20D1Ev();
extern void _ZN9S20635C20D0Ev();
extern void _ZN9S20635C203v14Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C42v2Ev();
extern void ABISELECT(_ZThn400_N9S20635C20D1Ev,_ZThn280_N9S20635C20D1Ev)();
extern void ABISELECT(_ZThn400_N9S20635C20D0Ev,_ZThn280_N9S20635C20D0Ev)();
extern void _ZN8S20635C83v10Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY vtc_S20635C20[] = {
  ABISELECT(13200,8716),
  ABISELECT(12624,8352),
  ABISELECT(12584,8332),
  ABISELECT(12208,8072),
  ABISELECT(12368,8184),
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20635C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20635C20D0Ev,
  (VTBL_ENTRY)&_ZN9S20635C203v14Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  ABISELECT(12008,7940),
  ABISELECT(11976,7924),
  ABISELECT(11880,7848),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  ABISELECT(11968,7904),
  ABISELECT(12800,8436),
  ABISELECT(12224,8072),
  ABISELECT(12184,8052),
  ABISELECT(11840,7812),
  ABISELECT(11936,7888),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20635C20D1Ev,_ZThn280_N9S20635C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20635C20D0Ev,_ZThn280_N9S20635C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
  ABISELECT(11712,7728),
  ABISELECT(11584,7636),
  ABISELECT(11680,7712),
  ABISELECT(12544,8260),
  ABISELECT(-656,-456),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(11496,7580),
  ABISELECT(11464,7564),
  ABISELECT(11368,7488),
  ABISELECT(-872,-604),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  ABISELECT(11344,7468),
  ABISELECT(-896,-624),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-928,-640),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  ABISELECT(-12208,-8072),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  0,
  0,
  ABISELECT(-12368,-8184),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  0,
  ABISELECT(-344,-240),
  ABISELECT(-12584,-8332),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-384,-260),
  ABISELECT(-288,-184),
  ABISELECT(576,364),
  ABISELECT(-12624,-8352),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  ABISELECT(-12840,-8500),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  ABISELECT(-624,-428),
  ABISELECT(-12864,-8520),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-12896,-8536),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-13200,-8716),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern VTBL_ENTRY _ZTV9S20635C20[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C18__9S20635C20[] = {
  ABISELECT(12368,8184),
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C29S20635C18__9S20635C20[] = {
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C29S20635C18__9S20635C20[] = {
  ABISELECT(12240,8092),
  ABISELECT(12336,8168),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C29S20635C18__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C29S20635C18__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C18__A1__9S20635C20[] = {
  ABISELECT(12008,7940),
  ABISELECT(11976,7924),
  ABISELECT(11880,7848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C18__A1__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11976,-7924),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C18__A1__9S20635C20[] = {
  0,
  0,
  ABISELECT(-12008,-7940),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C18__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12336,-8168),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C18__9S20635C20[] = {
  ABISELECT(12008,7940),
  ABISELECT(11976,7924),
  ABISELECT(11880,7848),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C18__9S20635C20[] = {
  0,
  0,
  ABISELECT(-12368,-8184),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C8D1Ev();
extern void _ZN8S20635C8D0Ev();
extern void _ZN8S20635C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C8__9S20635C20[] = {
  ABISELECT(11968,7904),
  ABISELECT(12800,8436),
  ABISELECT(12224,8072),
  ABISELECT(12184,8052),
  ABISELECT(11840,7812),
  ABISELECT(11936,7888),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C8__A1__9S20635C20[] = {
  ABISELECT(11840,7812),
  ABISELECT(11936,7888),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C8__A1__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11936,-7888),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C8__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11936,-7888),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C8__9S20635C20[] = {
  0,
  ABISELECT(-344,-240),
  ABISELECT(-12184,-8052),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C8__9S20635C20[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-384,-260),
  ABISELECT(-288,-184),
  ABISELECT(576,364),
  ABISELECT(-12224,-8072),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C8__9S20635C20[] = {
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-12800,-8436),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C8__9S20635C20[] = {
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  ABISELECT(-12440,-8220),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__8S20635C8__9S20635C20[] = {
  0,
  0,
  ABISELECT(-11968,-7904),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__8S20635C8__9S20635C20[] = {
  ABISELECT(-624,-428),
  ABISELECT(-12464,-8240),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C10__8S20635C8__9S20635C20[] = {
  ABISELECT(-12496,-8256),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__A__9S20635C20[] = {
  ABISELECT(11712,7728),
  ABISELECT(11584,7636),
  ABISELECT(11680,7712),
  ABISELECT(12544,8260),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__A3__9S20635C20[] = {
  ABISELECT(11496,7580),
  ABISELECT(11464,7564),
  ABISELECT(11368,7488),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C10__A3__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11464,-7564),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C10__A3__9S20635C20[] = {
  0,
  0,
  ABISELECT(-11496,-7580),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A3__9S20635C20[] = {
  ABISELECT(11344,7468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C10__A__9S20635C20[] = {
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-12544,-8260),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C10__A__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-11680,-7712),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C10__A__9S20635C20[] = {
  ABISELECT(11496,7580),
  ABISELECT(11464,7564),
  ABISELECT(11368,7488),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C10__A__9S20635C20[] = {
  0,
  0,
  ABISELECT(-11712,-7728),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C10__A__9S20635C20[] = {
  ABISELECT(11344,7468),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C20[] = {
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C11__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C11__9S20635C20[] = {
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C20[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__9S20635C20[] = {
  ABISELECT(-344,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C9[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C58S20635C9__A1__9S20635C20[] = {
  ABISELECT(-344,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__9S20635C20[] = {
  ABISELECT(-256,-168),
  ABISELECT(-384,-260),
  ABISELECT(-288,-184),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__A2__9S20635C20[] = {
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C10__A2__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(504,332),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C10__A2__9S20635C20[] = {
  0,
  0,
  ABISELECT(472,316),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__9S20635C20[] = {
  ABISELECT(-624,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C10__9S20635C20[] = {
  0,
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C10__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(288,184),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C10__9S20635C20[] = {
  ABISELECT(-472,-316),
  ABISELECT(-504,-332),
  ABISELECT(-600,-408),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C10__9S20635C20[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C10__9S20635C20[] = {
  ABISELECT(-624,-428),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A2__9S20635C20[] = {
  ABISELECT(-960,-624),
  ABISELECT(-864,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__A2__9S20635C20[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(864,548),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTT_ENTRY vtt_S20635C20[] = {
  {&(_ZTV9S20635C20[9]),  9,117},
  {&(_tg__ZTV9S20635C18__9S20635C20[5]),  5,9},
  {&(_tg__ZTV8S20635C29S20635C18__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C48S20635C29S20635C18__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C29S20635C18__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C29S20635C18__9S20635C20[4]),  4,5},
  {&(_tg__ZTV9S20635C119S20635C18__A1__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C18__A1__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C18__A1__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C5__9S20635C18__9S20635C20[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C18__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C18__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C8__9S20635C20[8]),  8,12},
  {&(_tg__ZTV8S20635C48S20635C8__A1__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C8__A1__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C8__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C9__8S20635C8__9S20635C20[4]),  4,5},
  {&(_tg__ZTV9S20635C10__8S20635C8__9S20635C20[13]),  13,16},
  {&(_tg__ZTV8S20635C4__A1__8S20635C8__9S20635C20[5]),  5,6},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C8__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__8S20635C8__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A2__8S20635C8__9S20635C20[3]),  3,4},
  {&(_tg__ZTV9S20635C139S20635C10__8S20635C8__9S20635C20[2]),  2,5},
  {&(_tg__ZTV9S20635C10__A__9S20635C20[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C10__A3__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C10__A3__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C10__A3__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A3__9S20635C20[3]),  3,4},
  {&(_tg__ZTV8S20635C4__9S20635C10__A__9S20635C20[5]),  5,6},
  {&(_tg__ZTV8S20635C5__9S20635C10__A__9S20635C20[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C10__A__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C10__A__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C10__A__9S20635C20[3]),  3,4},
  {&(_ZTV9S20635C20[65]),  65,117},
  {&(_ZTV9S20635C20[69]),  69,117},
  {&(_ZTV9S20635C20[74]),  74,117},
  {&(_ZTV9S20635C20[25]),  25,117},
  {&(_ZTV9S20635C20[33]),  33,117},
  {&(_ZTV9S20635C20[80]),  80,117},
  {&(_ZTV9S20635C20[94]),  94,117},
  {&(_ZTV9S20635C20[116]),  116,117},
  {&(_ZTV9S20635C20[102]),  102,117},
  {&(_ZTV9S20635C20[105]),  105,117},
  {&(_ZTV9S20635C20[108]),  108,117},
  {&(_ZTV9S20635C20[43]),  43,117},
  {&(_ZTV9S20635C20[51]),  51,117},
  {&(_ZTV9S20635C20[54]),  54,117},
  {&(_tg__ZTV9S20635C11__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C11__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C11__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C5__9S20635C20[3]),  3,4},
  {&(_tg__ZTV8S20635C9__9S20635C20[3]),  3,4},
  {&(_tg__ZTV8S20635C58S20635C9__A1__9S20635C20[3]),  3,4},
  {&(_tg__ZTV9S20635C10__9S20635C20[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C10__A2__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C10__A2__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C10__A2__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A2__9S20635C20[3]),  3,4},
  {&(_tg__ZTV8S20635C4__9S20635C10__9S20635C20[5]),  5,6},
  {&(_tg__ZTV8S20635C5__9S20635C10__9S20635C20[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C10__9S20635C20[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C10__9S20635C20[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C10__9S20635C20[3]),  3,4},
  {&(_tg__ZTV8S20635C4__A2__9S20635C20[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__A2__9S20635C20[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20635C20[];
extern  VTBL_ENTRY _ZTV9S20635C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C20[];
Class_Descriptor cd_S20635C20 = {  "S20635C20", // class name
  bases_S20635C20, 32,
  &(vtc_S20635C20[0]), // expected_vtbl_contents
  &(vtt_S20635C20[0]), // expected_vtt_contents
  ABISELECT(13344,8812), // object size
  NSPAIRA(_ZTI9S20635C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20635C20),117, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20635C20),65, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20635C1  : virtual S20635C2 , virtual S20635C6 , virtual S20635C17 , virtual S20635C20 {
  int s20635c1f0;
  ~S20635C1(); // tgen
  S20635C1(); // tgen
};
//SIG(1 S20635C1) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ BC3 VBC5{ VBC3 v1 Fc Fi Fc:8} v2 Fs:8 Fp Fc:0 Fc[4] Fi} v3} VBC6{ BC5 VBC7{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC5 BC4 VBC9{ BC5 Fp} VBC10{ VBC4 BC7 BC11{ VBC3 VBC5 VBC7 Fc Fi FU12{ m} Fc Fi} BC5 BC13{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU14{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v10 Fc:1} FC15{ v15 v16 Fi Fc FC3 Fi Fp FC16{ v17 v18 v19 Fp[2] FL Fp[8] Fi Fp Fi FU14[6] Fc} Fi FC17{ BC3 VBC18{ VBC3 v21 Fc Fi Fc:8} v20 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL} FC19{ BC13 FC10[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC8 Fc Fc Fc} Fi} VBC20{ BC21{ VBC3 BC2 BC7 BC11 v11 v12 Fi[4]} VBC19 v13 Fi FC22{ BC23{ VBC3 BC24{ VBC3 BC17 v23} BC25{ BC3 v24 v25 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC26{ VBC3 VBC18 VBC25 Fc Fi FU12 Fc Fi} v26 v27 Fi[4]} BC25 VBC27{ VBC17 BC25 BC26 BC18 BC16 v28 Fp[7] Fc Fc Fi Fp} v22 FL Fp Fi}} VBC28{ VBC11 BC21 BC8 BC10 vd v14 Fi Fc FD Fc Fi FC29{} Fi:4 FC13 Fi FL Fc Fi FC30{ VBC27 VBC31{ BC18 Fp} VBC32{ VBC18 BC17 VBC31 VBC27 BC3 vd v29 Fc:1} VBC33{ BC23 VBC34{ BC16 FC27[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC32 Fc Fc Fc} v30 Fi FC22} VBC16 vd Fi Fi}} Fi}


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

static void Test_S20635C1()
{
  extern Class_Descriptor cd_S20635C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2032,5413)];
    init_test(&cd_S20635C1, buf);
    S20635C1 *dp, &lv = *(dp=new (buf) S20635C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32496,21648), "sizeof(S20635C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20635C1)");
    /*is_ambiguous_... S20635C1::S20635C2 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C2*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C6::S20635C5 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C6*), ABISELECT(160,104), "S20635C1");
    check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C9*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C10*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C10*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C18*)(S20635C17*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C2*)(S20635C18*)(S20635C17*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C18*)(S20635C17*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C11 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C18::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C18*)(S20635C20*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C2::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C2*)(S20635C18*)(S20635C20*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C18*)(S20635C20*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C11*)(S20635C10*)(S20635C20*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C5*)(S20635C10*)(S20635C20*), ABISELECT(160,104), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C2 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C2*), ABISELECT(32,12), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C2 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C2*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C8*)(S20635C6*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C8*)(S20635C6*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C10*), ABISELECT(256,180), "S20635C1");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C2*)(S20635C18*)(S20635C17*), ABISELECT(256,180), "S20635C1");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C18*)(S20635C17*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C11 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C11*), ABISELECT(256,180), "S20635C1");
    check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C2*)(S20635C18*)(S20635C20*), ABISELECT(256,180), "S20635C1");
    check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C18*)(S20635C20*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C8*)(S20635C20*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C4*)(S20635C8*)(S20635C20*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C11*)(S20635C10*)(S20635C20*), ABISELECT(256,180), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C2 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C2*), ABISELECT(16,8), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C2 */ AMB_check_base_class_offset(lv, (S20635C2*), ABISELECT(16,8), "S20635C1");
    /*is_ambiguous_... S20635C6::S20635C5 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C6*), ABISELECT(288,196), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*), ABISELECT(10240,6920), "S20635C1");
    /*is_ambiguous_... S20635C6::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C6*), ABISELECT(10224,6916), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C10*), ABISELECT(10224,6916), "S20635C1");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C18*)(S20635C17*), ABISELECT(10224,6916), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C11 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C11*), ABISELECT(10224,6916), "S20635C1");
    check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C18*)(S20635C20*), ABISELECT(10224,6916), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C11*)(S20635C10*)(S20635C20*), ABISELECT(10224,6916), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C8*)(S20635C6*), ABISELECT(336,216), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C8*)(S20635C6*), ABISELECT(320,212), "S20635C1");
    check_base_class_offset(lv, (S20635C5*)(S20635C9*), ABISELECT(10440,7064), "S20635C1");
    check_base_class_offset(lv, (S20635C9*)(S20635C8*)(S20635C6*), ABISELECT(10440,7064), "S20635C1");
    check_base_class_offset(lv, (S20635C9*)(S20635C8*)(S20635C20*), ABISELECT(10440,7064), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*), ABISELECT(11072,7452), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C10*), ABISELECT(11056,7448), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C10*)(S20635C20*), ABISELECT(11056,7448), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C10*), ABISELECT(10496,7088), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C10*), ABISELECT(10480,7084), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C11*)(S20635C10*), ABISELECT(10696,7232), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C10*), ABISELECT(10720,7252), "S20635C1");
    /*is_ambiguous_... S20635C1::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C13*)(S20635C10*), ABISELECT(10752,7268), "S20635C1");
    check_base_class_offset(lv, (S20635C10*)(S20635C8*)(S20635C6*), ABISELECT(10480,7084), "S20635C1");
    check_base_class_offset(lv, (S20635C10*)(S20635C8*)(S20635C20*), ABISELECT(10480,7084), "S20635C1");
    /*is_ambiguous_... S20635C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C8*)(S20635C6*), ABISELECT(464,308), "S20635C1");
    check_base_class_offset(lv, (S20635C8*)(S20635C6*), ABISELECT(320,212), "S20635C1");
    check_base_class_offset(lv, (S20635C6*), ABISELECT(288,196), "S20635C1");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C2*)(S20635C18*)(S20635C17*), ABISELECT(11216,7548), "S20635C1");
    check_base_class_offset(lv, (S20635C4*)(S20635C2*)(S20635C18*)(S20635C17*), ABISELECT(11200,7544), "S20635C1");
    check_base_class_offset(lv, (S20635C2*)(S20635C18*)(S20635C17*), ABISELECT(11200,7544), "S20635C1");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C18*)(S20635C17*), ABISELECT(11360,7644), "S20635C1");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C18*)(S20635C17*), ABISELECT(11344,7640), "S20635C1");
    check_base_class_offset(lv, (S20635C11*)(S20635C18*)(S20635C17*), ABISELECT(11560,7788), "S20635C1");
    check_base_class_offset(lv, (S20635C18*)(S20635C17*), ABISELECT(11200,7544), "S20635C1");
    check_base_class_offset(lv, (S20635C13*)(S20635C16*), ABISELECT(13328,8972), "S20635C1");
    check_base_class_offset(lv, (S20635C16*)(S20635C17*), ABISELECT(13328,8972), "S20635C1");
    check_base_class_offset(lv, (S20635C17*), ABISELECT(11200,7544), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C11 */ AMB_check_base_class_offset(lv, (S20635C11*)(S20635C20*), ABISELECT(32464,21628), "S20635C1");
    /*is_ambiguous_... S20635C4::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C2*)(S20635C18*)(S20635C20*), ABISELECT(20272,13560), "S20635C1");
    check_base_class_offset(lv, (S20635C4*)(S20635C2*)(S20635C18*)(S20635C20*), ABISELECT(20256,13556), "S20635C1");
    check_base_class_offset(lv, (S20635C2*)(S20635C18*)(S20635C20*), ABISELECT(20256,13556), "S20635C1");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C18*)(S20635C20*), ABISELECT(20416,13656), "S20635C1");
    /*is_ambiguous_... S20635C18::S20635C7 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C18*)(S20635C20*), ABISELECT(20400,13652), "S20635C1");
    check_base_class_offset(lv, (S20635C11*)(S20635C18*)(S20635C20*), ABISELECT(20616,13800), "S20635C1");
    check_base_class_offset(lv, (S20635C18*)(S20635C20*), ABISELECT(20256,13556), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C4*)(S20635C8*)(S20635C20*), ABISELECT(20672,13840), "S20635C1");
    /*is_ambiguous_... S20635C8::S20635C4 */ AMB_check_base_class_offset(lv, (S20635C4*)(S20635C8*)(S20635C20*), ABISELECT(20656,13836), "S20635C1");
    /*is_ambiguous_... S20635C8::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C8*)(S20635C20*), ABISELECT(20800,13932), "S20635C1");
    check_base_class_offset(lv, (S20635C8*)(S20635C20*), ABISELECT(20656,13836), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20636C3*)(S20635C7*)(S20635C10*)(S20635C20*), ABISELECT(20928,14016), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C7*)(S20635C10*)(S20635C20*), ABISELECT(20912,14012), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C11*)(S20635C10*)(S20635C20*), ABISELECT(21128,14160), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C5*)(S20635C10*)(S20635C20*), ABISELECT(21152,14180), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C13*)(S20635C10*)(S20635C20*), ABISELECT(21184,14196), "S20635C1");
    /*is_ambiguous_... S20635C20::S20635C10 */ AMB_check_base_class_offset(lv, (S20635C10*)(S20635C20*), ABISELECT(20912,14012), "S20635C1");
    check_base_class_offset(lv, (S20635C20*), ABISELECT(20256,13556), "S20635C1");
    check_field_offset(lv, s20635c1f0, ABISELECT(8,4), "S20635C1.s20635c1f0");
    test_class_info(&lv, &cd_S20635C1);
    dp->~S20635C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20635C1(Test_S20635C1, "S20635C1", ABISELECT(32496,21648));

#else // __cplusplus

extern void _ZN8S20635C1C1Ev();
extern void _ZN8S20635C1D1Ev();
Name_Map name_map_S20635C1[] = {
  NSPAIR(_ZN8S20635C1C1Ev),
  NSPAIR(_ZN8S20635C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C2;
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C9;
extern VTBL_ENTRY _ZTI8S20635C9[];
extern  VTBL_ENTRY _ZTV8S20635C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C9[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C10;
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C8;
extern VTBL_ENTRY _ZTI8S20635C8[];
extern  VTBL_ENTRY _ZTV8S20635C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C8[];
extern Class_Descriptor cd_S20635C6;
extern VTBL_ENTRY _ZTI8S20635C6[];
extern  VTBL_ENTRY _ZTV8S20635C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C2;
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C18;
extern VTBL_ENTRY _ZTI9S20635C18[];
extern  VTBL_ENTRY _ZTV9S20635C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C18[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C16;
extern VTBL_ENTRY _ZTI9S20635C16[];
extern  VTBL_ENTRY _ZTV9S20635C16[];
extern Class_Descriptor cd_S20635C17;
extern VTBL_ENTRY _ZTI9S20635C17[];
extern  VTBL_ENTRY _ZTV9S20635C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C17[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20635C2;
extern VTBL_ENTRY _ZTI8S20635C2[];
extern  VTBL_ENTRY _ZTV8S20635C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C18;
extern VTBL_ENTRY _ZTI9S20635C18[];
extern  VTBL_ENTRY _ZTV9S20635C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C18[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C4;
extern VTBL_ENTRY _ZTI8S20635C4[];
extern  VTBL_ENTRY _ZTV8S20635C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C4[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C8;
extern VTBL_ENTRY _ZTI8S20635C8[];
extern  VTBL_ENTRY _ZTV8S20635C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20635C7;
extern VTBL_ENTRY _ZTI8S20635C7[];
extern  VTBL_ENTRY _ZTV8S20635C7[];
extern Class_Descriptor cd_S20635C11;
extern VTBL_ENTRY _ZTI9S20635C11[];
extern  VTBL_ENTRY _ZTV9S20635C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C11[];
extern Class_Descriptor cd_S20635C5;
extern VTBL_ENTRY _ZTI8S20635C5[];
extern  VTBL_ENTRY _ZTV8S20635C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C5[];
extern Class_Descriptor cd_S20635C13;
extern VTBL_ENTRY _ZTI9S20635C13[];
extern  VTBL_ENTRY _ZTV9S20635C13[];
extern Class_Descriptor cd_S20635C10;
extern VTBL_ENTRY _ZTI9S20635C10[];
extern  VTBL_ENTRY _ZTV9S20635C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C10[];
extern Class_Descriptor cd_S20635C20;
extern VTBL_ENTRY _ZTI9S20635C20[];
extern  VTBL_ENTRY _ZTV9S20635C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20635C20[];
static Base_Class bases_S20635C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(256,180), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20635C4,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20635C2,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20635C5,    ABISELECT(288,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(10240,6920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20635C7,    ABISELECT(10224,6916), //bcp->offset
    56, //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
    16, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(336,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20635C4,    ABISELECT(320,212), //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
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(10440,7064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20635C9,    ABISELECT(10440,7064), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(11072,7452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C4,    ABISELECT(11056,7448), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10496,7088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C7,    ABISELECT(10480,7084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(10696,7232), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(10720,7252), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(10752,7268), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20635C10,    ABISELECT(10480,7084), //bcp->offset
    67, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(464,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
    21, //immediately_derived
  0, 0},
  {&cd_S20635C8,    ABISELECT(320,212), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20635C6,    ABISELECT(288,196), //bcp->offset
    29, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(11216,7548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C4,    ABISELECT(11200,7544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20635C2,    ABISELECT(11200,7544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(11360,7644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C7,    ABISELECT(11344,7640), //bcp->offset
    121, //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
    21, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(11560,7788), //bcp->offset
    125, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20635C18,    ABISELECT(11200,7544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(13328,8972), //bcp->offset
    130, //bcp->virtual_function_table_offset
    5, //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
    31, //immediately_derived
  0, 0},
  {&cd_S20635C16,    ABISELECT(13328,8972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20635C17,    ABISELECT(11200,7544), //bcp->offset
    103, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20635C11,    ABISELECT(32464,21628), //bcp->offset
    212, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(20272,13560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C4,    ABISELECT(20256,13556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20635C2,    ABISELECT(20256,13556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20416,13656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C7,    ABISELECT(20400,13652), //bcp->offset
    168, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(20616,13800), //bcp->offset
    172, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20635C18,    ABISELECT(20256,13556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20672,13840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C4,    ABISELECT(20656,13836), //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
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20800,13932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C8,    ABISELECT(20656,13836), //bcp->offset
    177, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(20928,14016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20635C7,    ABISELECT(20912,14012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20635C11,    ABISELECT(21128,14160), //bcp->offset
    198, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20635C5,    ABISELECT(21152,14180), //bcp->offset
    203, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20635C13,    ABISELECT(21184,14196), //bcp->offset
    207, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20635C10,    ABISELECT(20912,14012), //bcp->offset
    189, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20635C20,    ABISELECT(20256,13556), //bcp->offset
    138, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20635C1[];
extern void _ZN8S20635C1D1Ev();
extern void _ZN8S20635C1D0Ev();
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S20635C1D1Ev,_ZTv0_n40_N8S20635C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20635C1D1Ev,_ZThn196_N8S20635C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20635C1D0Ev,_ZTv0_n40_N8S20635C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20635C1D0Ev,_ZThn196_N8S20635C1D0Ev)() __attribute__((weak));
extern void _ZN8S20635C42v2Ev();
extern void ABISELECT(_ZTvn32_n80_N8S20635C1D1Ev,_ZTvn16_n40_N8S20635C1D1Ev)();
extern void ABISELECT(_ZTvn32_n80_N8S20635C1D0Ev,_ZTvn16_n40_N8S20635C1D0Ev)();
extern void _ZN8S20635C83v10Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void _ZN9S20635C173v13Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void ABISELECT(_ZTv0_n128_N8S20635C1D1Ev,_ZTv0_n64_N8S20635C1D1Ev)();
extern void ABISELECT(_ZThn20256_N8S20635C1D1Ev,_ZThn13556_N8S20635C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20635C1D0Ev,_ZTv0_n64_N8S20635C1D0Ev)();
extern void ABISELECT(_ZThn20256_N8S20635C1D0Ev,_ZThn13556_N8S20635C1D0Ev)() __attribute__((weak));
extern void _ZN9S20635C203v14Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN8S20635C42v2Ev();
extern void ABISELECT(_ZTvn400_n128_N8S20635C1D1Ev,_ZTvn280_n64_N8S20635C1D1Ev)();
extern void ABISELECT(_ZTvn400_n128_N8S20635C1D0Ev,_ZTvn280_n64_N8S20635C1D0Ev)();
extern void _ZN8S20635C83v10Ev();
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
extern void _ZN8S20635C52v1Ev();
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY vtc_S20635C1[] = {
  ABISELECT(32464,21628),
  ABISELECT(20256,13556),
  ABISELECT(13328,8972),
  ABISELECT(11200,7544),
  ABISELECT(11056,7448),
  ABISELECT(10480,7084),
  ABISELECT(10440,7064),
  ABISELECT(10224,6916),
  ABISELECT(288,196),
  ABISELECT(256,180),
  ABISELECT(160,104),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C1D0Ev,
  0,
  0,
  ABISELECT(144,96),
  ABISELECT(240,172),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(-288,-196),
  0,
  ABISELECT(10768,7252),
  ABISELECT(10192,6888),
  ABISELECT(10152,6868),
  ABISELECT(-32,-16),
  ABISELECT(9936,6720),
  ABISELECT(-128,-92),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20635C1D1Ev,_ZTv0_n40_N8S20635C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20635C1D0Ev,_ZTv0_n40_N8S20635C1D0Ev),
  ABISELECT(9904,6704),
  ABISELECT(10736,7236),
  ABISELECT(10160,6872),
  ABISELECT(10120,6852),
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n80_N8S20635C1D1Ev,_ZTvn16_n40_N8S20635C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n80_N8S20635C1D0Ev,_ZTvn16_n40_N8S20635C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
  0,
  0,
  ABISELECT(-10224,-6916),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(-10440,-7064),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(-10480,-7084),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-10696,-7232),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  ABISELECT(-10560,-7148),
  ABISELECT(-10720,-7252),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-10752,-7268),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-11056,-7448),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-976,-628),
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  ABISELECT(-11200,-7544),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20635C173v13Ev,
  ABISELECT(-11344,-7640),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  ABISELECT(-11560,-7788),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  0,
  0,
  0,
  ABISELECT(-13328,-8972),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  ABISELECT(928,640),
  ABISELECT(928,640),
  ABISELECT(928,640),
  ABISELECT(896,624),
  ABISELECT(656,456),
  ABISELECT(400,280),
  0,
  ABISELECT(-20256,-13556),
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-9200,-6108),
  ABISELECT(-9776,-6472),
  ABISELECT(-9816,-6492),
  ABISELECT(12208,8072),
  ABISELECT(-10032,-6640),
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  ABISELECT(-20256,-13556),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20635C1D1Ev,_ZTv0_n64_N8S20635C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20635C1D0Ev,_ZTv0_n64_N8S20635C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20635C203v14Ev,
  ABISELECT(-20400,-13652),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  ABISELECT(-20616,-13800),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  ABISELECT(-10432,-6920),
  ABISELECT(-9600,-6388),
  ABISELECT(-10176,-6752),
  ABISELECT(-10216,-6772),
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  ABISELECT(-20656,-13836),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn400_n128_N8S20635C1D1Ev,_ZTvn280_n64_N8S20635C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn400_n128_N8S20635C1D0Ev,_ZTvn280_n64_N8S20635C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
  ABISELECT(-10688,-7096),
  ABISELECT(-20752,-13908),
  ABISELECT(-20656,-13832),
  ABISELECT(-9856,-6564),
  ABISELECT(-20912,-14012),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  ABISELECT(-21128,-14160),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  ABISELECT(-20992,-14076),
  ABISELECT(-21152,-14180),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  ABISELECT(-21184,-14196),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
  ABISELECT(-22240,-14712),
  ABISELECT(-32208,-21448),
  ABISELECT(-32304,-21524),
  ABISELECT(-32464,-21628),
  (VTBL_ENTRY)&(_ZTI8S20635C1[0]),
};
extern VTBL_ENTRY _ZTV8S20635C1[];
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C2__8S20635C1[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C2__8S20635C1[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C2__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C2__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C1[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
extern void _ZN8S20635C6D1Ev();
extern void _ZN8S20635C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C6__8S20635C1[] = {
  ABISELECT(10768,7252),
  ABISELECT(10192,6888),
  ABISELECT(10152,6868),
  ABISELECT(-32,-16),
  ABISELECT(9936,6720),
  ABISELECT(-128,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
  (VTBL_ENTRY)&_ZN8S20635C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C6D0Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C58S20635C6__A1__8S20635C1[] = {
  ABISELECT(-128,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C8D1Ev();
extern void _ZN8S20635C8D0Ev();
extern void _ZN8S20635C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C88S20635C6__8S20635C1[] = {
  ABISELECT(9904,6704),
  ABISELECT(10736,7236),
  ABISELECT(10160,6872),
  ABISELECT(10120,6852),
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C88S20635C6__A1__8S20635C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C88S20635C6__A1__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C88S20635C6__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C88S20635C6__8S20635C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(-10120,-6852),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C88S20635C6__8S20635C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(-10160,-6872),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C88S20635C6__8S20635C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-10736,-7236),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C88S20635C6__8S20635C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-10376,-7020),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__8S20635C88S20635C6__8S20635C1[] = {
  0,
  0,
  ABISELECT(-9904,-6704),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__8S20635C88S20635C6__8S20635C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(-10400,-7040),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C10__8S20635C88S20635C6__8S20635C1[] = {
  ABISELECT(-10432,-7056),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__8S20635C6__8S20635C1[] = {
  0,
  0,
  ABISELECT(-9936,-6720),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void ABISELECT(_ZThn32_N8S20635C6D1Ev,_ZThn16_N8S20635C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20635C6D0Ev,_ZThn16_N8S20635C6D0Ev)();
extern void _ZN8S20635C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C8__8S20635C6__8S20635C1[] = {
  ABISELECT(9904,6704),
  ABISELECT(10736,7236),
  ABISELECT(10160,6872),
  ABISELECT(10120,6852),
  ABISELECT(-160,-108),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20635C6D1Ev,_ZThn16_N8S20635C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20635C6D0Ev,_ZThn16_N8S20635C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A1__8S20635C6__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C6__8S20635C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(-10152,-6868),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C6__8S20635C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(-10192,-6888),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C6__8S20635C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-10768,-7252),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C6__8S20635C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-10408,-7036),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A3__8S20635C6__8S20635C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(-10432,-7056),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C10__8S20635C6__8S20635C1[] = {
  ABISELECT(-10464,-7072),
  (VTBL_ENTRY)&(_ZTI8S20635C6[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C1[] = {
  ABISELECT(-10280,-6960),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C9[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C58S20635C9__A2__8S20635C1[] = {
  ABISELECT(-10280,-6960),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C10__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10440,7052),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C10__8S20635C1[] = {
  0,
  0,
  ABISELECT(472,316),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A3__8S20635C1[] = {
  ABISELECT(-10560,-7148),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C10__8S20635C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C10__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10224,6904),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C10__8S20635C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C10__8S20635C1[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C10__8S20635C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A2__8S20635C1[] = {
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C4__A2__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10800,7268),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void _ZN9S20635C173v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C17__8S20635C1[] = {
  ABISELECT(2128,1428),
  ABISELECT(-976,-628),
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20635C173v13Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C189S20635C17__8S20635C1[] = {
  ABISELECT(-976,-628),
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C29S20635C189S20635C17__A1__8S20635C1[] = {
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C29S20635C189S20635C17__A3__8S20635C1[] = {
  ABISELECT(-11040,-7440),
  ABISELECT(-10944,-7364),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C29S20635C189S20635C17__A3__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C29S20635C189S20635C17__A1__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C189S20635C17__A1__8S20635C1[] = {
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C189S20635C17__A1__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(11304,7608),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C189S20635C17__A1__8S20635C1[] = {
  0,
  0,
  ABISELECT(1336,872),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C189S20635C17__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C189S20635C17__8S20635C1[] = {
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C189S20635C17__8S20635C1[] = {
  0,
  0,
  ABISELECT(976,628),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C17__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(10944,7364),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C18__9S20635C17__8S20635C1[] = {
  ABISELECT(-1336,-872),
  ABISELECT(-11304,-7608),
  ABISELECT(-11400,-7684),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C17__8S20635C1[] = {
  0,
  0,
  ABISELECT(976,628),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C16__9S20635C17__8S20635C1[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI9S20635C17[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
extern void _ZN9S20635C20D1Ev();
extern void _ZN9S20635C20D0Ev();
extern void _ZN9S20635C203v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C20__8S20635C1[] = {
  ABISELECT(-9200,-6108),
  ABISELECT(-9776,-6472),
  ABISELECT(-9816,-6492),
  ABISELECT(12208,8072),
  ABISELECT(-10032,-6640),
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
  (VTBL_ENTRY)&_ZN9S20635C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20635C20D0Ev,
  (VTBL_ENTRY)&_ZN9S20635C203v14Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
extern void _ZN9S20635C183v11Ev();
extern void _ZN9S20635C183v12Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C189S20635C20__A1__8S20635C1[] = {
  ABISELECT(-10032,-6640),
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v11Ev,
  (VTBL_ENTRY)&_ZN9S20635C183v12Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C29S20635C189S20635C20__A2__8S20635C1[] = {
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C22v3Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C29S20635C189S20635C20__A4__8S20635C1[] = {
  ABISELECT(-20096,-13452),
  ABISELECT(-20000,-13376),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C29S20635C189S20635C20__A4__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C29S20635C189S20635C20__A2__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI8S20635C2[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C189S20635C20__A3__8S20635C1[] = {
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C189S20635C20__A3__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20360,13620),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C189S20635C20__A3__8S20635C1[] = {
  0,
  0,
  ABISELECT(10392,6884),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C189S20635C20__A1__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C189S20635C20__A1__8S20635C1[] = {
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C189S20635C20__A1__8S20635C1[] = {
  0,
  0,
  ABISELECT(10032,6640),
  (VTBL_ENTRY)&(_ZTI9S20635C18[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C42v2Ev();
extern void _ZN8S20635C8D1Ev();
extern void _ZN8S20635C8D0Ev();
extern void _ZN8S20635C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C89S20635C20__A1__8S20635C1[] = {
  ABISELECT(-10432,-6920),
  ABISELECT(-9600,-6388),
  ABISELECT(-10176,-6752),
  ABISELECT(-10216,-6772),
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20635C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C48S20635C89S20635C20__A5__8S20635C1[] = {
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C48S20635C89S20635C20__A5__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20400,13656),
  (VTBL_ENTRY)&(_ZTI8S20635C4[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__8S20635C89S20635C20__A1__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20400,13656),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__8S20635C89S20635C20__A1__8S20635C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(10216,6772),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__8S20635C89S20635C20__A1__8S20635C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(10176,6752),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A1__8S20635C89S20635C20__A1__8S20635C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(9600,6388),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__8S20635C89S20635C20__A1__8S20635C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(9960,6604),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__8S20635C89S20635C20__A1__8S20635C1[] = {
  0,
  0,
  ABISELECT(10432,6920),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__8S20635C89S20635C20__A1__8S20635C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(9936,6584),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C10__8S20635C89S20635C20__A1__8S20635C1[] = {
  ABISELECT(9904,6568),
  (VTBL_ENTRY)&(_ZTI8S20635C8[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C109S20635C20__A1__8S20635C1[] = {
  ABISELECT(-10688,-7096),
  ABISELECT(-20752,-13908),
  ABISELECT(-20656,-13832),
  ABISELECT(-9856,-6564),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C109S20635C20__A4__8S20635C1[] = {
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C119S20635C109S20635C20__A4__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20872,13980),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C119S20635C109S20635C20__A4__8S20635C1[] = {
  0,
  0,
  ABISELECT(10904,7244),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C109S20635C20__A4__8S20635C1[] = {
  ABISELECT(-20992,-14076),
  0,
  (VTBL_ENTRY)&(_ZTI8S20635C5[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__9S20635C109S20635C20__A1__8S20635C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(9856,6564),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C109S20635C20__A1__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20656,13832),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C109S20635C20__A1__8S20635C1[] = {
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__A1__9S20635C109S20635C20__A1__8S20635C1[] = {
  0,
  0,
  ABISELECT(10688,7096),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__A__9S20635C109S20635C20__A1__8S20635C1[] = {
  ABISELECT(-20992,-14076),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S20635C10[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__9S20635C20__8S20635C1[] = {
  ABISELECT(-22240,-14712),
  ABISELECT(-32208,-21448),
  ABISELECT(-32304,-21524),
  ABISELECT(-12208,-8072),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C20__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(20000,13376),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C20__8S20635C1[] = {
  0,
  0,
  ABISELECT(10032,6640),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C18__A1__9S20635C20__8S20635C1[] = {
  ABISELECT(-10392,-6884),
  ABISELECT(-20360,-13620),
  ABISELECT(-20456,-13696),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
};
extern void _ZN8S20635C42v2Ev();
extern void ABISELECT(_ZThn400_N9S20635C20D1Ev,_ZThn280_N9S20635C20D1Ev)();
extern void ABISELECT(_ZThn400_N9S20635C20D0Ev,_ZThn280_N9S20635C20D0Ev)();
extern void _ZN8S20635C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C8__9S20635C20__8S20635C1[] = {
  ABISELECT(-10432,-6920),
  ABISELECT(-9600,-6388),
  ABISELECT(-10176,-6752),
  ABISELECT(-10216,-6772),
  ABISELECT(-20496,-13732),
  ABISELECT(-20400,-13656),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20635C20D1Ev,_ZThn280_N9S20635C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn400_N9S20635C20D0Ev,_ZThn280_N9S20635C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20635C83v10Ev,
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C9__9S20635C20__8S20635C1[] = {
  0,
  ABISELECT(-10280,-6960),
  ABISELECT(9816,6492),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__9S20635C20__8S20635C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-10320,-6980),
  ABISELECT(-10224,-6904),
  ABISELECT(576,364),
  ABISELECT(9776,6472),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
extern void _ZN8S20635C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C4__A2__9S20635C20__8S20635C1[] = {
  0,
  ABISELECT(-10896,-7344),
  ABISELECT(-10800,-7268),
  ABISELECT(9200,6108),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C42v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__A2__9S20635C20__8S20635C1[] = {
  ABISELECT(-472,-316),
  ABISELECT(-10440,-7052),
  ABISELECT(-10536,-7128),
  ABISELECT(9560,6324),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A2__9S20635C20__8S20635C1[] = {
  ABISELECT(-10560,-7148),
  ABISELECT(9536,6304),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN9S20635C132v6Ev();
extern void _ZN9S20635C132v7Ev();
extern void _ZN9S20635C132v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C139S20635C10__9S20635C20__8S20635C1[] = {
  ABISELECT(9504,6288),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN9S20635C132v6Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v7Ev,
  (VTBL_ENTRY)&_ZN9S20635C132v8Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
extern void _ZN9S20635C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20635C10__A__9S20635C20__8S20635C1[] = {
  ABISELECT(-10688,-7096),
  ABISELECT(-20752,-13908),
  ABISELECT(-20656,-13832),
  ABISELECT(-9856,-6564),
  ABISELECT(-656,-456),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
  (VTBL_ENTRY)&_ZN9S20635C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C119S20635C10__A3__9S20635C20__8S20635C1[] = {
  ABISELECT(-10904,-7244),
  ABISELECT(-20872,-13980),
  ABISELECT(-20968,-14056),
  ABISELECT(-872,-604),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C59S20635C10__A3__9S20635C20__8S20635C1[] = {
  ABISELECT(-20992,-14076),
  ABISELECT(-896,-624),
  (VTBL_ENTRY)&(_ZTI9S20635C20[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20635C11__A2__8S20635C1[] = {
  ABISELECT(-22240,-14712),
  ABISELECT(-32208,-21448),
  ABISELECT(-32304,-21524),
  0,
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
};
extern void _ZN8S20635C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C5__9S20635C11__A2__8S20635C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(32208,21448),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C52v1Ev,
};
extern void _ZN8S20635C72v4Ev();
extern void _ZN8S20635C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20635C7__9S20635C11__A2__8S20635C1[] = {
  0,
  0,
  ABISELECT(22240,14712),
  (VTBL_ENTRY)&(_ZTI9S20635C11[0]),
  (VTBL_ENTRY)&_ZN8S20635C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20635C72v5Ev,
};
static  VTT_ENTRY vtt_S20635C1[] = {
  {&(_ZTV8S20635C1[14]),  14,217},
  {&(_ZTV8S20635C1[22]),  22,217},
  {&(_ZTV8S20635C1[28]),  28,217},
  {&(_ZTV8S20635C1[41]),  41,217},
  {&(_ZTV8S20635C1[60]),  60,217},
  {&(_ZTV8S20635C1[52]),  52,217},
  {&(_ZTV8S20635C1[66]),  66,217},
  {&(_ZTV8S20635C1[80]),  80,217},
  {&(_ZTV8S20635C1[102]),  102,217},
  {&(_ZTV8S20635C1[88]),  88,217},
  {&(_ZTV8S20635C1[91]),  91,217},
  {&(_ZTV8S20635C1[94]),  94,217},
  {&(_ZTV8S20635C1[116]),  116,217},
  {&(_ZTV8S20635C1[123]),  123,217},
  {&(_ZTV8S20635C1[130]),  130,217},
  {&(_ZTV8S20635C1[135]),  135,217},
  {&(_ZTV8S20635C1[161]),  161,217},
  {&(_ZTV8S20635C1[217]),  217,217},
  {&(_ZTV8S20635C1[170]),  170,217},
  {&(_ZTV8S20635C1[177]),  177,217},
  {&(_ZTV8S20635C1[185]),  185,217},
  {&(_ZTV8S20635C1[195]),  195,217},
  {&(_ZTV8S20635C1[203]),  203,217},
  {&(_ZTV8S20635C1[206]),  206,217},
  {&(_ZTV8S20635C1[209]),  209,217},
  {&(_tg__ZTV8S20635C2__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C48S20635C2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C1[3]),  3,4},
  {&(_tg__ZTV8S20635C6__8S20635C1[8]),  8,11},
  {&(_tg__ZTV8S20635C58S20635C6__A1__8S20635C1[3]),  3,4},
  {&(_tg__ZTV8S20635C88S20635C6__8S20635C1[8]),  8,12},
  {&(_tg__ZTV8S20635C48S20635C88S20635C6__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C88S20635C6__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C88S20635C6__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C9__8S20635C88S20635C6__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C10__8S20635C88S20635C6__8S20635C1[13]),  13,16},
  {&(_tg__ZTV8S20635C4__A1__8S20635C88S20635C6__8S20635C1[5]),  5,6},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C88S20635C6__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__8S20635C88S20635C6__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A2__8S20635C88S20635C6__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C139S20635C10__8S20635C88S20635C6__8S20635C1[2]),  2,5},
  {&(_tg__ZTV8S20635C7__8S20635C6__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C8__8S20635C6__8S20635C1[8]),  8,12},
  {&(_tg__ZTV8S20635C5__A1__8S20635C6__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C9__8S20635C6__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C10__8S20635C6__8S20635C1[13]),  13,16},
  {&(_tg__ZTV8S20635C4__A1__8S20635C6__8S20635C1[5]),  5,6},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C6__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C59S20635C10__A3__8S20635C6__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C139S20635C10__8S20635C6__8S20635C1[2]),  2,5},
  {&(_tg__ZTV8S20635C9__8S20635C1[3]),  3,4},
  {&(_tg__ZTV8S20635C58S20635C9__A2__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C10__8S20635C1[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C10__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C10__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A3__8S20635C1[3]),  3,4},
  {&(_tg__ZTV8S20635C4__9S20635C10__8S20635C1[5]),  5,6},
  {&(_tg__ZTV8S20635C5__9S20635C10__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C10__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C10__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C10__8S20635C1[3]),  3,4},
  {&(_tg__ZTV8S20635C4__A2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C4__A2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C17__8S20635C1[6]),  6,11},
  {&(_tg__ZTV9S20635C189S20635C17__8S20635C1[5]),  5,9},
  {&(_tg__ZTV8S20635C29S20635C189S20635C17__A1__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C48S20635C29S20635C189S20635C17__A3__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C29S20635C189S20635C17__A3__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C29S20635C189S20635C17__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C119S20635C189S20635C17__A1__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C189S20635C17__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C189S20635C17__A1__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C5__9S20635C189S20635C17__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C189S20635C17__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C189S20635C17__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C5__9S20635C17__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C119S20635C18__9S20635C17__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C17__8S20635C1[4]),  4,6},
  {&(_tg__ZTV9S20635C139S20635C16__9S20635C17__8S20635C1[5]),  5,8},
  {&(_tg__ZTV9S20635C20__8S20635C1[9]),  9,16},
  {&(_tg__ZTV9S20635C189S20635C20__A1__8S20635C1[5]),  5,9},
  {&(_tg__ZTV8S20635C29S20635C189S20635C20__A2__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C48S20635C29S20635C189S20635C20__A4__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C29S20635C189S20635C20__A4__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C29S20635C189S20635C20__A2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C119S20635C189S20635C20__A3__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C189S20635C20__A3__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C189S20635C20__A3__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C5__9S20635C189S20635C20__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C189S20635C20__A1__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C189S20635C20__A1__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C89S20635C20__A1__8S20635C1[8]),  8,12},
  {&(_tg__ZTV8S20635C48S20635C89S20635C20__A5__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C48S20635C89S20635C20__A5__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C5__8S20635C89S20635C20__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C9__8S20635C89S20635C20__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C10__8S20635C89S20635C20__A1__8S20635C1[13]),  13,16},
  {&(_tg__ZTV8S20635C4__A1__8S20635C89S20635C20__A1__8S20635C1[5]),  5,6},
  {&(_tg__ZTV9S20635C119S20635C10__8S20635C89S20635C20__A1__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__8S20635C89S20635C20__A1__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C10__A2__8S20635C89S20635C20__A1__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C139S20635C10__8S20635C89S20635C20__A1__8S20635C1[2]),  2,5},
  {&(_tg__ZTV9S20635C109S20635C20__A1__8S20635C1[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C109S20635C20__A4__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C119S20635C109S20635C20__A4__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C119S20635C109S20635C20__A4__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C59S20635C109S20635C20__A4__8S20635C1[3]),  3,4},
  {&(_tg__ZTV8S20635C4__9S20635C109S20635C20__A1__8S20635C1[5]),  5,6},
  {&(_tg__ZTV8S20635C5__9S20635C109S20635C20__A1__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C11__9S20635C109S20635C20__A1__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C7__A1__9S20635C109S20635C20__A1__8S20635C1[4]),  4,6},
  {&(_tg__ZTV8S20635C5__A__9S20635C109S20635C20__A1__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C11__9S20635C20__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C20__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C20__8S20635C1[4]),  4,6},
  {&(_tg__ZTV9S20635C119S20635C18__A1__9S20635C20__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C8__9S20635C20__8S20635C1[8]),  8,12},
  {&(_tg__ZTV8S20635C9__9S20635C20__8S20635C1[4]),  4,5},
  {&(_tg__ZTV9S20635C10__9S20635C20__8S20635C1[13]),  13,16},
  {&(_tg__ZTV8S20635C4__A2__9S20635C20__8S20635C1[5]),  5,6},
  {&(_tg__ZTV9S20635C119S20635C10__A2__9S20635C20__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C59S20635C10__A2__9S20635C20__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C139S20635C10__9S20635C20__8S20635C1[2]),  2,5},
  {&(_tg__ZTV9S20635C10__A__9S20635C20__8S20635C1[6]),  6,9},
  {&(_tg__ZTV9S20635C119S20635C10__A3__9S20635C20__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C59S20635C10__A3__9S20635C20__8S20635C1[3]),  3,4},
  {&(_tg__ZTV9S20635C11__A2__8S20635C1[5]),  5,5},
  {&(_tg__ZTV8S20635C5__9S20635C11__A2__8S20635C1[4]),  4,5},
  {&(_tg__ZTV8S20635C7__9S20635C11__A2__8S20635C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20635C1[];
extern  VTBL_ENTRY _ZTV8S20635C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20635C1[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20635C1D0Ev,_ZTv0_n64_N8S20635C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20256_N8S20635C1D0Ev,_ZThn13556_N8S20635C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20635C1D1Ev,_ZTv0_n64_N8S20635C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20256_N8S20635C1D1Ev,_ZThn13556_N8S20635C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20635C1D0Ev,_ZTv0_n40_N8S20635C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20635C1D0Ev,_ZThn196_N8S20635C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20635C1D1Ev,_ZTv0_n40_N8S20635C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20635C1D1Ev,_ZThn196_N8S20635C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20635C1 = {  "S20635C1", // class name
  bases_S20635C1, 52,
  &(vtc_S20635C1[0]), // expected_vtbl_contents
  &(vtt_S20635C1[0]), // expected_vtt_contents
  ABISELECT(32496,21648), // object size
  NSPAIRA(_ZTI8S20635C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20635C1),217, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20635C1),132, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C4  {
  void *s19941c4f0[2];
  __tsi64 s19941c4f1;
  void *s19941c4f2[8];
  int s19941c4f3;
  void *s19941c4f4;
  int s19941c4f5;
  ::S20636C14 s19941c4f6[6];
  char s19941c4f7;
  virtual void  v10(); // _ZN8S19941C43v10Ev
  virtual void  v11(); // _ZN8S19941C43v11Ev
  virtual void  v12(); // _ZN8S19941C43v12Ev
  ~S19941C4(); // tgen
  S19941C4(); // tgen
};
//SIG(-1 S19941C4) C1{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU2{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc}


void  S19941C4 ::v10(){vfunc_called(this, "_ZN8S19941C43v10Ev");}
void  S19941C4 ::v11(){vfunc_called(this, "_ZN8S19941C43v11Ev");}
void  S19941C4 ::v12(){vfunc_called(this, "_ZN8S19941C43v12Ev");}
S19941C4 ::~S19941C4(){ note_dtor("S19941C4", this);} // tgen
S19941C4 ::S19941C4(){ note_ctor("S19941C4", this);} // tgen

static void Test_S19941C4()
{
  extern Class_Descriptor cd_S19941C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,36)];
    init_test(&cd_S19941C4, buf);
    S19941C4 *dp, &lv = *(dp=new (buf) S19941C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,140), "sizeof(S19941C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C4)");
    check_field_offset(lv, s19941c4f0, ABISELECT(8,4), "S19941C4.s19941c4f0");
    check_field_offset(lv, s19941c4f1, ABISELECT(24,12), "S19941C4.s19941c4f1");
    check_field_offset(lv, s19941c4f2, ABISELECT(32,20), "S19941C4.s19941c4f2");
    check_field_offset(lv, s19941c4f3, ABISELECT(96,52), "S19941C4.s19941c4f3");
    check_field_offset(lv, s19941c4f4, ABISELECT(104,56), "S19941C4.s19941c4f4");
    check_field_offset(lv, s19941c4f5, ABISELECT(112,60), "S19941C4.s19941c4f5");
    check_field_offset(lv, s19941c4f6, ABISELECT(128,64), "S19941C4.s19941c4f6");
    check_field_offset(lv, s19941c4f7, ABISELECT(224,136), "S19941C4.s19941c4f7");
    test_class_info(&lv, &cd_S19941C4);
    dp->~S19941C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C4(Test_S19941C4, "S19941C4", ABISELECT(240,140));

#else // __cplusplus

extern void _ZN8S19941C4C1Ev();
extern void _ZN8S19941C4D1Ev();
Name_Map name_map_S19941C4[] = {
  NSPAIR(_ZN8S19941C4C1Ev),
  NSPAIR(_ZN8S19941C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19941C4[];
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY vtc_S19941C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C4[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
Class_Descriptor cd_S19941C4 = {  "S19941C4", // class name
  0,0,//no base classes
  &(vtc_S19941C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,140), // object size
  NSPAIRA(_ZTI8S19941C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19941C4),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  S19941C7  : virtual S20636C3 {
  char s19941c7f0;
  int s19941c7f1;
  char s19941c7f2:8;
  virtual void  v3(); // _ZN8S19941C72v3Ev
  ~S19941C7(); // tgen
  S19941C7(); // tgen
};
//SIG(-1 S19941C7) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8}


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

static void Test_S19941C7()
{
  extern Class_Descriptor cd_S19941C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S19941C7, buf);
    S19941C7 *dp, &lv = *(dp=new (buf) S19941C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19941C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C7)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(32,16), "S19941C7");
    check_field_offset(lv, s19941c7f0, ABISELECT(8,4), "S19941C7.s19941c7f0");
    check_field_offset(lv, s19941c7f1, ABISELECT(12,8), "S19941C7.s19941c7f1");
    set_bf_and_test(lv, s19941c7f2, ABISELECT(16,12), 0, 8, 1, "S19941C7");
    set_bf_and_test(lv, s19941c7f2, ABISELECT(16,12), 0, 8, hide_sll(1LL<<7), "S19941C7");
    test_class_info(&lv, &cd_S19941C7);
    dp->~S19941C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C7(Test_S19941C7, "S19941C7", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19941C7C1Ev();
extern void _ZN8S19941C7D1Ev();
Name_Map name_map_S19941C7[] = {
  NSPAIR(_ZN8S19941C7C1Ev),
  NSPAIR(_ZN8S19941C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S19941C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19941C7[];
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY vtc_S19941C7[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19941C7[];
static  VTT_ENTRY vtt_S19941C7[] = {
  {&(_ZTV8S19941C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
Class_Descriptor cd_S19941C7 = {  "S19941C7", // class name
  bases_S19941C7, 1,
  &(vtc_S19941C7[0]), // expected_vtbl_contents
  &(vtt_S19941C7[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19941C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19941C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19941C7),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  S19941C6  : S20636C3 , virtual S19941C7 {
  short s19941c6f0:8;
  void *s19941c6f1;
  char  :0;
  char s19941c6f3[4];
  int s19941c6f4;
  virtual void  v4(); // _ZN8S19941C62v4Ev
  ~S19941C6(); // tgen
  S19941C6(); // tgen
};
//SIG(-1 S19941C6) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v2 Fc Fi Fc:8} v1 Fs:8 Fp Fc:0 Fc[4] Fi}


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

static void Test_S19941C6()
{
  extern Class_Descriptor cd_S19941C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,48)];
    init_test(&cd_S19941C6, buf);
    S19941C6 *dp, &lv = *(dp=new (buf) S19941C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,188), "sizeof(S19941C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C6)");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S19941C6");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(160,112), "S19941C6");
    check_base_class_offset(lv, (S19941C7*), ABISELECT(136,96), "S19941C6");
    set_bf_and_test(lv, s19941c6f0, ABISELECT(112,80), 0, 8, 1, "S19941C6");
    set_bf_and_test(lv, s19941c6f0, ABISELECT(112,80), 0, 8, hide_sll(1LL<<7), "S19941C6");
    check_field_offset(lv, s19941c6f1, ABISELECT(120,84), "S19941C6.s19941c6f1");
    check_field_offset(lv, s19941c6f3, ABISELECT(128,88), "S19941C6.s19941c6f3");
    check_field_offset(lv, s19941c6f4, ABISELECT(132,92), "S19941C6.s19941c6f4");
    test_class_info(&lv, &cd_S19941C6);
    dp->~S19941C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C6(Test_S19941C6, "S19941C6", ABISELECT(256,188));

#else // __cplusplus

extern void _ZN8S19941C6C1Ev();
extern void _ZN8S19941C6D1Ev();
Name_Map name_map_S19941C6[] = {
  NSPAIR(_ZN8S19941C6C1Ev),
  NSPAIR(_ZN8S19941C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
static Base_Class bases_S19941C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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_S20636C3,    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, 1},
  {&cd_S19941C7,    ABISELECT(136,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19941C6[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY vtc_S19941C6[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19941C6[];
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C6[] = {
  {&(_ZTV8S19941C6[4]),  4,10},
  {&(_ZTV8S19941C6[9]),  9,10},
  {&(_tg__ZTV8S19941C7__8S19941C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
Class_Descriptor cd_S19941C6 = {  "S19941C6", // class name
  bases_S19941C6, 3,
  &(vtc_S19941C6[0]), // expected_vtbl_contents
  &(vtt_S19941C6[0]), // expected_vtt_contents
  ABISELECT(256,188), // object size
  NSPAIRA(_ZTI8S19941C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19941C6),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19941C6),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C2  {
  int s19941c2f0;
  char s19941c2f1;
  ::S20636C3 s19941c2f2;
  int s19941c2f3;
  void *s19941c2f4;
  ::S19941C4 s19941c2f5;
  int s19941c2f6;
  ::S19941C6 s19941c2f7[9];
  __tsi64 s19941c2f8;
  virtual void  v1(); // _ZN8S19941C22v1Ev
  virtual void  v2(); // _ZN8S19941C22v2Ev
  ~S19941C2(); // tgen
  S19941C2(); // tgen
};
//SIG(-1 S19941C2) C1{ v1 v2 Fi Fc FC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} Fi Fp FC3{ v3 v4 v5 Fp[2] FL Fp[8] Fi Fp Fi FU4{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} Fi FC5{ BC2 VBC6{ VBC2 v7 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL}


void  S19941C2 ::v1(){vfunc_called(this, "_ZN8S19941C22v1Ev");}
void  S19941C2 ::v2(){vfunc_called(this, "_ZN8S19941C22v2Ev");}
S19941C2 ::~S19941C2(){ note_dtor("S19941C2", this);} // tgen
S19941C2 ::S19941C2(){ note_ctor("S19941C2", this);} // tgen

static void Test_S19941C2()
{
  extern Class_Descriptor cd_S19941C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(170,486)];
    init_test(&cd_S19941C2, buf);
    S19941C2 *dp, &lv = *(dp=new (buf) S19941C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2704,1940), "sizeof(S19941C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C2)");
    check_field_offset(lv, s19941c2f0, ABISELECT(8,4), "S19941C2.s19941c2f0");
    check_field_offset(lv, s19941c2f1, ABISELECT(12,8), "S19941C2.s19941c2f1");
    check_field_offset(lv, s19941c2f2, ABISELECT(16,12), "S19941C2.s19941c2f2");
    check_field_offset(lv, s19941c2f3, ABISELECT(112,88), "S19941C2.s19941c2f3");
    check_field_offset(lv, s19941c2f4, ABISELECT(120,92), "S19941C2.s19941c2f4");
    check_field_offset(lv, s19941c2f5, ABISELECT(128,96), "S19941C2.s19941c2f5");
    check_field_offset(lv, s19941c2f6, ABISELECT(368,236), "S19941C2.s19941c2f6");
    check_field_offset(lv, s19941c2f7, ABISELECT(384,240), "S19941C2.s19941c2f7");
    check_field_offset(lv, s19941c2f8, ABISELECT(2688,1932), "S19941C2.s19941c2f8");
    test_class_info(&lv, &cd_S19941C2);
    dp->~S19941C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C2(Test_S19941C2, "S19941C2", ABISELECT(2704,1940));

#else // __cplusplus

extern void _ZN8S19941C2C1Ev();
extern void _ZN8S19941C2D1Ev();
Name_Map name_map_S19941C2[] = {
  NSPAIR(_ZN8S19941C2C1Ev),
  NSPAIR(_ZN8S19941C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19941C2[];
extern void _ZN8S19941C22v1Ev();
extern void _ZN8S19941C22v2Ev();
static  VTBL_ENTRY vtc_S19941C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C2[0]),
  (VTBL_ENTRY)&_ZN8S19941C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19941C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19941C2[];
extern  VTBL_ENTRY _ZTV8S19941C2[];
Class_Descriptor cd_S19941C2 = {  "S19941C2", // class name
  0,0,//no base classes
  &(vtc_S19941C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2704,1940), // object size
  NSPAIRA(_ZTI8S19941C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19941C2),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  S19941C8  : S19941C7 {
  void *s19941c8f0;
  ~S19941C8(); // tgen
  S19941C8(); // tgen
};
//SIG(-1 S19941C8) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} Fp}


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

static void Test_S19941C8()
{
  extern Class_Descriptor cd_S19941C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,25)];
    init_test(&cd_S19941C8, buf);
    S19941C8 *dp, &lv = *(dp=new (buf) S19941C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S19941C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C8)");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(32,20), "S19941C8");
    check_base_class_offset(lv, (S19941C7*), 0, "S19941C8");
    check_field_offset(lv, s19941c8f0, ABISELECT(24,16), "S19941C8.s19941c8f0");
    test_class_info(&lv, &cd_S19941C8);
    dp->~S19941C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C8(Test_S19941C8, "S19941C8", ABISELECT(128,96));

#else // __cplusplus

extern void _ZN8S19941C8C1Ev();
extern void _ZN8S19941C8D1Ev();
Name_Map name_map_S19941C8[] = {
  NSPAIR(_ZN8S19941C8C1Ev),
  NSPAIR(_ZN8S19941C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
static Base_Class bases_S19941C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19941C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19941C8[];
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY vtc_S19941C8[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C8[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19941C8[];
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C8[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C8[] = {
  {&(_ZTV8S19941C8[3]),  3,4},
  {&(_tg__ZTV8S19941C7__8S19941C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19941C8[];
extern  VTBL_ENTRY _ZTV8S19941C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C8[];
Class_Descriptor cd_S19941C8 = {  "S19941C8", // class name
  bases_S19941C8, 2,
  &(vtc_S19941C8[0]), // expected_vtbl_contents
  &(vtt_S19941C8[0]), // expected_vtt_contents
  ABISELECT(128,96), // object size
  NSPAIRA(_ZTI8S19941C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19941C8),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19941C8),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  S19941C11  : virtual S20636C3 , S19941C6 {
  virtual void  v5(); // _ZN9S19941C112v5Ev
  ~S19941C11(); // tgen
  S19941C11(); // tgen
};
//SIG(-1 S19941C11) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ BC2 VBC4{ VBC2 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v1}


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

static void Test_S19941C11()
{
  extern Class_Descriptor cd_S19941C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,48)];
    init_test(&cd_S19941C11, buf);
    S19941C11 *dp, &lv = *(dp=new (buf) S19941C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,188), "sizeof(S19941C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C11)");
    /*is_ambiguous_... S19941C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S19941C11");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(144,96), "S19941C11");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(16,4), "S19941C11");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(240,172), "S19941C11");
    check_base_class_offset(lv, (S19941C6*), 0, "S19941C11");
    test_class_info(&lv, &cd_S19941C11);
    dp->~S19941C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C11(Test_S19941C11, "S19941C11", ABISELECT(272,188));

#else // __cplusplus

extern void _ZN9S19941C11C1Ev();
extern void _ZN9S19941C11D1Ev();
Name_Map name_map_S19941C11[] = {
  NSPAIR(_ZN9S19941C11C1Ev),
  NSPAIR(_ZN9S19941C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
static Base_Class bases_S19941C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(240,172), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    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 _ZTI9S19941C11[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY vtc_S19941C11[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern VTBL_ENTRY _ZTV9S19941C11[];
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C11[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__9S19941C11[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C11[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C11[] = {
  {&(_ZTV9S19941C11[4]),  4,11},
  {&(_tg__ZTV8S19941C6__9S19941C11[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__9S19941C11[4]),  4,5},
  {&(_ZTV9S19941C11[10]),  10,11},
  {&(_tg__ZTV8S19941C7__9S19941C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
Class_Descriptor cd_S19941C11 = {  "S19941C11", // class name
  bases_S19941C11, 4,
  &(vtc_S19941C11[0]), // expected_vtbl_contents
  &(vtt_S19941C11[0]), // expected_vtt_contents
  ABISELECT(272,188), // object size
  NSPAIRA(_ZTI9S19941C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19941C11),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C12  : S20636C3 {
  int s19941c12f0;
  int s19941c12f1;
  int s19941c12f2;
  char s19941c12f3;
  char s19941c12f4;
  char s19941c12f5[5];
  char s19941c12f6;
  char s19941c12f7[7];
  char s19941c12f8:8;
  void *s19941c12f9[7];
  int s19941c12f10;
  __tsi64 s19941c12f11;
  virtual void  v6(); // _ZN9S19941C122v6Ev
  virtual void  v7(); // _ZN9S19941C122v7Ev
  ~S19941C12(); // tgen
  S19941C12(); // tgen
};
//SIG(-1 S19941C12) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 v2 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL}


void  S19941C12 ::v6(){vfunc_called(this, "_ZN9S19941C122v6Ev");}
void  S19941C12 ::v7(){vfunc_called(this, "_ZN9S19941C122v7Ev");}
S19941C12 ::~S19941C12(){ note_dtor("S19941C12", this);} // tgen
S19941C12 ::S19941C12(){ note_ctor("S19941C12", this);} // tgen

static void Test_S19941C12()
{
  extern Class_Descriptor cd_S19941C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,38)];
    init_test(&cd_S19941C12, buf);
    S19941C12 *dp, &lv = *(dp=new (buf) S19941C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S19941C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C12)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S19941C12");
    check_field_offset(lv, s19941c12f0, ABISELECT(112,80), "S19941C12.s19941c12f0");
    check_field_offset(lv, s19941c12f1, ABISELECT(116,84), "S19941C12.s19941c12f1");
    check_field_offset(lv, s19941c12f2, ABISELECT(120,88), "S19941C12.s19941c12f2");
    check_field_offset(lv, s19941c12f3, ABISELECT(124,92), "S19941C12.s19941c12f3");
    check_field_offset(lv, s19941c12f4, ABISELECT(125,93), "S19941C12.s19941c12f4");
    check_field_offset(lv, s19941c12f5, ABISELECT(126,94), "S19941C12.s19941c12f5");
    check_field_offset(lv, s19941c12f6, ABISELECT(131,99), "S19941C12.s19941c12f6");
    check_field_offset(lv, s19941c12f7, ABISELECT(132,100), "S19941C12.s19941c12f7");
    set_bf_and_test(lv, s19941c12f8, ABISELECT(139,107), 0, 8, 1, "S19941C12");
    set_bf_and_test(lv, s19941c12f8, ABISELECT(139,107), 0, 8, hide_sll(1LL<<7), "S19941C12");
    check_field_offset(lv, s19941c12f9, ABISELECT(144,108), "S19941C12.s19941c12f9");
    check_field_offset(lv, s19941c12f10, ABISELECT(200,136), "S19941C12.s19941c12f10");
    check_field_offset(lv, s19941c12f11, ABISELECT(208,140), "S19941C12.s19941c12f11");
    test_class_info(&lv, &cd_S19941C12);
    dp->~S19941C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C12(Test_S19941C12, "S19941C12", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN9S19941C12C1Ev();
extern void _ZN9S19941C12D1Ev();
Name_Map name_map_S19941C12[] = {
  NSPAIR(_ZN9S19941C12C1Ev),
  NSPAIR(_ZN9S19941C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S19941C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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 _ZTI9S19941C12[];
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY vtc_S19941C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C12[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
Class_Descriptor cd_S19941C12 = {  "S19941C12", // class name
  bases_S19941C12, 1,
  &(vtc_S19941C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI9S19941C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19941C12),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  S19941C13  : virtual S20636C3 , virtual S19941C7 , virtual S19941C12 {
  char s19941c13f0;
  int s19941c13f1;
  ::S20636C12_nt s19941c13f2;
  char s19941c13f3;
  int s19941c13f4;
  ~S19941C13(); // tgen
  S19941C13(); // tgen
};
//SIG(-1 S19941C13) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v1 Fc Fi Fc:8} VBC4{ BC2 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} Fc Fi FU5{ m} Fc Fi}


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

static void Test_S19941C13()
{
  extern Class_Descriptor cd_S19941C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,66)];
    init_test(&cd_S19941C13, buf);
    S19941C13 *dp, &lv = *(dp=new (buf) S19941C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,260), "sizeof(S19941C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C13)");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(32,20), "S19941C13");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(32,20), "S19941C13");
    check_base_class_offset(lv, (S19941C7*), ABISELECT(128,96), "S19941C13");
    check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(176,116), "S19941C13");
    check_base_class_offset(lv, (S19941C12*), ABISELECT(160,112), "S19941C13");
    check_field_offset(lv, s19941c13f0, ABISELECT(8,4), "S19941C13.s19941c13f0");
    check_field_offset(lv, s19941c13f1, ABISELECT(12,8), "S19941C13.s19941c13f1");
    check_field_offset(lv, s19941c13f2, ABISELECT(16,12), "S19941C13.s19941c13f2");
    check_field_offset(lv, s19941c13f3, ABISELECT(17,13), "S19941C13.s19941c13f3");
    check_field_offset(lv, s19941c13f4, ABISELECT(20,16), "S19941C13.s19941c13f4");
    test_class_info(&lv, &cd_S19941C13);
    dp->~S19941C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C13(Test_S19941C13, "S19941C13", ABISELECT(384,260));

#else // __cplusplus

extern void _ZN9S19941C13C1Ev();
extern void _ZN9S19941C13D1Ev();
Name_Map name_map_S19941C13[] = {
  NSPAIR(_ZN9S19941C13C1Ev),
  NSPAIR(_ZN9S19941C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
static Base_Class bases_S19941C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19941C7,    ABISELECT(128,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(160,112), //bcp->offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C13[];
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY vtc_S19941C13[] = {
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19941C13[];
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C13[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C13[] = {
  {&(_ZTV9S19941C13[5]),  5,16},
  {&(_ZTV9S19941C13[9]),  9,16},
  {&(_ZTV9S19941C13[14]),  14,16},
  {&(_tg__ZTV8S19941C7__9S19941C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
Class_Descriptor cd_S19941C13 = {  "S19941C13", // class name
  bases_S19941C13, 4,
  &(vtc_S19941C13[0]), // expected_vtbl_contents
  &(vtt_S19941C13[0]), // expected_vtt_contents
  ABISELECT(384,260), // object size
  NSPAIRA(_ZTI9S19941C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19941C13),16, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C13),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  S19941C10  : virtual S20636C3 , S19941C11 , S19941C12 , S19941C13 {
  int s19941c10f0[4];
  virtual void  v8(); // _ZN9S19941C102v8Ev
  virtual void  v9(); // _ZN9S19941C102v9Ev
  ~S19941C10(); // tgen
  S19941C10(); // tgen
};
//SIG(-1 S19941C10) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ VBC2 BC4{ BC2 VBC5{ VBC2 v3 Fc Fi Fc:8} v4 Fs:8 Fp Fc:0 Fc[4] Fi} v5} BC6{ BC2 v6 v7 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC2 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} v1 v2 Fi[4]}


void  S19941C10 ::v8(){vfunc_called(this, "_ZN9S19941C102v8Ev");}
void  S19941C10 ::v9(){vfunc_called(this, "_ZN9S19941C102v9Ev");}
S19941C10 ::~S19941C10(){ note_dtor("S19941C10", this);} // tgen
S19941C10 ::S19941C10(){ note_ctor("S19941C10", this);} // tgen

static void Test_S19941C10()
{
  extern Class_Descriptor cd_S19941C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,131)];
    init_test(&cd_S19941C10, buf);
    S19941C10 *dp, &lv = *(dp=new (buf) S19941C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,520), "sizeof(S19941C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C10)");
    /*is_ambiguous_... S19941C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(400,280), "S19941C10");
    /*is_ambiguous_... S19941C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*), ABISELECT(400,280), "S19941C10");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(400,280), "S19941C10");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*), ABISELECT(400,280), "S19941C10");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*), ABISELECT(16,4), "S19941C10");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*), ABISELECT(496,356), "S19941C10");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*), ABISELECT(496,356), "S19941C10");
    check_base_class_offset(lv, (S19941C6*)(S19941C11*), 0, "S19941C10");
    check_base_class_offset(lv, (S19941C11*), 0, "S19941C10");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(160,100), "S19941C10");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*), ABISELECT(144,96), "S19941C10");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(544,376), "S19941C10");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*), ABISELECT(528,372), "S19941C10");
    check_base_class_offset(lv, (S19941C13*), ABISELECT(360,244), "S19941C10");
    check_field_offset(lv, s19941c10f0, ABISELECT(384,264), "S19941C10.s19941c10f0");
    test_class_info(&lv, &cd_S19941C10);
    dp->~S19941C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C10(Test_S19941C10, "S19941C10", ABISELECT(752,520));

#else // __cplusplus

extern void _ZN9S19941C10C1Ev();
extern void _ZN9S19941C10D1Ev();
Name_Map name_map_S19941C10[] = {
  NSPAIR(_ZN9S19941C10C1Ev),
  NSPAIR(_ZN9S19941C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
static Base_Class bases_S19941C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(400,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(496,356), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19941C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(144,96), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(544,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(528,372), //bcp->offset
    23, //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
    9, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(360,244), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C10[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY vtc_S19941C10[] = {
  ABISELECT(528,372),
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-528,-372),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19941C10[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C11__9S19941C10[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C11__9S19941C10[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C11__9S19941C10[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C11__9S19941C10[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C10[] = {
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C13__9S19941C10[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C13__9S19941C10[] = {
  0,
  0,
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C10[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C10[] = {
  {&(_ZTV9S19941C10[5]),  5,29},
  {&(_tg__ZTV9S19941C11__9S19941C10[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C11__9S19941C10[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C11__9S19941C10[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C11__9S19941C10[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C10[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C13__9S19941C10[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C13__9S19941C10[4]),  4,6},
  {&(_ZTV9S19941C10[22]),  22,29},
  {&(_ZTV9S19941C10[18]),  18,29},
  {&(_ZTV9S19941C10[27]),  27,29},
  {&(_tg__ZTV8S19941C7__9S19941C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
Class_Descriptor cd_S19941C10 = {  "S19941C10", // class name
  bases_S19941C10, 10,
  &(vtc_S19941C10[0]), // expected_vtbl_contents
  &(vtt_S19941C10[0]), // expected_vtt_contents
  ABISELECT(752,520), // object size
  NSPAIRA(_ZTI9S19941C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19941C10),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C10),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C16  : virtual S19941C6 , S19941C12 , S19941C13 , S19941C7 , S19941C4 {
  void *s19941c16f0[7];
  char s19941c16f1;
  char s19941c16f2;
  int s19941c16f3;
  void *s19941c16f4;
  virtual void  v14(); // _ZN9S19941C163v14Ev
  ~S19941C16(); // tgen
  S19941C16(); // tgen
};
//SIG(-1 S19941C16) C1{ VBC2{ BC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC4{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} BC5{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC6{ VBC3 VBC4 VBC5 Fc Fi FU7{ m} Fc Fi} BC4 BC8{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU9{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v1 Fp[7] Fc Fc Fi Fp}


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

static void Test_S19941C16()
{
  extern Class_Descriptor cd_S19941C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(67,176)];
    init_test(&cd_S19941C16, buf);
    S19941C16 *dp, &lv = *(dp=new (buf) S19941C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,700), "sizeof(S19941C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C16)");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(592,368), "S19941C16");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(736,476), "S19941C16");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*), ABISELECT(736,476), "S19941C16");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(736,476), "S19941C16");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(712,460), "S19941C16");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*), ABISELECT(712,460), "S19941C16");
    check_base_class_offset(lv, (S19941C6*), ABISELECT(576,364), "S19941C16");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(16,4), "S19941C16");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*), 0, "S19941C16");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(848,556), "S19941C16");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*), ABISELECT(832,552), "S19941C16");
    check_base_class_offset(lv, (S19941C13*), ABISELECT(216,148), "S19941C16");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*), ABISELECT(240,168), "S19941C16");
    check_base_class_offset(lv, (S19941C4*), ABISELECT(272,184), "S19941C16");
    check_field_offset(lv, s19941c16f0, ABISELECT(504,324), "S19941C16.s19941c16f0");
    check_field_offset(lv, s19941c16f1, ABISELECT(560,352), "S19941C16.s19941c16f1");
    check_field_offset(lv, s19941c16f2, ABISELECT(561,353), "S19941C16.s19941c16f2");
    check_field_offset(lv, s19941c16f3, ABISELECT(564,356), "S19941C16.s19941c16f3");
    check_field_offset(lv, s19941c16f4, ABISELECT(568,360), "S19941C16.s19941c16f4");
    test_class_info(&lv, &cd_S19941C16);
    dp->~S19941C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C16(Test_S19941C16, "S19941C16", ABISELECT(1056,700));

#else // __cplusplus

extern void _ZN9S19941C16C1Ev();
extern void _ZN9S19941C16D1Ev();
Name_Map name_map_S19941C16[] = {
  NSPAIR(_ZN9S19941C16C1Ev),
  NSPAIR(_ZN9S19941C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
static Base_Class bases_S19941C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(592,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(736,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19941C7,    ABISELECT(712,460), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    ABISELECT(576,364), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19941C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20636C3,    ABISELECT(848,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
    7, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(832,552), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(216,148), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19941C7,    ABISELECT(240,168), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19941C4,    ABISELECT(272,184), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C16[];
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY vtc_S19941C16[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19941C16[];
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C13__9S19941C16[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C13__9S19941C16[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__9S19941C16[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C16[] = {
  {&(_ZTV9S19941C16[6]),  6,40},
  {&(_tg__ZTV9S19941C13__9S19941C16[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C13__9S19941C16[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C13__9S19941C16[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16[3]),  3,4},
  {&(_ZTV9S19941C16[28]),  28,40},
  {&(_ZTV9S19941C16[33]),  33,40},
  {&(_ZTV9S19941C16[14]),  14,40},
  {&(_ZTV9S19941C16[38]),  38,40},
  {&(_ZTV9S19941C16[17]),  17,40},
  {&(_tg__ZTV8S19941C6__9S19941C16[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__9S19941C16[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
Class_Descriptor cd_S19941C16 = {  "S19941C16", // class name
  bases_S19941C16, 11,
  &(vtc_S19941C16[0]), // expected_vtbl_contents
  &(vtt_S19941C16[0]), // expected_vtt_contents
  ABISELECT(1056,700), // object size
  NSPAIRA(_ZTI9S19941C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19941C16),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C16),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C17  : virtual S19941C7 , S19941C6 , virtual S19941C8 , virtual S19941C16 , S20636C3 {
  unsigned char s19941c17f0:1;
  virtual  ~S19941C17(); // _ZN9S19941C17D2Ev
  virtual void  v15(); // _ZN9S19941C173v15Ev
  S19941C17(); // tgen
};
//SIG(-1 S19941C17) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v2 Fc Fi Fc:8} BC4{ BC3 VBC2 v3 Fs:8 Fp Fc:0 Fc[4] Fi} VBC5{ BC2 Fp} VBC6{ VBC4 BC7{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC2 VBC7 Fc Fi FU9{ m} Fc Fi} BC2 BC10{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU11{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v1 Fc:1}


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

static void Test_S19941C17()
{
  extern Class_Descriptor cd_S19941C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(85,225)];
    init_test(&cd_S19941C17, buf);
    S19941C17 *dp, &lv = *(dp=new (buf) S19941C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,896), "sizeof(S19941C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C17)");
    /*is_ambiguous_... S19941C17::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(272,192), "S19941C17");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C8*), ABISELECT(272,192), "S19941C17");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C16*), ABISELECT(272,192), "S19941C17");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C16*), ABISELECT(272,192), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*), ABISELECT(248,176), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(248,176), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(248,176), "S19941C17");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C16*), ABISELECT(248,176), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(16,4), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C6*), 0, "S19941C17");
    check_base_class_offset(lv, (S19941C7*)(S19941C8*), ABISELECT(368,268), "S19941C17");
    check_base_class_offset(lv, (S19941C8*), ABISELECT(368,268), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(992,656), "S19941C17");
    check_base_class_offset(lv, (S19941C6*)(S19941C16*), ABISELECT(976,652), "S19941C17");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C16*), ABISELECT(416,292), "S19941C17");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C16*), ABISELECT(400,288), "S19941C17");
    /*is_ambiguous_... S19941C17::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(1136,752), "S19941C17");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C16*), ABISELECT(1120,748), "S19941C17");
    check_base_class_offset(lv, (S19941C13*)(S19941C16*), ABISELECT(616,436), "S19941C17");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C16*), ABISELECT(640,456), "S19941C17");
    check_base_class_offset(lv, (S19941C4*)(S19941C16*), ABISELECT(672,472), "S19941C17");
    check_base_class_offset(lv, (S19941C16*), ABISELECT(400,288), "S19941C17");
    /*is_ambiguous_... S19941C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S19941C17");
    set_bf_and_test(lv, s19941c17f0, ABISELECT(240,172), 0, 1, 1, "S19941C17");
    test_class_info(&lv, &cd_S19941C17);
    dp->~S19941C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C17(Test_S19941C17, "S19941C17", ABISELECT(1344,896));

#else // __cplusplus

extern void _ZN9S19941C17C1Ev();
extern void _ZN9S19941C17D2Ev();
Name_Map name_map_S19941C17[] = {
  NSPAIR(_ZN9S19941C17C1Ev),
  NSPAIR(_ZN9S19941C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C8;
extern VTBL_ENTRY _ZTI8S19941C8[];
extern  VTBL_ENTRY _ZTV8S19941C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C16;
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S19941C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(272,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
    1, //immediately_derived
  0, 1},
  {&cd_S19941C7,    ABISELECT(248,176), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19941C6,    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_S19941C7,    ABISELECT(368,268), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19941C8,    ABISELECT(368,268), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(992,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(976,652), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(416,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(400,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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1136,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
    11, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(1120,748), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    12, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(616,436), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //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
    15, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(640,456), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(672,472), //bcp->offset
    47, //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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19941C16,    ABISELECT(400,288), //bcp->offset
    22, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C17[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C17D1Ev();
extern void _ZN9S19941C17D0Ev();
extern void _ZN9S19941C173v15Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY vtc_S19941C17[] = {
  ABISELECT(1120,748),
  ABISELECT(976,652),
  ABISELECT(400,288),
  ABISELECT(368,268),
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-616,-436),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  ABISELECT(-368,-264),
  ABISELECT(-640,-456),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-672,-472),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-976,-652),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  0,
  0,
  ABISELECT(-1120,-748),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19941C17[];
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A__9S19941C17[] = {
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__A__9S19941C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C17[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C17[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C8[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C78S19941C8__A1__9S19941C17[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C17[] = {
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C17[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(368,260),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C17[] = {
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A2__9S19941C17[] = {
  ABISELECT(-368,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16__9S19941C17[] = {
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16__9S19941C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(152,112),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16__9S19941C17[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C16__9S19941C17[] = {
  0,
  0,
  ABISELECT(-720,-460),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16__9S19941C17[] = {
  ABISELECT(-368,-264),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C17[] = {
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__A1__9S19941C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(728,476),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C17[] = {
  {&(_ZTV9S19941C17[8]),  8,64},
  {&(_tg__ZTV8S19941C6__A__9S19941C17[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__A__9S19941C17[4]),  4,5},
  {&(_ZTV9S19941C17[16]),  16,64},
  {&(_ZTV9S19941C17[21]),  21,64},
  {&(_ZTV9S19941C17[35]),  35,64},
  {&(_ZTV9S19941C17[57]),  57,64},
  {&(_ZTV9S19941C17[43]),  43,64},
  {&(_ZTV9S19941C17[62]),  62,64},
  {&(_ZTV9S19941C17[46]),  46,64},
  {&(_ZTV9S19941C17[49]),  49,64},
  {&(_tg__ZTV8S19941C7__9S19941C17[3]),  3,4},
  {&(_tg__ZTV8S19941C8__9S19941C17[3]),  3,4},
  {&(_tg__ZTV8S19941C78S19941C8__A1__9S19941C17[3]),  3,4},
  {&(_tg__ZTV9S19941C16__9S19941C17[6]),  6,9},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C17[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C17[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C17[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A2__9S19941C17[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C16__9S19941C17[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C16__9S19941C17[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C16__9S19941C17[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C16__9S19941C17[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16__9S19941C17[3]),  3,4},
  {&(_tg__ZTV8S19941C6__A1__9S19941C17[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__A1__9S19941C17[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19941C17[];
extern  VTBL_ENTRY _ZTV9S19941C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C17[];
Class_Descriptor cd_S19941C17 = {  "S19941C17", // class name
  bases_S19941C17, 17,
  &(vtc_S19941C17[0]), // expected_vtbl_contents
  &(vtt_S19941C17[0]), // expected_vtt_contents
  ABISELECT(1344,896), // object size
  NSPAIRA(_ZTI9S19941C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19941C17),64, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C17),26, //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  S19941C15  : S19941C4 {
  ::S19941C16 s19941c15f0[5];
  int s19941c15f1;
  char s19941c15f2;
  void *s19941c15f3;
  char s19941c15f4;
  int s19941c15f5:5;
  int s19941c15f6[6];
  int s19941c15f7;
  ::S19941C17 s19941c15f8;
  char s19941c15f9;
  char s19941c15f10;
  char s19941c15f11;
  ~S19941C15(); // tgen
  S19941C15(); // tgen
};
//SIG(-1 S19941C15) C1{ BC2{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU3{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC4{ VBC5{ BC6{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC7{ VBC6 v5 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi} BC8{ BC6 v7 v8 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC9{ VBC6 VBC7 VBC8 Fc Fi FU10{ m} Fc Fi} BC7 BC2 v4 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC11{ VBC7 BC5 VBC12{ BC7 Fp} VBC4 BC6 vd v9 Fc:1} Fc Fc Fc}


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

static void Test_S19941C15()
{
  extern Class_Descriptor cd_S19941C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(434,1147)];
    init_test(&cd_S19941C15, buf);
    S19941C15 *dp, &lv = *(dp=new (buf) S19941C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6928,4584), "sizeof(S19941C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C15)");
    check_base_class_offset(lv, (S19941C4*), 0, "S19941C15");
    check_field_offset(lv, s19941c15f0, ABISELECT(240,140), "S19941C15.s19941c15f0");
    check_field_offset(lv, s19941c15f1, ABISELECT(5520,3640), "S19941C15.s19941c15f1");
    check_field_offset(lv, s19941c15f2, ABISELECT(5524,3644), "S19941C15.s19941c15f2");
    check_field_offset(lv, s19941c15f3, ABISELECT(5528,3648), "S19941C15.s19941c15f3");
    check_field_offset(lv, s19941c15f4, ABISELECT(5536,3652), "S19941C15.s19941c15f4");
    set_bf_and_test(lv, s19941c15f5, ABISELECT(5537,3653), 0, 5, 1, "S19941C15");
    set_bf_and_test(lv, s19941c15f5, ABISELECT(5537,3653), 0, 5, hide_sll(1LL<<4), "S19941C15");
    check_field_offset(lv, s19941c15f6, ABISELECT(5540,3656), "S19941C15.s19941c15f6");
    check_field_offset(lv, s19941c15f7, ABISELECT(5564,3680), "S19941C15.s19941c15f7");
    check_field_offset(lv, s19941c15f8, ABISELECT(5568,3684), "S19941C15.s19941c15f8");
    check_field_offset(lv, s19941c15f9, ABISELECT(6912,4580), "S19941C15.s19941c15f9");
    check_field_offset(lv, s19941c15f10, ABISELECT(6913,4581), "S19941C15.s19941c15f10");
    check_field_offset(lv, s19941c15f11, ABISELECT(6914,4582), "S19941C15.s19941c15f11");
    test_class_info(&lv, &cd_S19941C15);
    dp->~S19941C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C15(Test_S19941C15, "S19941C15", ABISELECT(6928,4584));

#else // __cplusplus

extern void _ZN9S19941C15C1Ev();
extern void _ZN9S19941C15D1Ev();
Name_Map name_map_S19941C15[] = {
  NSPAIR(_ZN9S19941C15C1Ev),
  NSPAIR(_ZN9S19941C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
static Base_Class bases_S19941C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19941C4,    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 _ZTI9S19941C15[];
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY vtc_S19941C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C15[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern VTBL_ENTRY _ZTI9S19941C15[];
extern  VTBL_ENTRY _ZTV9S19941C15[];
Class_Descriptor cd_S19941C15 = {  "S19941C15", // class name
  bases_S19941C15, 1,
  &(vtc_S19941C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6928,4584), // object size
  NSPAIRA(_ZTI9S19941C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19941C15),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  S19941C18  : S19941C10 , S19941C12 , virtual S19941C16 {
  __tsi64 s19941c18f0;
  void *s19941c18f1;
  int s19941c18f2;
  virtual void  v17(); // _ZN9S19941C183v17Ev
  ~S19941C18(); // tgen
  S19941C18(); // tgen
};
//SIG(-1 S19941C18) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ VBC3 BC5{ BC3 VBC6{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v4} BC7{ BC3 v5 v6 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} v7 v8 Fi[4]} BC7 VBC10{ VBC5 BC7 BC8 BC6 BC11{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v12 Fp[7] Fc Fc Fi Fp} v1 FL Fp Fi}


void  S19941C18 ::v17(){vfunc_called(this, "_ZN9S19941C183v17Ev");}
S19941C18 ::~S19941C18(){ note_dtor("S19941C18", this);} // tgen
S19941C18 ::S19941C18(){ note_ctor("S19941C18", this);} // tgen

static void Test_S19941C18()
{
  extern Class_Descriptor cd_S19941C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(108,287)];
    init_test(&cd_S19941C18, buf);
    S19941C18 *dp, &lv = *(dp=new (buf) S19941C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1712,1144), "sizeof(S19941C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C18)");
    /*is_ambiguous_... S19941C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C10*), ABISELECT(640,444), "S19941C18");
    /*is_ambiguous_... S19941C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*)(S19941C10*), ABISELECT(640,444), "S19941C18");
    /*is_ambiguous_... S19941C18::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(640,444), "S19941C18");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C10*), ABISELECT(640,444), "S19941C18");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C16*), ABISELECT(640,444), "S19941C18");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C16*), ABISELECT(640,444), "S19941C18");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*)(S19941C10*), ABISELECT(16,4), "S19941C18");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*)(S19941C10*), ABISELECT(736,520), "S19941C18");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C10*), ABISELECT(736,520), "S19941C18");
    /*is_ambiguous_... S19941C18::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(736,520), "S19941C18");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C16*), ABISELECT(736,520), "S19941C18");
    check_base_class_offset(lv, (S19941C6*)(S19941C11*)(S19941C10*), 0, "S19941C18");
    check_base_class_offset(lv, (S19941C11*)(S19941C10*), 0, "S19941C18");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C10*), ABISELECT(160,100), "S19941C18");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C10*), ABISELECT(144,96), "S19941C18");
    /*is_ambiguous_... S19941C18::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(784,540), "S19941C18");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C10*), ABISELECT(768,536), "S19941C18");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C16*), ABISELECT(768,536), "S19941C18");
    check_base_class_offset(lv, (S19941C13*)(S19941C10*), ABISELECT(360,244), "S19941C18");
    check_base_class_offset(lv, (S19941C10*), 0, "S19941C18");
    /*is_ambiguous_... S19941C18::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(416,284), "S19941C18");
    /*is_ambiguous_... S19941C18::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*), ABISELECT(400,280), "S19941C18");
    /*is_ambiguous_... S19941C18::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(1584,1052), "S19941C18");
    check_base_class_offset(lv, (S19941C6*)(S19941C16*), ABISELECT(1568,1048), "S19941C18");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C16*), ABISELECT(1008,688), "S19941C18");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C16*), ABISELECT(992,684), "S19941C18");
    check_base_class_offset(lv, (S19941C13*)(S19941C16*), ABISELECT(1208,832), "S19941C18");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C16*), ABISELECT(1232,852), "S19941C18");
    check_base_class_offset(lv, (S19941C4*)(S19941C16*), ABISELECT(1264,868), "S19941C18");
    check_base_class_offset(lv, (S19941C16*), ABISELECT(992,684), "S19941C18");
    check_field_offset(lv, s19941c18f0, ABISELECT(616,428), "S19941C18.s19941c18f0");
    check_field_offset(lv, s19941c18f1, ABISELECT(624,436), "S19941C18.s19941c18f1");
    check_field_offset(lv, s19941c18f2, ABISELECT(632,440), "S19941C18.s19941c18f2");
    test_class_info(&lv, &cd_S19941C18);
    dp->~S19941C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C18(Test_S19941C18, "S19941C18", ABISELECT(1712,1144));

#else // __cplusplus

extern void _ZN9S19941C18C1Ev();
extern void _ZN9S19941C18D1Ev();
Name_Map name_map_S19941C18[] = {
  NSPAIR(_ZN9S19941C18C1Ev),
  NSPAIR(_ZN9S19941C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C10;
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C16;
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
static Base_Class bases_S19941C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(640,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(736,520), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19941C11,    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_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(144,96), //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
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(784,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(768,536), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(360,244), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19941C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(416,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
    12, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(400,280), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(1584,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C6,    ABISELECT(1568,1048), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(1008,688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C12,    ABISELECT(992,684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19941C13,    ABISELECT(1208,832), //bcp->offset
    52, //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
    5, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(1232,852), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(1264,868), //bcp->offset
    61, //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
    20, //immediately_derived
  0, 0},
  {&cd_S19941C16,    ABISELECT(992,684), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C18[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN9S19941C183v17Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY vtc_S19941C18[] = {
  ABISELECT(1568,1048),
  ABISELECT(992,684),
  ABISELECT(768,536),
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN9S19941C183v17Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(408,292),
  ABISELECT(376,276),
  ABISELECT(280,200),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-768,-536),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-224,-148),
  ABISELECT(-352,-240),
  ABISELECT(-256,-164),
  ABISELECT(576,364),
  ABISELECT(-992,-684),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(-440,-296),
  ABISELECT(-472,-312),
  ABISELECT(-568,-388),
  ABISELECT(-1208,-832),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  ABISELECT(-592,-408),
  ABISELECT(-1232,-852),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-1264,-868),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(-928,-604),
  ABISELECT(-832,-528),
  ABISELECT(-1568,-1048),
  (VTBL_ENTRY)&(_ZTI9S19941C18[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S19941C18[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C10__9S19941C18[] = {
  ABISELECT(768,536),
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C119S19941C10__9S19941C18[] = {
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C119S19941C10__9S19941C18[] = {
  ABISELECT(640,444),
  ABISELECT(736,520),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C119S19941C10__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C119S19941C10__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C10__9S19941C18[] = {
  ABISELECT(408,292),
  ABISELECT(376,276),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C10__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C10__9S19941C18[] = {
  0,
  0,
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C10__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-736,-520),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C10__9S19941C18[] = {
  ABISELECT(408,292),
  ABISELECT(376,276),
  ABISELECT(280,200),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C10__9S19941C18[] = {
  0,
  0,
  ABISELECT(-768,-536),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C18[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C18[] = {
  ABISELECT(-224,-148),
  ABISELECT(-352,-240),
  ABISELECT(-256,-164),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__A1__9S19941C18[] = {
  ABISELECT(-440,-296),
  ABISELECT(-472,-312),
  ABISELECT(-568,-388),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C16__A1__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(472,312),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C16__A1__9S19941C18[] = {
  0,
  0,
  ABISELECT(440,296),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A1__9S19941C18[] = {
  ABISELECT(-592,-408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16__9S19941C18[] = {
  0,
  ABISELECT(-928,-604),
  ABISELECT(-832,-528),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(256,164),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16__9S19941C18[] = {
  ABISELECT(-440,-296),
  ABISELECT(-472,-312),
  ABISELECT(-568,-388),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C16__9S19941C18[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16__9S19941C18[] = {
  ABISELECT(-592,-408),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C18[] = {
  ABISELECT(-928,-604),
  ABISELECT(-832,-528),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__A1__9S19941C18[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(832,528),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C18[] = {
  {&(_ZTV9S19941C18[7]),  7,72},
  {&(_tg__ZTV9S19941C10__9S19941C18[5]),  5,9},
  {&(_tg__ZTV9S19941C119S19941C10__9S19941C18[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C119S19941C10__9S19941C18[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C119S19941C10__9S19941C18[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C119S19941C10__9S19941C18[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C10__9S19941C18[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C10__9S19941C18[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C10__9S19941C18[4]),  4,6},
  {&(_tg__ZTV8S19941C7__9S19941C10__9S19941C18[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C10__9S19941C18[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C10__9S19941C18[4]),  4,6},
  {&(_ZTV9S19941C18[29]),  29,72},
  {&(_ZTV9S19941C18[21]),  21,72},
  {&(_ZTV9S19941C18[34]),  34,72},
  {&(_ZTV9S19941C18[49]),  49,72},
  {&(_ZTV9S19941C18[71]),  71,72},
  {&(_ZTV9S19941C18[57]),  57,72},
  {&(_ZTV9S19941C18[60]),  60,72},
  {&(_ZTV9S19941C18[63]),  63,72},
  {&(_tg__ZTV8S19941C7__9S19941C18[3]),  3,4},
  {&(_tg__ZTV9S19941C16__9S19941C18[6]),  6,9},
  {&(_tg__ZTV9S19941C139S19941C16__A1__9S19941C18[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C16__A1__9S19941C18[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C16__A1__9S19941C18[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A1__9S19941C18[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C16__9S19941C18[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C16__9S19941C18[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C16__9S19941C18[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C16__9S19941C18[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16__9S19941C18[3]),  3,4},
  {&(_tg__ZTV8S19941C6__A1__9S19941C18[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__A1__9S19941C18[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19941C18[];
extern  VTBL_ENTRY _ZTV9S19941C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C18[];
Class_Descriptor cd_S19941C18 = {  "S19941C18", // class name
  bases_S19941C18, 21,
  &(vtc_S19941C18[0]), // expected_vtbl_contents
  &(vtt_S19941C18[0]), // expected_vtt_contents
  ABISELECT(1712,1144), // object size
  NSPAIRA(_ZTI9S19941C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19941C18),72, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C18),33, //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  S19941C9  : S19941C10 , virtual S19941C15 {
  int s19941c9f0;
  ::S19941C18 s19941c9f1;
  virtual void  v13(); // _ZN8S19941C93v13Ev
  ~S19941C9(); // tgen
  S19941C9(); // tgen
};
//SIG(-1 S19941C9) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ VBC3 BC5{ BC3 VBC6{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v4} BC7{ BC3 v5 v6 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} v7 v8 Fi[4]} VBC10{ BC11{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC13{ VBC5 BC7 BC8 BC6 BC11 v13 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC14{ VBC6 BC5 VBC15{ BC6 Fp} VBC13 BC3 vd v14 Fc:1} Fc Fc Fc} v1 Fi FC16{ BC2 BC7 VBC13 v12 FL Fp Fi}}


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

static void Test_S19941C9()
{
  extern Class_Descriptor cd_S19941C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(589,1564)];
    init_test(&cd_S19941C9, buf);
    S19941C9 *dp, &lv = *(dp=new (buf) S19941C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9408,6252), "sizeof(S19941C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C9)");
    /*is_ambiguous_... S19941C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C10*), ABISELECT(2128,1428), "S19941C9");
    /*is_ambiguous_... S19941C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*)(S19941C10*), ABISELECT(2128,1428), "S19941C9");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(2128,1428), "S19941C9");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C10*), ABISELECT(2128,1428), "S19941C9");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*)(S19941C10*), ABISELECT(16,4), "S19941C9");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*)(S19941C10*), ABISELECT(2224,1504), "S19941C9");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C10*), ABISELECT(2224,1504), "S19941C9");
    check_base_class_offset(lv, (S19941C6*)(S19941C11*)(S19941C10*), 0, "S19941C9");
    check_base_class_offset(lv, (S19941C11*)(S19941C10*), 0, "S19941C9");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C10*), ABISELECT(160,100), "S19941C9");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C10*), ABISELECT(144,96), "S19941C9");
    /*is_ambiguous_... S19941C9::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(2272,1524), "S19941C9");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C10*), ABISELECT(2256,1520), "S19941C9");
    check_base_class_offset(lv, (S19941C13*)(S19941C10*), ABISELECT(360,244), "S19941C9");
    check_base_class_offset(lv, (S19941C10*), 0, "S19941C9");
    check_base_class_offset(lv, (S19941C4*)(S19941C15*), ABISELECT(2480,1668), "S19941C9");
    check_base_class_offset(lv, (S19941C15*), ABISELECT(2480,1668), "S19941C9");
    check_field_offset(lv, s19941c9f0, ABISELECT(400,280), "S19941C9.s19941c9f0");
    check_field_offset(lv, s19941c9f1, ABISELECT(416,284), "S19941C9.s19941c9f1");
    test_class_info(&lv, &cd_S19941C9);
    dp->~S19941C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C9(Test_S19941C9, "S19941C9", ABISELECT(9408,6252));

#else // __cplusplus

extern void _ZN8S19941C9C1Ev();
extern void _ZN8S19941C9D1Ev();
Name_Map name_map_S19941C9[] = {
  NSPAIR(_ZN8S19941C9C1Ev),
  NSPAIR(_ZN8S19941C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C10;
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C15;
extern VTBL_ENTRY _ZTI9S19941C15[];
extern  VTBL_ENTRY _ZTV9S19941C15[];
static Base_Class bases_S19941C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(2128,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(2224,1504), //bcp->offset
    20, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19941C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(144,96), //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(2272,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
    8, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(2256,1520), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(360,244), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19941C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19941C4,    ABISELECT(2480,1668), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19941C15,    ABISELECT(2480,1668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19941C9[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY vtc_S19941C9[] = {
  ABISELECT(2480,1668),
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  0,
  0,
  0,
  ABISELECT(-2480,-1668),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S19941C9[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C10__8S19941C9[] = {
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C119S19941C10__8S19941C9[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C119S19941C10__8S19941C9[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C119S19941C10__8S19941C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C119S19941C10__8S19941C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C10__8S19941C9[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C10__8S19941C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-1864,-1260),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C10__8S19941C9[] = {
  0,
  0,
  ABISELECT(-1896,-1276),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C10__8S19941C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C10__8S19941C9[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C10__8S19941C9[] = {
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C9[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C9[] = {
  {&(_ZTV8S19941C9[6]),  6,39},
  {&(_tg__ZTV9S19941C10__8S19941C9[5]),  5,9},
  {&(_tg__ZTV9S19941C119S19941C10__8S19941C9[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C119S19941C10__8S19941C9[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C119S19941C10__8S19941C9[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C119S19941C10__8S19941C9[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C10__8S19941C9[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C10__8S19941C9[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C10__8S19941C9[4]),  4,6},
  {&(_tg__ZTV8S19941C7__9S19941C10__8S19941C9[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C10__8S19941C9[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C10__8S19941C9[4]),  4,6},
  {&(_ZTV8S19941C9[24]),  24,39},
  {&(_ZTV8S19941C9[20]),  20,39},
  {&(_ZTV8S19941C9[29]),  29,39},
  {&(_ZTV8S19941C9[36]),  36,39},
  {&(_tg__ZTV8S19941C7__8S19941C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19941C9[];
extern  VTBL_ENTRY _ZTV8S19941C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C9[];
Class_Descriptor cd_S19941C9 = {  "S19941C9", // class name
  bases_S19941C9, 13,
  &(vtc_S19941C9[0]), // expected_vtbl_contents
  &(vtt_S19941C9[0]), // expected_vtt_contents
  ABISELECT(9408,6252), // object size
  NSPAIRA(_ZTI8S19941C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19941C9),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19941C9),17, //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  S19941C19  : S19941C7 , virtual S19941C12 , S19941C17 {
  ::S19941C2 s19941c19f0;
  ::S19941C15 s19941c19f1;
  int s19941c19f2;
  ~S19941C19(); // tgen
  S19941C19(); // tgen
};
//SIG(-1 S19941C19) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} VBC4{ BC3 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC5{ VBC2 BC6{ BC3 VBC2 v4 Fs:8 Fp Fc:0 Fc[4] Fi} VBC7{ BC2 Fp} VBC8{ VBC6 BC4 BC9{ VBC3 VBC2 VBC4 Fc Fi FU10{ m} Fc Fi} BC2 BC11{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} BC3 vd v9 Fc:1} FC13{ v10 v11 Fi Fc FC3 Fi Fp FC11 Fi FC6[9] FL} FC14{ BC11 FC8[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC5 Fc Fc Fc} Fi}


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

static void Test_S19941C19()
{
  extern Class_Descriptor cd_S19941C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(690,1861)];
    init_test(&cd_S19941C19, buf);
    S19941C19 *dp, &lv = *(dp=new (buf) S19941C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11024,7440), "sizeof(S19941C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C19)");
    /*is_ambiguous_... S19941C19::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(9936,6720), "S19941C19");
    /*is_ambiguous_... S19941C19::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(9936,6720), "S19941C19");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C8*), ABISELECT(9936,6720), "S19941C19");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C16*), ABISELECT(9936,6720), "S19941C19");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C16*), ABISELECT(9936,6720), "S19941C19");
    /*is_ambiguous_... S19941C19::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*), 0, "S19941C19");
    /*is_ambiguous_... S19941C19::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(10048,6800), "S19941C19");
    /*is_ambiguous_... S19941C19::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*), ABISELECT(10032,6796), "S19941C19");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C16*), ABISELECT(10032,6796), "S19941C19");
    /*is_ambiguous_... S19941C17::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C17*), ABISELECT(10248,6944), "S19941C19");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C17*), ABISELECT(10248,6944), "S19941C19");
    /*is_ambiguous_... S19941C19::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(10248,6944), "S19941C19");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C16*), ABISELECT(10248,6944), "S19941C19");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C17*), ABISELECT(48,20), "S19941C19");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C17*), ABISELECT(32,16), "S19941C19");
    check_base_class_offset(lv, (S19941C7*)(S19941C8*), ABISELECT(10272,6960), "S19941C19");
    check_base_class_offset(lv, (S19941C8*)(S19941C17*), ABISELECT(10272,6960), "S19941C19");
    /*is_ambiguous_... S19941C19::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(10896,7348), "S19941C19");
    check_base_class_offset(lv, (S19941C6*)(S19941C16*), ABISELECT(10880,7344), "S19941C19");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C16*), ABISELECT(10320,6984), "S19941C19");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C16*), ABISELECT(10304,6980), "S19941C19");
    check_base_class_offset(lv, (S19941C13*)(S19941C16*), ABISELECT(10520,7128), "S19941C19");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C16*), ABISELECT(10544,7148), "S19941C19");
    check_base_class_offset(lv, (S19941C4*)(S19941C16*), ABISELECT(10576,7164), "S19941C19");
    check_base_class_offset(lv, (S19941C16*)(S19941C17*), ABISELECT(10304,6980), "S19941C19");
    /*is_ambiguous_... S19941C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C17*), ABISELECT(176,112), "S19941C19");
    check_base_class_offset(lv, (S19941C17*), ABISELECT(32,16), "S19941C19");
    check_field_offset(lv, s19941c19f0, ABISELECT(288,192), "S19941C19.s19941c19f0");
    check_field_offset(lv, s19941c19f1, ABISELECT(2992,2132), "S19941C19.s19941c19f1");
    check_field_offset(lv, s19941c19f2, ABISELECT(9920,6716), "S19941C19.s19941c19f2");
    test_class_info(&lv, &cd_S19941C19);
    dp->~S19941C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C19(Test_S19941C19, "S19941C19", ABISELECT(11024,7440));

#else // __cplusplus

extern void _ZN9S19941C19C1Ev();
extern void _ZN9S19941C19D1Ev();
Name_Map name_map_S19941C19[] = {
  NSPAIR(_ZN9S19941C19C1Ev),
  NSPAIR(_ZN9S19941C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C8;
extern VTBL_ENTRY _ZTI8S19941C8[];
extern  VTBL_ENTRY _ZTV8S19941C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C16;
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C17;
extern VTBL_ENTRY _ZTI9S19941C17[];
extern  VTBL_ENTRY _ZTV9S19941C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C17[];
static Base_Class bases_S19941C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(9936,6720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19941C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(10048,6800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(10032,6796), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19941C7,    ABISELECT(10248,6944), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19941C6,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(10272,6960), //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19941C8,    ABISELECT(10272,6960), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10896,7348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(10880,7344), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10320,6984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C12,    ABISELECT(10304,6980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19941C13,    ABISELECT(10520,7128), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(10544,7148), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(10576,7164), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19941C16,    ABISELECT(10304,6980), //bcp->offset
    39, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19941C17,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C19[];
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C19D1Ev();
extern void _ZN9S19941C19D0Ev();
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZThn32_N9S19941C19D1Ev,_ZThn16_N9S19941C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19941C19D0Ev,_ZThn16_N9S19941C19D0Ev)();
extern void _ZN9S19941C173v15Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY vtc_S19941C19[] = {
  ABISELECT(10880,7344),
  ABISELECT(10304,6980),
  ABISELECT(10272,6960),
  ABISELECT(10248,6944),
  ABISELECT(10032,6796),
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19941C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C19D0Ev,
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19941C19D1Ev,_ZThn16_N9S19941C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19941C19D0Ev,_ZThn16_N9S19941C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
  0,
  0,
  ABISELECT(-10032,-6796),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10248,-6944),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10272,-6960),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10304,-6980),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10520,-7128),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  ABISELECT(-608,-428),
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-10576,-7164),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10880,-7344),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S19941C19[];
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C19[] = {
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C17D1Ev();
extern void _ZN9S19941C17D0Ev();
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C19[] = {
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C17__9S19941C19[] = {
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C17__9S19941C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C17__9S19941C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C17__9S19941C19[] = {
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10240,-6944),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C17__9S19941C19[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10272,-6964),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C17__9S19941C19[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10848,-7328),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C17__9S19941C19[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10488,-7112),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C17__9S19941C19[] = {
  0,
  0,
  ABISELECT(-10000,-6780),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A2__9S19941C17__9S19941C19[] = {
  ABISELECT(-608,-428),
  ABISELECT(-10512,-7132),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C17__9S19941C19[] = {
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A1__9S19941C19[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C19[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C8[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C78S19941C8__A2__9S19941C19[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C19[] = {
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C19[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C19[] = {
  0,
  0,
  ABISELECT(488,332),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A3__9S19941C19[] = {
  ABISELECT(-608,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16__9S19941C19[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16__9S19941C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16__9S19941C19[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C16__9S19941C19[] = {
  0,
  0,
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16__9S19941C19[] = {
  ABISELECT(-608,-428),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C19[] = {
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__A1__9S19941C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(632,400),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTT_ENTRY vtt_S19941C19[] = {
  {&(_ZTV9S19941C19[8]),  8,75},
  {&(_tg__ZTV8S19941C7__A__9S19941C19[3]),  3,4},
  {&(_tg__ZTV9S19941C17__9S19941C19[8]),  8,12},
  {&(_tg__ZTV8S19941C69S19941C17__9S19941C19[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C17__9S19941C19[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C17__9S19941C19[4]),  4,5},
  {&(_tg__ZTV8S19941C8__9S19941C17__9S19941C19[4]),  4,5},
  {&(_tg__ZTV9S19941C16__9S19941C17__9S19941C19[13]),  13,16},
  {&(_tg__ZTV8S19941C6__A1__9S19941C17__9S19941C19[5]),  5,6},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C17__9S19941C19[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C17__9S19941C19[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A2__9S19941C17__9S19941C19[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C17__9S19941C19[2]),  2,5},
  {&(_ZTV9S19941C19[27]),  27,75},
  {&(_ZTV9S19941C19[19]),  19,75},
  {&(_ZTV9S19941C19[33]),  33,75},
  {&(_ZTV9S19941C19[38]),  38,75},
  {&(_ZTV9S19941C19[52]),  52,75},
  {&(_ZTV9S19941C19[74]),  74,75},
  {&(_ZTV9S19941C19[60]),  60,75},
  {&(_ZTV9S19941C19[63]),  63,75},
  {&(_ZTV9S19941C19[66]),  66,75},
  {&(_tg__ZTV8S19941C7__A1__9S19941C19[3]),  3,4},
  {&(_tg__ZTV8S19941C8__9S19941C19[3]),  3,4},
  {&(_tg__ZTV8S19941C78S19941C8__A2__9S19941C19[3]),  3,4},
  {&(_tg__ZTV9S19941C16__9S19941C19[6]),  6,9},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C19[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C19[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C19[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A3__9S19941C19[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C16__9S19941C19[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C16__9S19941C19[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C16__9S19941C19[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C16__9S19941C19[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16__9S19941C19[3]),  3,4},
  {&(_tg__ZTV8S19941C6__A1__9S19941C19[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__A1__9S19941C19[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19941C19[];
extern  VTBL_ENTRY _ZTV9S19941C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C19[];
Class_Descriptor cd_S19941C19 = {  "S19941C19", // class name
  bases_S19941C19, 19,
  &(vtc_S19941C19[0]), // expected_vtbl_contents
  &(vtt_S19941C19[0]), // expected_vtt_contents
  ABISELECT(11024,7440), // object size
  NSPAIRA(_ZTI9S19941C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19941C19),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C19),37, //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  S19941C21  : virtual S19941C16 , virtual S19941C8 , virtual S19941C17 , virtual S19941C9 , virtual S19941C4 {
  int s19941c21f0;
  int s19941c21f1;
  virtual  ~S19941C21(); // _ZN9S19941C21D2Ev
  S19941C21(); // tgen
};
//SIG(-1 S19941C21) C1{ VBC2{ VBC3{ BC4{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC5{ VBC4 v1 Fc Fi Fc:8} v2 Fs:8 Fp Fc:0 Fc[4] Fi} BC6{ BC4 v3 v4 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC4 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} BC5 BC9{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU10{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} VBC11{ BC5 Fp} VBC12{ VBC5 BC3 VBC11 VBC2 BC4 vd v9 Fc:1} VBC13{ BC14{ VBC4 BC15{ VBC4 BC3 v10} BC6 BC7 v11 v12 Fi[4]} VBC16{ BC9 FC2[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC12 Fc Fc Fc} v13 Fi FC17{ BC14 BC6 VBC2 v14 FL Fp Fi}} VBC9 vd Fi Fi}


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

static void Test_S19941C21()
{
  extern Class_Descriptor cd_S19941C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(667,1766)];
    init_test(&cd_S19941C21, buf);
    S19941C21 *dp, &lv = *(dp=new (buf) S19941C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10656,7060), "sizeof(S19941C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C21)");
    /*is_ambiguous_... S19941C21::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(608,380), "S19941C21");
    /*is_ambiguous_... S19941C21::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(752,488), "S19941C21");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C16*), ABISELECT(752,488), "S19941C21");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C16*), ABISELECT(752,488), "S19941C21");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C8*), ABISELECT(752,488), "S19941C21");
    /*is_ambiguous_... S19941C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C10*)(S19941C9*), ABISELECT(752,488), "S19941C21");
    /*is_ambiguous_... S19941C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(752,488), "S19941C21");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(752,488), "S19941C21");
    /*is_ambiguous_... S19941C21::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(728,472), "S19941C21");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C16*), ABISELECT(728,472), "S19941C21");
    /*is_ambiguous_... S19941C17::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C17*), ABISELECT(728,472), "S19941C21");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C17*), ABISELECT(728,472), "S19941C21");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(728,472), "S19941C21");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(728,472), "S19941C21");
    check_base_class_offset(lv, (S19941C6*)(S19941C16*), ABISELECT(592,376), "S19941C21");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C16*), ABISELECT(32,16), "S19941C21");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C16*), ABISELECT(16,12), "S19941C21");
    /*is_ambiguous_... S19941C21::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(864,568), "S19941C21");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C16*), ABISELECT(848,564), "S19941C21");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(848,564), "S19941C21");
    check_base_class_offset(lv, (S19941C13*)(S19941C16*), ABISELECT(232,160), "S19941C21");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C16*), ABISELECT(256,180), "S19941C21");
    check_base_class_offset(lv, (S19941C4*)(S19941C16*), ABISELECT(288,196), "S19941C21");
    check_base_class_offset(lv, (S19941C16*), ABISELECT(16,12), "S19941C21");
    check_base_class_offset(lv, (S19941C16*)(S19941C17*), ABISELECT(16,12), "S19941C21");
    check_base_class_offset(lv, (S19941C7*)(S19941C8*), ABISELECT(1064,712), "S19941C21");
    check_base_class_offset(lv, (S19941C8*), ABISELECT(1064,712), "S19941C21");
    check_base_class_offset(lv, (S19941C8*)(S19941C17*), ABISELECT(1064,712), "S19941C21");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C17*), ABISELECT(1120,736), "S19941C21");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C17*), ABISELECT(1104,732), "S19941C21");
    /*is_ambiguous_... S19941C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C17*), ABISELECT(1248,828), "S19941C21");
    check_base_class_offset(lv, (S19941C17*), ABISELECT(1104,732), "S19941C21");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(1376,912), "S19941C21");
    check_base_class_offset(lv, (S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(1360,908), "S19941C21");
    check_base_class_offset(lv, (S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(1360,908), "S19941C21");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(1520,1008), "S19941C21");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(1504,1004), "S19941C21");
    check_base_class_offset(lv, (S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(1720,1152), "S19941C21");
    check_base_class_offset(lv, (S19941C10*)(S19941C9*), ABISELECT(1360,908), "S19941C21");
    check_base_class_offset(lv, (S19941C4*)(S19941C15*), ABISELECT(3488,2336), "S19941C21");
    check_base_class_offset(lv, (S19941C15*)(S19941C9*), ABISELECT(3488,2336), "S19941C21");
    check_base_class_offset(lv, (S19941C9*), ABISELECT(1360,908), "S19941C21");
    /*is_ambiguous_... S19941C21::S19941C4 */ AMB_check_base_class_offset(lv, (S19941C4*), ABISELECT(10416,6920), "S19941C21");
    check_field_offset(lv, s19941c21f0, ABISELECT(8,4), "S19941C21.s19941c21f0");
    check_field_offset(lv, s19941c21f1, ABISELECT(12,8), "S19941C21.s19941c21f1");
    test_class_info(&lv, &cd_S19941C21);
    dp->~S19941C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C21(Test_S19941C21, "S19941C21", ABISELECT(10656,7060));

#else // __cplusplus

extern void _ZN9S19941C21C1Ev();
extern void _ZN9S19941C21D2Ev();
Name_Map name_map_S19941C21[] = {
  NSPAIR(_ZN9S19941C21C1Ev),
  NSPAIR(_ZN9S19941C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C16;
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C8;
extern VTBL_ENTRY _ZTI8S19941C8[];
extern  VTBL_ENTRY _ZTV8S19941C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C17;
extern VTBL_ENTRY _ZTI9S19941C17[];
extern  VTBL_ENTRY _ZTV9S19941C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C17[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C10;
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C15;
extern VTBL_ENTRY _ZTI9S19941C15[];
extern  VTBL_ENTRY _ZTV9S19941C15[];
extern Class_Descriptor cd_S19941C9;
extern VTBL_ENTRY _ZTI8S19941C9[];
extern  VTBL_ENTRY _ZTV8S19941C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C9[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
static Base_Class bases_S19941C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(608,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(752,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
    2, //immediately_derived
  0, 1},
  {&cd_S19941C7,    ABISELECT(728,472), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    ABISELECT(592,376), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(864,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
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(848,564), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(232,160), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(256,180), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(288,196), //bcp->offset
    39, //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19941C16,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19941C7,    ABISELECT(1064,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19941C8,    ABISELECT(1064,712), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(1120,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
    15, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(1104,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1248,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19941C17,    ABISELECT(1104,732), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(1376,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19941C11,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1520,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C12,    ABISELECT(1504,1004), //bcp->offset
    99, //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
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19941C13,    ABISELECT(1720,1152), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19941C10,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(3488,2336), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19941C15,    ABISELECT(3488,2336), //bcp->offset
    -1, //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
    14, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19941C9,    ABISELECT(1360,908), //bcp->offset
    81, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19941C4,    ABISELECT(10416,6920), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C21[];
extern void _ZN9S19941C21D1Ev();
extern void _ZN9S19941C21D0Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19941C21D1Ev,_ZThn732_N9S19941C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19941C21D0Ev,_ZThn732_N9S19941C21D0Ev)() __attribute__((weak));
extern void _ZN9S19941C173v15Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY vtc_S19941C21[] = {
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C21D0Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  ABISELECT(496,308),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-592,-376),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-728,-472),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-848,-564),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1064,-712),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  ABISELECT(-1104,-732),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1104,-732),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1360,-908),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
  ABISELECT(-1504,-1004),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1720,-1152),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  0,
  0,
  0,
  ABISELECT(-3488,-2336),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  0,
  0,
  ABISELECT(-10416,-6920),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern VTBL_ENTRY _ZTV9S19941C21[];
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C21[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C21[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C21[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A1__9S19941C21[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16__9S19941C21[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16__9S19941C21[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C16__9S19941C21[] = {
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16__9S19941C21[] = {
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C21[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C21[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C21[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C8[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C78S19941C8__A2__9S19941C21[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C17D1Ev();
extern void _ZN9S19941C17D0Ev();
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C21[] = {
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C17__A1__9S19941C21[] = {
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C17__A1__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C17__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C17__9S19941C21[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C17__9S19941C21[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(1088,720),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C17__9S19941C21[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(512,356),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C17__9S19941C21[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(872,572),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C17__9S19941C21[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A2__9S19941C17__9S19941C21[] = {
  ABISELECT(496,308),
  ABISELECT(848,552),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C17__9S19941C21[] = {
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__9S19941C21[] = {
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C108S19941C9__9S19941C21[] = {
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C119S19941C108S19941C9__9S19941C21[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C21[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C21[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__A1__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(992,680),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__A1__9S19941C21[] = {
  0,
  0,
  ABISELECT(872,588),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C108S19941C9__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C108S19941C9__9S19941C21[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C108S19941C9__9S19941C21[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C9__9S19941C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C10__8S19941C9__9S19941C21[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__8S19941C9__9S19941C21[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__8S19941C9__9S19941C21[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
static  VTT_ENTRY vtt_S19941C21[] = {
  {&(_ZTV9S19941C21[12]),  12,124},
  {&(_ZTV9S19941C21[27]),  27,124},
  {&(_ZTV9S19941C21[49]),  49,124},
  {&(_ZTV9S19941C21[54]),  54,124},
  {&(_ZTV9S19941C21[35]),  35,124},
  {&(_ZTV9S19941C21[59]),  59,124},
  {&(_ZTV9S19941C21[38]),  38,124},
  {&(_ZTV9S19941C21[41]),  41,124},
  {&(_ZTV9S19941C21[65]),  65,124},
  {&(_ZTV9S19941C21[77]),  77,124},
  {&(_ZTV9S19941C21[94]),  94,124},
  {&(_ZTV9S19941C21[101]),  101,124},
  {&(_ZTV9S19941C21[108]),  108,124},
  {&(_ZTV9S19941C21[113]),  113,124},
  {&(_ZTV9S19941C21[121]),  121,124},
  {&(_tg__ZTV9S19941C16__9S19941C21[6]),  6,9},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C21[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A1__9S19941C21[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C16__9S19941C21[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C16__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C16__9S19941C21[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C16__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16__9S19941C21[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C21[3]),  3,4},
  {&(_tg__ZTV8S19941C8__9S19941C21[3]),  3,4},
  {&(_tg__ZTV8S19941C78S19941C8__A2__9S19941C21[3]),  3,4},
  {&(_tg__ZTV9S19941C17__9S19941C21[8]),  8,12},
  {&(_tg__ZTV8S19941C69S19941C17__A1__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C17__A1__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C17__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C8__9S19941C17__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C16__9S19941C17__9S19941C21[13]),  13,16},
  {&(_tg__ZTV8S19941C6__A1__9S19941C17__9S19941C21[5]),  5,6},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C17__9S19941C21[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C17__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A2__9S19941C17__9S19941C21[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C17__9S19941C21[2]),  2,5},
  {&(_tg__ZTV8S19941C9__9S19941C21[6]),  6,11},
  {&(_tg__ZTV9S19941C108S19941C9__9S19941C21[5]),  5,9},
  {&(_tg__ZTV9S19941C119S19941C108S19941C9__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C21[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C21[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__A1__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__A1__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C7__9S19941C108S19941C9__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C108S19941C9__9S19941C21[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C108S19941C9__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C7__8S19941C9__9S19941C21[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C10__8S19941C9__9S19941C21[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__8S19941C9__9S19941C21[4]),  4,6},
  {&(_tg__ZTV8S19941C49S19941C15__8S19941C9__9S19941C21[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19941C21[];
extern  VTBL_ENTRY _ZTV9S19941C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C21[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19941C21D0Ev,_ZThn732_N9S19941C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19941C21D1Ev,_ZThn732_N9S19941C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19941C21 = {  "S19941C21", // class name
  bases_S19941C21, 29,
  &(vtc_S19941C21[0]), // expected_vtbl_contents
  &(vtt_S19941C21[0]), // expected_vtt_contents
  ABISELECT(10656,7060), // object size
  NSPAIRA(_ZTI9S19941C21),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19941C21),124, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C21),57, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C20  : virtual S19941C21 {
  int s19941c20f0;
  __tsi64 s19941c20f1;
  char s19941c20f2;
  char s19941c20f3;
  void *s19941c20f4;
  __tsi64 s19941c20f5;
  long s19941c20f6;
  int s19941c20f7;
  virtual void  v16(); // _ZN9S19941C203v16Ev
  ~S19941C20(); // tgen
  S19941C20(); // tgen
};
//SIG(-1 S19941C20) C1{ VBC2{ VBC3{ VBC4{ BC5{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC6{ VBC5 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} BC7{ BC5 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC5 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} BC6 BC10{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU11{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} VBC12{ BC6 Fp} VBC13{ VBC6 BC4 VBC12 VBC3 BC5 vd v10 Fc:1} VBC14{ BC15{ VBC5 BC16{ VBC5 BC4 v11} BC7 BC8 v12 v13 Fi[4]} VBC17{ BC10 FC3[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC13 Fc Fc Fc} v14 Fi FC18{ BC15 BC7 VBC3 v15 FL Fp Fi}} VBC10 vd Fi Fi} v1 Fi FL Fc Fc Fp FL Fl Fi}


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

static void Test_S19941C20()
{
  extern Class_Descriptor cd_S19941C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(671,1776)];
    init_test(&cd_S19941C20, buf);
    S19941C20 *dp, &lv = *(dp=new (buf) S19941C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10720,7100), "sizeof(S19941C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C20)");
    /*is_ambiguous_... S19941C20::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(672,420), "S19941C20");
    /*is_ambiguous_... S19941C20::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(816,528), "S19941C20");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C16*), ABISELECT(816,528), "S19941C20");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C16*), ABISELECT(816,528), "S19941C20");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C8*), ABISELECT(816,528), "S19941C20");
    /*is_ambiguous_... S19941C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C10*)(S19941C9*), ABISELECT(816,528), "S19941C20");
    /*is_ambiguous_... S19941C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(816,528), "S19941C20");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(816,528), "S19941C20");
    /*is_ambiguous_... S19941C20::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(792,512), "S19941C20");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C16*), ABISELECT(792,512), "S19941C20");
    /*is_ambiguous_... S19941C17::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C17*), ABISELECT(792,512), "S19941C20");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C17*), ABISELECT(792,512), "S19941C20");
    check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(792,512), "S19941C20");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(792,512), "S19941C20");
    check_base_class_offset(lv, (S19941C6*)(S19941C16*), ABISELECT(656,416), "S19941C20");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C16*), ABISELECT(96,56), "S19941C20");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C16*), ABISELECT(80,52), "S19941C20");
    /*is_ambiguous_... S19941C20::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(928,608), "S19941C20");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C16*), ABISELECT(912,604), "S19941C20");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(912,604), "S19941C20");
    check_base_class_offset(lv, (S19941C13*)(S19941C16*), ABISELECT(296,200), "S19941C20");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C16*), ABISELECT(320,220), "S19941C20");
    check_base_class_offset(lv, (S19941C4*)(S19941C16*), ABISELECT(352,236), "S19941C20");
    check_base_class_offset(lv, (S19941C16*)(S19941C21*), ABISELECT(80,52), "S19941C20");
    check_base_class_offset(lv, (S19941C16*)(S19941C17*), ABISELECT(80,52), "S19941C20");
    check_base_class_offset(lv, (S19941C7*)(S19941C8*), ABISELECT(1128,752), "S19941C20");
    check_base_class_offset(lv, (S19941C8*)(S19941C21*), ABISELECT(1128,752), "S19941C20");
    check_base_class_offset(lv, (S19941C8*)(S19941C17*), ABISELECT(1128,752), "S19941C20");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C17*), ABISELECT(1184,776), "S19941C20");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C17*), ABISELECT(1168,772), "S19941C20");
    /*is_ambiguous_... S19941C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C17*), ABISELECT(1312,868), "S19941C20");
    check_base_class_offset(lv, (S19941C17*)(S19941C21*), ABISELECT(1168,772), "S19941C20");
    /*is_ambiguous_... S19941C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(1440,952), "S19941C20");
    check_base_class_offset(lv, (S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(1424,948), "S19941C20");
    check_base_class_offset(lv, (S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(1424,948), "S19941C20");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(1584,1048), "S19941C20");
    /*is_ambiguous_... S19941C10::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(1568,1044), "S19941C20");
    check_base_class_offset(lv, (S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(1784,1192), "S19941C20");
    check_base_class_offset(lv, (S19941C10*)(S19941C9*), ABISELECT(1424,948), "S19941C20");
    check_base_class_offset(lv, (S19941C4*)(S19941C15*), ABISELECT(3552,2376), "S19941C20");
    check_base_class_offset(lv, (S19941C15*)(S19941C9*), ABISELECT(3552,2376), "S19941C20");
    check_base_class_offset(lv, (S19941C9*)(S19941C21*), ABISELECT(1424,948), "S19941C20");
    /*is_ambiguous_... S19941C21::S19941C4 */ AMB_check_base_class_offset(lv, (S19941C4*)(S19941C21*), ABISELECT(10480,6960), "S19941C20");
    check_base_class_offset(lv, (S19941C21*), ABISELECT(64,40), "S19941C20");
    check_field_offset(lv, s19941c20f0, ABISELECT(8,4), "S19941C20.s19941c20f0");
    check_field_offset(lv, s19941c20f1, ABISELECT(16,8), "S19941C20.s19941c20f1");
    check_field_offset(lv, s19941c20f2, ABISELECT(24,16), "S19941C20.s19941c20f2");
    check_field_offset(lv, s19941c20f3, ABISELECT(25,17), "S19941C20.s19941c20f3");
    check_field_offset(lv, s19941c20f4, ABISELECT(32,20), "S19941C20.s19941c20f4");
    check_field_offset(lv, s19941c20f5, ABISELECT(40,24), "S19941C20.s19941c20f5");
    check_field_offset(lv, s19941c20f6, ABISELECT(48,32), "S19941C20.s19941c20f6");
    check_field_offset(lv, s19941c20f7, ABISELECT(56,36), "S19941C20.s19941c20f7");
    test_class_info(&lv, &cd_S19941C20);
    dp->~S19941C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C20(Test_S19941C20, "S19941C20", ABISELECT(10720,7100));

#else // __cplusplus

extern void _ZN9S19941C20C1Ev();
extern void _ZN9S19941C20D1Ev();
Name_Map name_map_S19941C20[] = {
  NSPAIR(_ZN9S19941C20C1Ev),
  NSPAIR(_ZN9S19941C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C16;
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C8;
extern VTBL_ENTRY _ZTI8S19941C8[];
extern  VTBL_ENTRY _ZTV8S19941C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C17;
extern VTBL_ENTRY _ZTI9S19941C17[];
extern  VTBL_ENTRY _ZTV9S19941C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C17[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C10;
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C15;
extern VTBL_ENTRY _ZTI9S19941C15[];
extern  VTBL_ENTRY _ZTV9S19941C15[];
extern Class_Descriptor cd_S19941C9;
extern VTBL_ENTRY _ZTI8S19941C9[];
extern  VTBL_ENTRY _ZTV8S19941C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C9[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C21;
extern VTBL_ENTRY _ZTI9S19941C21[];
extern  VTBL_ENTRY _ZTV9S19941C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C21[];
static Base_Class bases_S19941C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(672,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
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(816,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19941C7,    ABISELECT(792,512), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19941C6,    ABISELECT(656,416), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(928,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
    7, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(912,604), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(296,200), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(320,220), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(352,236), //bcp->offset
    56, //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19941C16,    ABISELECT(80,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19941C7,    ABISELECT(1128,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19941C8,    ABISELECT(1128,752), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(1184,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
    15, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(1168,772), //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
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1312,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C17,    ABISELECT(1168,772), //bcp->offset
    83, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(1440,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19941C11,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1584,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(1568,1044), //bcp->offset
    116, //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
    24, //immediately_derived
  0, 0},
  {&cd_S19941C13,    ABISELECT(1784,1192), //bcp->offset
    120, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19941C10,    ABISELECT(1424,948), //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
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(3552,2376), //bcp->offset
    125, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19941C15,    ABISELECT(3552,2376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19941C9,    ABISELECT(1424,948), //bcp->offset
    98, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19941C4,    ABISELECT(10480,6960), //bcp->offset
    133, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19941C21,    ABISELECT(64,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19941C20[];
extern void _ZN9S19941C203v16Ev();
extern void _ZN9S19941C20D1Ev();
extern void _ZN9S19941C20D0Ev();
extern void ABISELECT(_ZTv0_n104_N9S19941C20D1Ev,_ZTv0_n52_N9S19941C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19941C20D1Ev,_ZThn40_N9S19941C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19941C20D0Ev,_ZTv0_n52_N9S19941C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S19941C20D0Ev,_ZThn40_N9S19941C20D0Ev)() __attribute__((weak));
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19941C20D1Ev,_ZTv0_n40_N9S19941C20D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19941C20D1Ev,_ZThn772_N9S19941C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19941C20D0Ev,_ZTv0_n40_N9S19941C20D0Ev)();
extern void ABISELECT(_ZThn1168_N9S19941C20D0Ev,_ZThn772_N9S19941C20D0Ev)() __attribute__((weak));
extern void _ZN9S19941C173v15Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY vtc_S19941C20[] = {
  ABISELECT(10480,6960),
  ABISELECT(3552,2376),
  ABISELECT(1424,948),
  ABISELECT(1168,772),
  ABISELECT(1128,752),
  ABISELECT(912,604),
  ABISELECT(816,528),
  ABISELECT(792,512),
  ABISELECT(656,416),
  ABISELECT(80,52),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C203v16Ev,
  (VTBL_ENTRY)&_ZN9S19941C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C20D0Ev,
  ABISELECT(-64,-40),
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19941C20D1Ev,_ZTv0_n52_N9S19941C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19941C20D0Ev,_ZTv0_n52_N9S19941C20D0Ev),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  ABISELECT(496,308),
  ABISELECT(-320,-220),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-656,-416),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-792,-512),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-912,-604),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1128,-752),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  ABISELECT(-1168,-772),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1168,-772),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C20D1Ev,_ZTv0_n40_N9S19941C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C20D0Ev,_ZTv0_n40_N9S19941C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1424,-948),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
  ABISELECT(-1568,-1044),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1784,-1192),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  0,
  0,
  0,
  ABISELECT(-3552,-2376),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  0,
  0,
  ABISELECT(-10480,-6960),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern VTBL_ENTRY _ZTV9S19941C20[];
extern void _ZN9S19941C21D1Ev();
extern void _ZN9S19941C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C21__9S19941C20[] = {
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C21D0Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C21__9S19941C20[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C21__9S19941C20[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-592,-376),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C21__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-728,-472),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C21__9S19941C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C21__9S19941C20[] = {
  0,
  0,
  ABISELECT(-848,-564),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A1__9S19941C21__9S19941C20[] = {
  ABISELECT(496,308),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C21__9S19941C20[] = {
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C21__9S19941C20[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1064,-712),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19941C21D1Ev,_ZThn732_N9S19941C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19941C21D0Ev,_ZThn732_N9S19941C21D0Ev)() __attribute__((weak));
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C21__9S19941C20[] = {
  0,
  ABISELECT(-1104,-732),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1104,-732),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__9S19941C21__9S19941C20[] = {
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1360,-908),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C129S19941C108S19941C9__A2__9S19941C21__9S19941C20[] = {
  ABISELECT(-1504,-1004),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C21__9S19941C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1720,-1152),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__A1__9S19941C21__9S19941C20[] = {
  0,
  0,
  0,
  ABISELECT(-3488,-2336),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C4__A2__9S19941C21__9S19941C20[] = {
  0,
  0,
  0,
  ABISELECT(-10416,-6920),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C20[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C20[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A1__9S19941C20[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16__9S19941C20[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16__9S19941C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C16__9S19941C20[] = {
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16__9S19941C20[] = {
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C20[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C20[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C20[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C8[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C78S19941C8__A2__9S19941C20[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C17D1Ev();
extern void _ZN9S19941C17D0Ev();
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C20[] = {
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C17__A1__9S19941C20[] = {
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C17__A1__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C17__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C17__9S19941C20[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C17__9S19941C20[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(1088,720),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C17__9S19941C20[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(512,356),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C17__9S19941C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(872,572),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C17__9S19941C20[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A2__9S19941C17__9S19941C20[] = {
  ABISELECT(496,308),
  ABISELECT(848,552),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C17__9S19941C20[] = {
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__9S19941C20[] = {
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C108S19941C9__9S19941C20[] = {
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C119S19941C108S19941C9__9S19941C20[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C20[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__A1__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(992,680),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__A1__9S19941C20[] = {
  0,
  0,
  ABISELECT(872,588),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C108S19941C9__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C108S19941C9__9S19941C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C108S19941C9__9S19941C20[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C9__9S19941C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C10__8S19941C9__9S19941C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__8S19941C9__9S19941C20[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__8S19941C9__9S19941C20[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
static  VTT_ENTRY vtt_S19941C20[] = {
  {&(_ZTV9S19941C20[13]),  13,141},
  {&(_ZTV9S19941C20[29]),  29,141},
  {&(_ZTV9S19941C20[44]),  44,141},
  {&(_ZTV9S19941C20[66]),  66,141},
  {&(_ZTV9S19941C20[71]),  71,141},
  {&(_ZTV9S19941C20[52]),  52,141},
  {&(_ZTV9S19941C20[76]),  76,141},
  {&(_ZTV9S19941C20[55]),  55,141},
  {&(_ZTV9S19941C20[58]),  58,141},
  {&(_ZTV9S19941C20[82]),  82,141},
  {&(_ZTV9S19941C20[94]),  94,141},
  {&(_ZTV9S19941C20[111]),  111,141},
  {&(_ZTV9S19941C20[118]),  118,141},
  {&(_ZTV9S19941C20[125]),  125,141},
  {&(_ZTV9S19941C20[130]),  130,141},
  {&(_ZTV9S19941C20[138]),  138,141},
  {&(_tg__ZTV9S19941C21__9S19941C20[12]),  12,14},
  {&(_tg__ZTV9S19941C16__9S19941C21__9S19941C20[13]),  13,16},
  {&(_tg__ZTV8S19941C6__9S19941C21__9S19941C20[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C21__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C21__9S19941C20[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C21__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A1__9S19941C21__9S19941C20[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C21__9S19941C20[2]),  2,5},
  {&(_tg__ZTV8S19941C8__9S19941C21__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C17__9S19941C21__9S19941C20[11]),  11,15},
  {&(_tg__ZTV8S19941C9__9S19941C21__9S19941C20[13]),  13,18},
  {&(_tg__ZTV9S19941C129S19941C108S19941C9__A2__9S19941C21__9S19941C20[2]),  2,4},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C21__9S19941C20[5]),  5,5},
  {&(_tg__ZTV8S19941C49S19941C15__A1__9S19941C21__9S19941C20[5]),  5,8},
  {&(_tg__ZTV8S19941C4__A2__9S19941C21__9S19941C20[5]),  5,8},
  {&(_tg__ZTV9S19941C16__9S19941C20[6]),  6,9},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C20[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C16__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C16__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A1__9S19941C20[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C16__9S19941C20[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C16__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C16__9S19941C20[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C16__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16__9S19941C20[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C20[3]),  3,4},
  {&(_tg__ZTV8S19941C8__9S19941C20[3]),  3,4},
  {&(_tg__ZTV8S19941C78S19941C8__A2__9S19941C20[3]),  3,4},
  {&(_tg__ZTV9S19941C17__9S19941C20[8]),  8,12},
  {&(_tg__ZTV8S19941C69S19941C17__A1__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C17__A1__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C17__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C8__9S19941C17__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C16__9S19941C17__9S19941C20[13]),  13,16},
  {&(_tg__ZTV8S19941C6__A1__9S19941C17__9S19941C20[5]),  5,6},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C17__9S19941C20[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C17__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A2__9S19941C17__9S19941C20[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C17__9S19941C20[2]),  2,5},
  {&(_tg__ZTV8S19941C9__9S19941C20[6]),  6,11},
  {&(_tg__ZTV9S19941C108S19941C9__9S19941C20[5]),  5,9},
  {&(_tg__ZTV9S19941C119S19941C108S19941C9__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__A2__9S19941C20[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C20[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__A1__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__A1__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C7__9S19941C108S19941C9__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C108S19941C9__9S19941C20[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C108S19941C9__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C7__8S19941C9__9S19941C20[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C10__8S19941C9__9S19941C20[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__8S19941C9__9S19941C20[4]),  4,6},
  {&(_tg__ZTV8S19941C49S19941C15__8S19941C9__9S19941C20[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19941C20[];
extern  VTBL_ENTRY _ZTV9S19941C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C20[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19941C21D0Ev,_ZThn732_N9S19941C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19941C21D1Ev,_ZThn732_N9S19941C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C20D0Ev,_ZTv0_n40_N9S19941C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1168_N9S19941C20D0Ev,_ZThn772_N9S19941C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C20D1Ev,_ZTv0_n40_N9S19941C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1168_N9S19941C20D1Ev,_ZThn772_N9S19941C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19941C20D0Ev,_ZTv0_n52_N9S19941C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19941C20D0Ev,_ZThn40_N9S19941C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19941C20D1Ev,_ZTv0_n52_N9S19941C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19941C20D1Ev,_ZThn40_N9S19941C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19941C20 = {  "S19941C20", // class name
  bases_S19941C20, 30,
  &(vtc_S19941C20[0]), // expected_vtbl_contents
  &(vtt_S19941C20[0]), // expected_vtt_contents
  ABISELECT(10720,7100), // object size
  NSPAIRA(_ZTI9S19941C20),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19941C20),141, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19941C20),73, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19941C1  : virtual S19941C2 , virtual S19941C8 , S19941C9 , S19941C19 , virtual S19941C20 {
  void *s19941c1f0;
  int s19941c1f1;
  void *s19941c1f2;
  int s19941c1f3;
  ~S19941C1(); // tgen
  S19941C1(); // tgen
};
//SIG(1 S19941C1) C1{ VBC2{ v1 v2 Fi Fc FC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} Fi Fp FC4{ v10 v11 v12 Fp[2] FL Fp[8] Fi Fp Fi FU5{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} Fi FC6{ BC3 VBC7{ VBC3 v3 Fc Fi Fc:8} v4 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL} VBC8{ BC7 Fp} BC9{ BC10{ VBC3 BC11{ VBC3 BC6 v5} BC12{ BC3 v6 v7 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC13{ VBC3 VBC7 VBC12 Fc Fi FU14{ m} Fc Fi} v8 v9 Fi[4]} VBC15{ BC4 FC16{ VBC6 BC12 BC13 BC7 BC4 v14 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC17{ VBC7 BC6 VBC8 VBC16 BC3 vd v15 Fc:1} Fc Fc Fc} v13 Fi FC18{ BC10 BC12 VBC16 v17 FL Fp Fi}} BC19{ BC7 VBC12 BC17 FC2 FC15 Fi} VBC20{ VBC21{ VBC16 VBC8 VBC17 VBC9 VBC4 vd Fi Fi} v16 Fi FL Fc Fc Fp FL Fl Fi} Fp Fi Fp Fi}


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

static void Test_S19941C1()
{
  extern Class_Descriptor cd_S19941C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1597,4302)];
    init_test(&cd_S19941C1, buf);
    S19941C1 *dp, &lv = *(dp=new (buf) S19941C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(25536,17204), "sizeof(S19941C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19941C1)");
    check_base_class_offset(lv, (S19941C2*), ABISELECT(12096,8164), "S19941C1");
    check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C8*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C10*)(S19941C9*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C19::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C19*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C16*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C7*)(S19941C16*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C10*)(S19941C9*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(14832,10124), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(14832,10124), "S19941C1");
    check_base_class_offset(lv, (S19941C7*)(S19941C8*), ABISELECT(14792,10104), "S19941C1");
    check_base_class_offset(lv, (S19941C8*), ABISELECT(14792,10104), "S19941C1");
    check_base_class_offset(lv, (S19941C8*)(S19941C17*)(S19941C19*), ABISELECT(14792,10104), "S19941C1");
    check_base_class_offset(lv, (S19941C8*)(S19941C21*), ABISELECT(14792,10104), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S19941C8*)(S19941C17*), ABISELECT(14792,10104), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(16,4), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C17::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C17*)(S19941C19*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C17*)(S19941C19*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*), ABISELECT(14928,10200), "S19941C1");
    check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C16*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C17*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C17*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(14928,10200), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), 0, "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C11*)(S19941C10*)(S19941C9*), 0, "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(160,100), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(144,96), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*), ABISELECT(14976,10220), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(14960,10216), "S19941C1");
    /*is_ambiguous_... S19941C19::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C19*), ABISELECT(14960,10216), "S19941C1");
    check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C16*), ABISELECT(14960,10216), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(14960,10216), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(360,244), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C10*)(S19941C9*), 0, "S19941C1");
    check_base_class_offset(lv, (S19941C4*)(S19941C15*), ABISELECT(15184,10364), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C15*)(S19941C9*), ABISELECT(15184,10364), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C15*)(S19941C9*), ABISELECT(15184,10364), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C9*), 0, "S19941C1");
    /*is_ambiguous_... S19941C19::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C19*), ABISELECT(2128,1428), "S19941C1");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C17*)(S19941C19*), ABISELECT(2176,1448), "S19941C1");
    /*is_ambiguous_... S19941C17::S19941C6 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C17*)(S19941C19*), ABISELECT(2160,1444), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*), ABISELECT(22704,15316), "S19941C1");
    check_base_class_offset(lv, (S19941C6*)(S19941C16*), ABISELECT(22688,15312), "S19941C1");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C16*), ABISELECT(22128,14952), "S19941C1");
    /*is_ambiguous_... S19941C16::S19941C12 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C16*), ABISELECT(22112,14948), "S19941C1");
    check_base_class_offset(lv, (S19941C13*)(S19941C16*), ABISELECT(22328,15096), "S19941C1");
    /*is_ambiguous_... S19941C16::S19941C7 */ AMB_check_base_class_offset(lv, (S19941C7*)(S19941C16*), ABISELECT(22352,15116), "S19941C1");
    check_base_class_offset(lv, (S19941C4*)(S19941C16*), ABISELECT(22384,15132), "S19941C1");
    check_base_class_offset(lv, (S19941C16*)(S19941C17*)(S19941C19*), ABISELECT(22112,14948), "S19941C1");
    check_base_class_offset(lv, (S19941C16*)(S19941C21*), ABISELECT(22112,14948), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S19941C16*)(S19941C17*), ABISELECT(22112,14948), "S19941C1");
    /*is_ambiguous_... S19941C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C17*)(S19941C19*), ABISELECT(2304,1540), "S19941C1");
    check_base_class_offset(lv, (S19941C17*)(S19941C19*), ABISELECT(2160,1444), "S19941C1");
    check_base_class_offset(lv, (S19941C19*), ABISELECT(2128,1428), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C17*), ABISELECT(22928,15464), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C17*), ABISELECT(22912,15460), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C17 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C17*), ABISELECT(23056,15556), "S19941C1");
    check_base_class_offset(lv, (S19941C17*)(S19941C21*), ABISELECT(22912,15460), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(23184,15640), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C6*)(S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(23168,15636), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C11*)(S19941C10*)(S19941C9*), ABISELECT(23168,15636), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(23328,15736), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C12*)(S19941C10*)(S19941C9*), ABISELECT(23312,15732), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C13*)(S19941C10*)(S19941C9*), ABISELECT(23528,15880), "S19941C1");
    /*is_ambiguous_... S19941C1::S19941C9 */ AMB_check_base_class_offset(lv, (S19941C10*)(S19941C9*), ABISELECT(23168,15636), "S19941C1");
    check_base_class_offset(lv, (S19941C9*)(S19941C21*), ABISELECT(23168,15636), "S19941C1");
    /*is_ambiguous_... S19941C21::S19941C4 */ AMB_check_base_class_offset(lv, (S19941C4*)(S19941C21*), ABISELECT(25296,17064), "S19941C1");
    check_base_class_offset(lv, (S19941C21*)(S19941C20*), ABISELECT(22888,15448), "S19941C1");
    check_base_class_offset(lv, (S19941C20*), ABISELECT(22824,15408), "S19941C1");
    check_field_offset(lv, s19941c1f0, ABISELECT(12056,8148), "S19941C1.s19941c1f0");
    check_field_offset(lv, s19941c1f1, ABISELECT(12064,8152), "S19941C1.s19941c1f1");
    check_field_offset(lv, s19941c1f2, ABISELECT(12072,8156), "S19941C1.s19941c1f2");
    check_field_offset(lv, s19941c1f3, ABISELECT(12080,8160), "S19941C1.s19941c1f3");
    test_class_info(&lv, &cd_S19941C1);
    dp->~S19941C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19941C1(Test_S19941C1, "S19941C1", ABISELECT(25536,17204));

#else // __cplusplus

extern void _ZN8S19941C1C1Ev();
extern void _ZN8S19941C1D1Ev();
Name_Map name_map_S19941C1[] = {
  NSPAIR(_ZN8S19941C1C1Ev),
  NSPAIR(_ZN8S19941C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19941C2;
extern VTBL_ENTRY _ZTI8S19941C2[];
extern  VTBL_ENTRY _ZTV8S19941C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C8;
extern VTBL_ENTRY _ZTI8S19941C8[];
extern  VTBL_ENTRY _ZTV8S19941C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C10;
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C15;
extern VTBL_ENTRY _ZTI9S19941C15[];
extern  VTBL_ENTRY _ZTV9S19941C15[];
extern Class_Descriptor cd_S19941C9;
extern VTBL_ENTRY _ZTI8S19941C9[];
extern  VTBL_ENTRY _ZTV8S19941C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C9[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C7;
extern VTBL_ENTRY _ZTI8S19941C7[];
extern  VTBL_ENTRY _ZTV8S19941C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C7[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C16;
extern VTBL_ENTRY _ZTI9S19941C16[];
extern  VTBL_ENTRY _ZTV9S19941C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C16[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C17;
extern VTBL_ENTRY _ZTI9S19941C17[];
extern  VTBL_ENTRY _ZTV9S19941C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C17[];
extern Class_Descriptor cd_S19941C19;
extern VTBL_ENTRY _ZTI9S19941C19[];
extern  VTBL_ENTRY _ZTV9S19941C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C19[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C17;
extern VTBL_ENTRY _ZTI9S19941C17[];
extern  VTBL_ENTRY _ZTV9S19941C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C17[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C6;
extern VTBL_ENTRY _ZTI8S19941C6[];
extern  VTBL_ENTRY _ZTV8S19941C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C6[];
extern Class_Descriptor cd_S19941C11;
extern VTBL_ENTRY _ZTI9S19941C11[];
extern  VTBL_ENTRY _ZTV9S19941C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19941C12;
extern VTBL_ENTRY _ZTI9S19941C12[];
extern  VTBL_ENTRY _ZTV9S19941C12[];
extern Class_Descriptor cd_S19941C13;
extern VTBL_ENTRY _ZTI9S19941C13[];
extern  VTBL_ENTRY _ZTV9S19941C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C13[];
extern Class_Descriptor cd_S19941C10;
extern VTBL_ENTRY _ZTI9S19941C10[];
extern  VTBL_ENTRY _ZTV9S19941C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C10[];
extern Class_Descriptor cd_S19941C9;
extern VTBL_ENTRY _ZTI8S19941C9[];
extern  VTBL_ENTRY _ZTV8S19941C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C9[];
extern Class_Descriptor cd_S19941C4;
extern VTBL_ENTRY _ZTI8S19941C4[];
extern  VTBL_ENTRY _ZTV8S19941C4[];
extern Class_Descriptor cd_S19941C21;
extern VTBL_ENTRY _ZTI9S19941C21[];
extern  VTBL_ENTRY _ZTV9S19941C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C21[];
extern Class_Descriptor cd_S19941C20;
extern VTBL_ENTRY _ZTI9S19941C20[];
extern  VTBL_ENTRY _ZTV9S19941C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19941C20[];
static Base_Class bases_S19941C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19941C2,    ABISELECT(12096,8164), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(14832,10124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19941C7,    ABISELECT(14792,10104), //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19941C8,    ABISELECT(14792,10104), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(14928,10200), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19941C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19941C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19941C12,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(14976,10220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C12,    ABISELECT(14960,10216), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19941C13,    ABISELECT(360,244), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19941C10,    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
    29, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(15184,10364), //bcp->offset
    76, //bcp->virtual_function_table_offset
    5, //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_S19941C15,    ABISELECT(15184,10364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19941C9,    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
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19941C7,    ABISELECT(2128,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(2176,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
    19, //immediately_derived
  0, 0},
  {&cd_S19941C6,    ABISELECT(2160,1444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(22704,15316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C6,    ABISELECT(22688,15312), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(22128,14952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C12,    ABISELECT(22112,14948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19941C13,    ABISELECT(22328,15096), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19941C7,    ABISELECT(22352,15116), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19941C4,    ABISELECT(22384,15132), //bcp->offset
    109, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19941C16,    ABISELECT(22112,14948), //bcp->offset
    84, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(2304,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
    29, //immediately_derived
  0, 0},
  {&cd_S19941C17,    ABISELECT(2160,1444), //bcp->offset
    42, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19941C19,    ABISELECT(2128,1428), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(22928,15464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C6,    ABISELECT(22912,15460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(23056,15556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C17,    ABISELECT(22912,15460), //bcp->offset
    153, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(23184,15640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C6,    ABISELECT(23168,15636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19941C11,    ABISELECT(23168,15636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(23328,15736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19941C12,    ABISELECT(23312,15732), //bcp->offset
    186, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19941C13,    ABISELECT(23528,15880), //bcp->offset
    190, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19941C10,    ABISELECT(23168,15636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19941C9,    ABISELECT(23168,15636), //bcp->offset
    168, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19941C4,    ABISELECT(25296,17064), //bcp->offset
    195, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19941C21,    ABISELECT(22888,15448), //bcp->offset
    138, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19941C20,    ABISELECT(22824,15408), //bcp->offset
    120, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19941C1[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
extern void _ZN8S19941C1D1Ev();
extern void _ZN8S19941C1D0Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C72v3Ev();
extern void ABISELECT(_ZThn2128_N8S19941C1D1Ev,_ZThn1428_N8S19941C1D1Ev)();
extern void ABISELECT(_ZThn2128_N8S19941C1D0Ev,_ZThn1428_N8S19941C1D0Ev)();
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZThn2160_N8S19941C1D1Ev,_ZThn1444_N8S19941C1D1Ev)();
extern void ABISELECT(_ZThn2160_N8S19941C1D0Ev,_ZThn1444_N8S19941C1D0Ev)();
extern void _ZN9S19941C173v15Ev();
extern void _ZN8S19941C22v1Ev();
extern void _ZN8S19941C22v2Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
extern void _ZN8S19941C72v3Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C203v16Ev();
extern void ABISELECT(_ZTv0_n120_N8S19941C1D1Ev,_ZTv0_n60_N8S19941C1D1Ev)();
extern void ABISELECT(_ZThn22824_N8S19941C1D1Ev,_ZThn15408_N8S19941C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19941C1D0Ev,_ZTv0_n60_N8S19941C1D0Ev)();
extern void ABISELECT(_ZThn22824_N8S19941C1D0Ev,_ZThn15408_N8S19941C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19941C1D1Ev,_ZTv0_n52_N8S19941C1D1Ev)();
extern void ABISELECT(_ZThn22888_N8S19941C1D1Ev,_ZThn15448_N8S19941C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19941C1D0Ev,_ZTv0_n52_N8S19941C1D0Ev)();
extern void ABISELECT(_ZThn22888_N8S19941C1D0Ev,_ZThn15448_N8S19941C1D0Ev)() __attribute__((weak));
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N8S19941C1D1Ev,_ZTv0_n40_N8S19941C1D1Ev)();
extern void ABISELECT(_ZThn22912_N8S19941C1D1Ev,_ZThn15460_N8S19941C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19941C1D0Ev,_ZTv0_n40_N8S19941C1D0Ev)();
extern void ABISELECT(_ZThn22912_N8S19941C1D0Ev,_ZThn15460_N8S19941C1D0Ev)() __attribute__((weak));
extern void _ZN9S19941C173v15Ev();
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY vtc_S19941C1[] = {
  ABISELECT(25296,17064),
  ABISELECT(23168,15636),
  ABISELECT(22912,15460),
  ABISELECT(22888,15448),
  ABISELECT(22824,15408),
  ABISELECT(22688,15312),
  ABISELECT(22112,14948),
  ABISELECT(14792,10104),
  ABISELECT(12096,8164),
  ABISELECT(15184,10364),
  ABISELECT(14960,10216),
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19941C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19941C1D0Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  ABISELECT(20560,13884),
  ABISELECT(19984,13520),
  ABISELECT(12664,8676),
  ABISELECT(12800,8772),
  ABISELECT(12832,8788),
  ABISELECT(12704,8696),
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn2128_N8S19941C1D1Ev,_ZThn1428_N8S19941C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn2128_N8S19941C1D0Ev,_ZThn1428_N8S19941C1D0Ev),
  ABISELECT(12800,8772),
  ABISELECT(20528,13868),
  ABISELECT(19952,13504),
  ABISELECT(12632,8660),
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  ABISELECT(-2160,-1444),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn2160_N8S19941C1D1Ev,_ZThn1444_N8S19941C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn2160_N8S19941C1D0Ev,_ZThn1444_N8S19941C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
  0,
  0,
  ABISELECT(-12096,-8164),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19941C22v2Ev,
  0,
  ABISELECT(40,20),
  ABISELECT(-14792,-10104),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  0,
  0,
  ABISELECT(-14960,-10216),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  0,
  0,
  0,
  ABISELECT(-15184,-10364),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(-22112,-14948),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-22328,-15096),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  ABISELECT(-7520,-4992),
  ABISELECT(-22352,-15116),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  ABISELECT(-22384,-15132),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-22688,-15312),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  ABISELECT(-22824,-15408),
  0,
  ABISELECT(2472,1656),
  ABISELECT(-7640,-5044),
  ABISELECT(344,228),
  ABISELECT(88,52),
  ABISELECT(-8032,-5304),
  ABISELECT(-7864,-5192),
  ABISELECT(-7992,-5284),
  ABISELECT(-7896,-5208),
  ABISELECT(-136,-96),
  ABISELECT(-712,-460),
  ABISELECT(64,40),
  ABISELECT(-22824,-15408),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN9S19941C203v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19941C1D1Ev,_ZTv0_n60_N8S19941C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19941C1D0Ev,_ZTv0_n60_N8S19941C1D0Ev),
  ABISELECT(-22888,-15448),
  ABISELECT(2408,1616),
  ABISELECT(-7704,-5084),
  ABISELECT(280,188),
  ABISELECT(24,12),
  ABISELECT(-8096,-5344),
  ABISELECT(-7928,-5232),
  ABISELECT(-8056,-5324),
  ABISELECT(-7960,-5248),
  ABISELECT(-200,-136),
  ABISELECT(-776,-500),
  ABISELECT(-22888,-15448),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19941C1D1Ev,_ZTv0_n52_N8S19941C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19941C1D0Ev,_ZTv0_n52_N8S19941C1D0Ev),
  0,
  ABISELECT(-22912,-15460),
  0,
  ABISELECT(-7952,-5244),
  ABISELECT(-224,-148),
  ABISELECT(-800,-512),
  ABISELECT(-8120,-5356),
  ABISELECT(-8080,-5336),
  ABISELECT(-7984,-5260),
  ABISELECT(-22912,-15460),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19941C1D1Ev,_ZTv0_n40_N8S19941C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19941C1D0Ev,_ZTv0_n40_N8S19941C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-7984,-5272),
  ABISELECT(-8208,-5420),
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  ABISELECT(-23168,-15636),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
  ABISELECT(-23312,-15732),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  ABISELECT(-8568,-5664),
  ABISELECT(-8600,-5680),
  ABISELECT(-8696,-5756),
  ABISELECT(-23528,-15880),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  0,
  0,
  0,
  ABISELECT(-25296,-17064),
  (VTBL_ENTRY)&(_ZTI8S19941C1[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S19941C1[];
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__A__8S19941C1[] = {
  ABISELECT(15184,10364),
  ABISELECT(14960,10216),
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C108S19941C9__8S19941C1[] = {
  ABISELECT(14960,10216),
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C119S19941C108S19941C9__8S19941C1[] = {
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C119S19941C108S19941C9__8S19941C1[] = {
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__8S19941C1[] = {
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14568,-9956),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__8S19941C1[] = {
  0,
  0,
  ABISELECT(-14600,-9972),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C108S19941C9__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C108S19941C9__8S19941C1[] = {
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C108S19941C9__8S19941C1[] = {
  0,
  0,
  ABISELECT(-14960,-10216),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C9__A__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C10__8S19941C9__A__8S19941C1[] = {
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__8S19941C9__A__8S19941C1[] = {
  0,
  0,
  ABISELECT(-14960,-10216),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__8S19941C9__A__8S19941C1[] = {
  0,
  0,
  0,
  ABISELECT(-15184,-10364),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C72v3Ev();
extern void _ZN9S19941C19D1Ev();
extern void _ZN9S19941C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C19__8S19941C1[] = {
  ABISELECT(20560,13884),
  ABISELECT(19984,13520),
  ABISELECT(12664,8676),
  ABISELECT(12800,8772),
  ABISELECT(12832,8788),
  ABISELECT(12704,8696),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19941C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C19D0Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C19__A2__8S19941C1[] = {
  ABISELECT(12704,8696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C17D1Ev();
extern void _ZN9S19941C17D0Ev();
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C179S19941C19__8S19941C1[] = {
  ABISELECT(12800,8772),
  ABISELECT(20528,13868),
  ABISELECT(19952,13504),
  ABISELECT(12632,8660),
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C179S19941C19__A1__8S19941C1[] = {
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C179S19941C19__A1__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12768,-8756),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C179S19941C19__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12768,-8756),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C179S19941C19__8S19941C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(-12632,-8660),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C179S19941C19__8S19941C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(-19952,-13504),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C179S19941C19__8S19941C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-20528,-13868),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C179S19941C19__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-20168,-13652),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C179S19941C19__8S19941C1[] = {
  0,
  0,
  ABISELECT(-12800,-8772),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A2__9S19941C179S19941C19__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(-20192,-13672),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C179S19941C19__8S19941C1[] = {
  ABISELECT(-20224,-13688),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C19__8S19941C1[] = {
  0,
  0,
  ABISELECT(-12832,-8788),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZThn32_N9S19941C19D1Ev,_ZThn16_N9S19941C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19941C19D0Ev,_ZThn16_N9S19941C19D0Ev)();
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C19__8S19941C1[] = {
  ABISELECT(12800,8772),
  ABISELECT(20528,13868),
  ABISELECT(19952,13504),
  ABISELECT(12632,8660),
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19941C19D1Ev,_ZThn16_N9S19941C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19941C19D0Ev,_ZThn16_N9S19941C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A1__9S19941C19__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12800,-8772),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C19__8S19941C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(-12664,-8676),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C19__8S19941C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(-19984,-13520),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C19__8S19941C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-20560,-13884),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C19__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-20200,-13668),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A3__9S19941C19__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(-20224,-13688),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C19__8S19941C1[] = {
  ABISELECT(-20256,-13704),
  (VTBL_ENTRY)&(_ZTI9S19941C19[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__8S19941C1[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C8[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C78S19941C8__8S19941C1[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A1__8S19941C1[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__8S19941C1[] = {
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__A1__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C16__A1__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7400,4896),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C16__A1__8S19941C1[] = {
  0,
  0,
  ABISELECT(7368,4880),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A3__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C7[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C16__8S19941C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C16__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7184,4748),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C16__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C16__8S19941C1[] = {
  0,
  0,
  ABISELECT(7152,4732),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__A__9S19941C16__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19941C16[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A2__8S19941C1[] = {
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C6__A2__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7760,5112),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C203v16Ev();
extern void _ZN9S19941C20D1Ev();
extern void _ZN9S19941C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C20__8S19941C1[] = {
  ABISELECT(2472,1656),
  ABISELECT(-7640,-5044),
  ABISELECT(344,228),
  ABISELECT(88,52),
  ABISELECT(-8032,-5304),
  ABISELECT(-7864,-5192),
  ABISELECT(-7992,-5284),
  ABISELECT(-7896,-5208),
  ABISELECT(-136,-96),
  ABISELECT(-712,-460),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C203v16Ev,
  (VTBL_ENTRY)&_ZN9S19941C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C20D0Ev,
};
extern void ABISELECT(_ZTv0_n104_N9S19941C20D1Ev,_ZTv0_n52_N9S19941C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19941C20D1Ev,_ZThn40_N9S19941C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19941C20D0Ev,_ZTv0_n52_N9S19941C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S19941C20D0Ev,_ZThn40_N9S19941C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19941C21__9S19941C20__8S19941C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(2408,1616),
  ABISELECT(-7704,-5084),
  ABISELECT(280,188),
  ABISELECT(24,12),
  ABISELECT(-8096,-5344),
  ABISELECT(-7928,-5232),
  ABISELECT(-8056,-5324),
  ABISELECT(-7960,-5248),
  ABISELECT(-200,-136),
  ABISELECT(-776,-500),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19941C20D1Ev,_ZTv0_n52_N9S19941C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19941C20D0Ev,_ZTv0_n52_N9S19941C20D0Ev),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C20__8S19941C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(712,460),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C20__8S19941C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C20__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7896,5208),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C20__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(496,312),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C20__8S19941C1[] = {
  0,
  0,
  ABISELECT(7864,5192),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A1__9S19941C20__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(472,292),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C20__8S19941C1[] = {
  ABISELECT(440,276),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C20__8S19941C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(8032,5304),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19941C20D1Ev,_ZTv0_n40_N9S19941C20D1Ev)();
extern void ABISELECT(_ZThn88_N9S19941C20D1Ev,_ZThn52_N9S19941C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19941C20D0Ev,_ZTv0_n40_N9S19941C20D0Ev)();
extern void ABISELECT(_ZThn88_N9S19941C20D0Ev,_ZThn52_N9S19941C20D0Ev)() __attribute__((weak));
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C20__8S19941C1[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-7952,-5244),
  ABISELECT(-224,-148),
  ABISELECT(-800,-512),
  ABISELECT(-8120,-5356),
  ABISELECT(-8080,-5336),
  ABISELECT(-7984,-5260),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C20D1Ev,_ZTv0_n40_N9S19941C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C20D0Ev,_ZTv0_n40_N9S19941C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__9S19941C20__8S19941C1[] = {
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-7984,-5272),
  ABISELECT(-8208,-5420),
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  ABISELECT(-344,-228),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C129S19941C108S19941C9__A2__9S19941C20__8S19941C1[] = {
  ABISELECT(-488,-324),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C20__8S19941C1[] = {
  ABISELECT(-8568,-5664),
  ABISELECT(-8600,-5680),
  ABISELECT(-8696,-5756),
  ABISELECT(-704,-472),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__A1__9S19941C20__8S19941C1[] = {
  0,
  0,
  0,
  ABISELECT(7640,5044),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C4__A2__9S19941C20__8S19941C1[] = {
  0,
  0,
  0,
  ABISELECT(-2472,-1656),
  (VTBL_ENTRY)&(_ZTI9S19941C20[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN9S19941C21D1Ev();
extern void _ZN9S19941C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C21__8S19941C1[] = {
  ABISELECT(2408,1616),
  ABISELECT(-7704,-5084),
  ABISELECT(280,188),
  ABISELECT(24,12),
  ABISELECT(-8096,-5344),
  ABISELECT(-7928,-5232),
  ABISELECT(-8056,-5324),
  ABISELECT(-7960,-5248),
  ABISELECT(-200,-136),
  ABISELECT(-776,-500),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C21D0Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C21__8S19941C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(776,500),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__9S19941C21__8S19941C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(200,136),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C21__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7960,5248),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C21__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(560,352),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C21__8S19941C1[] = {
  0,
  0,
  ABISELECT(7928,5232),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A1__9S19941C21__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(536,332),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C21__8S19941C1[] = {
  ABISELECT(504,316),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C21__8S19941C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(8096,5344),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev)();
extern void ABISELECT(_ZThn24_N9S19941C21D1Ev,_ZThn12_N9S19941C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev)();
extern void ABISELECT(_ZThn24_N9S19941C21D0Ev,_ZThn12_N9S19941C21D0Ev)() __attribute__((weak));
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__9S19941C21__8S19941C1[] = {
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-7952,-5244),
  ABISELECT(-224,-148),
  ABISELECT(-800,-512),
  ABISELECT(-8120,-5356),
  ABISELECT(-8080,-5336),
  ABISELECT(-7984,-5260),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__9S19941C21__8S19941C1[] = {
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-7984,-5272),
  ABISELECT(-8208,-5420),
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C129S19941C108S19941C9__A2__9S19941C21__8S19941C1[] = {
  ABISELECT(-424,-284),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C21__8S19941C1[] = {
  ABISELECT(-8568,-5664),
  ABISELECT(-8600,-5680),
  ABISELECT(-8696,-5756),
  ABISELECT(-640,-432),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__A1__9S19941C21__8S19941C1[] = {
  0,
  0,
  0,
  ABISELECT(7704,5084),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C4__A2__9S19941C21__8S19941C1[] = {
  0,
  0,
  0,
  ABISELECT(-2408,-1616),
  (VTBL_ENTRY)&(_ZTI9S19941C21[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C17D1Ev();
extern void _ZN9S19941C17D0Ev();
extern void _ZN9S19941C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C17__A1__8S19941C1[] = {
  ABISELECT(-7952,-5244),
  ABISELECT(-224,-148),
  ABISELECT(-800,-512),
  ABISELECT(-8120,-5356),
  ABISELECT(-8080,-5336),
  ABISELECT(-7984,-5260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19941C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19941C173v15Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C17__A3__8S19941C1[] = {
  ABISELECT(-8080,-5336),
  ABISELECT(-7984,-5260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C17__A3__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7984,5260),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C17__A1__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7984,5260),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C8__9S19941C17__A1__8S19941C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(8120,5356),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
extern void _ZN9S19941C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C16__9S19941C17__A1__8S19941C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(800,512),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19941C163v14Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C6__A1__9S19941C17__A1__8S19941C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C16__9S19941C17__A1__8S19941C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(584,364),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C17__A1__8S19941C1[] = {
  0,
  0,
  ABISELECT(7952,5244),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C79S19941C16__A2__9S19941C17__A1__8S19941C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(560,344),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C16__9S19941C17__A1__8S19941C1[] = {
  ABISELECT(528,328),
  (VTBL_ENTRY)&(_ZTI9S19941C17[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
extern void _ZN8S19941C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C9__A1__8S19941C1[] = {
  ABISELECT(-7984,-5272),
  ABISELECT(-8208,-5420),
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19941C93v13Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
extern void _ZN9S19941C102v8Ev();
extern void _ZN9S19941C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C108S19941C9__A1__8S19941C1[] = {
  ABISELECT(-8208,-5420),
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19941C102v9Ev,
};
extern void _ZN8S19941C62v4Ev();
extern void _ZN9S19941C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C119S19941C108S19941C9__A1__8S19941C1[] = {
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19941C112v5Ev,
};
extern void _ZN8S19941C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C69S19941C119S19941C108S19941C9__A4__8S19941C1[] = {
  ABISELECT(-8336,-5512),
  ABISELECT(-8240,-5436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C62v4Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__A4__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5436),
  (VTBL_ENTRY)&(_ZTI8S19941C6[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__A1__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5436),
  (VTBL_ENTRY)&(_ZTI9S19941C11[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C108S19941C9__A2__8S19941C1[] = {
  ABISELECT(-8568,-5664),
  ABISELECT(-8600,-5680),
  ABISELECT(-8696,-5756),
  0,
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__A2__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8600,5680),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__A2__8S19941C1[] = {
  0,
  0,
  ABISELECT(8568,5664),
  (VTBL_ENTRY)&(_ZTI9S19941C13[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__9S19941C108S19941C9__A1__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5436),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C13__9S19941C108S19941C9__A1__8S19941C1[] = {
  ABISELECT(-8568,-5664),
  ABISELECT(-8600,-5680),
  ABISELECT(-8696,-5756),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__9S19941C108S19941C9__A1__8S19941C1[] = {
  0,
  0,
  ABISELECT(8208,5420),
  (VTBL_ENTRY)&(_ZTI9S19941C10[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C7__8S19941C9__A1__8S19941C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5436),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19941C139S19941C10__8S19941C9__A1__8S19941C1[] = {
  ABISELECT(-8568,-5664),
  ABISELECT(-8600,-5680),
  ABISELECT(-8696,-5756),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
};
extern void _ZN9S19941C122v6Ev();
extern void _ZN9S19941C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19941C12__A1__8S19941C9__A1__8S19941C1[] = {
  0,
  0,
  ABISELECT(8208,5420),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN9S19941C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19941C122v7Ev,
};
extern void _ZN8S19941C43v10Ev();
extern void _ZN8S19941C43v11Ev();
extern void _ZN8S19941C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19941C49S19941C15__8S19941C9__A1__8S19941C1[] = {
  0,
  0,
  0,
  ABISELECT(7984,5272),
  (VTBL_ENTRY)&(_ZTI8S19941C9[0]),
  (VTBL_ENTRY)&_ZN8S19941C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19941C43v12Ev,
};
static  VTT_ENTRY vtt_S19941C1[] = {
  {&(_ZTV8S19941C1[15]),  15,203},
  {&(_tg__ZTV8S19941C9__A__8S19941C1[6]),  6,11},
  {&(_tg__ZTV9S19941C108S19941C9__8S19941C1[5]),  5,9},
  {&(_tg__ZTV9S19941C119S19941C108S19941C9__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C119S19941C108S19941C9__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__8S19941C1[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C7__9S19941C108S19941C9__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C108S19941C9__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C108S19941C9__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C7__8S19941C9__A__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C10__8S19941C9__A__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__8S19941C9__A__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C49S19941C15__8S19941C9__A__8S19941C1[5]),  5,8},
  {&(_tg__ZTV9S19941C19__8S19941C1[8]),  8,11},
  {&(_tg__ZTV8S19941C79S19941C19__A2__8S19941C1[3]),  3,4},
  {&(_tg__ZTV9S19941C179S19941C19__8S19941C1[8]),  8,12},
  {&(_tg__ZTV8S19941C69S19941C179S19941C19__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C179S19941C19__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C179S19941C19__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C8__9S19941C179S19941C19__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C16__9S19941C179S19941C19__8S19941C1[13]),  13,16},
  {&(_tg__ZTV8S19941C6__A1__9S19941C179S19941C19__8S19941C1[5]),  5,6},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C179S19941C19__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C179S19941C19__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A2__9S19941C179S19941C19__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C179S19941C19__8S19941C1[2]),  2,5},
  {&(_tg__ZTV9S19941C12__9S19941C19__8S19941C1[4]),  4,6},
  {&(_tg__ZTV9S19941C17__9S19941C19__8S19941C1[8]),  8,12},
  {&(_tg__ZTV8S19941C7__A1__9S19941C19__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C8__9S19941C19__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C16__9S19941C19__8S19941C1[13]),  13,16},
  {&(_tg__ZTV8S19941C6__A1__9S19941C19__8S19941C1[5]),  5,6},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C19__8S19941C1[5]),  5,5},
  {&(_tg__ZTV8S19941C79S19941C16__A3__9S19941C19__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C19__8S19941C1[2]),  2,5},
  {&(_ZTV8S19941C1[58]),  58,203},
  {&(_ZTV8S19941C1[64]),  64,203},
  {&(_ZTV8S19941C1[69]),  69,203},
  {&(_ZTV8S19941C1[31]),  31,203},
  {&(_ZTV8S19941C1[74]),  74,203},
  {&(_ZTV8S19941C1[81]),  81,203},
  {&(_ZTV8S19941C1[39]),  39,203},
  {&(_ZTV8S19941C1[50]),  50,203},
  {&(_ZTV8S19941C1[97]),  97,203},
  {&(_ZTV8S19941C1[119]),  119,203},
  {&(_ZTV8S19941C1[105]),  105,203},
  {&(_ZTV8S19941C1[108]),  108,203},
  {&(_ZTV8S19941C1[111]),  111,203},
  {&(_ZTV8S19941C1[135]),  135,203},
  {&(_ZTV8S19941C1[151]),  151,203},
  {&(_ZTV8S19941C1[164]),  164,203},
  {&(_ZTV8S19941C1[181]),  181,203},
  {&(_ZTV8S19941C1[188]),  188,203},
  {&(_ZTV8S19941C1[195]),  195,203},
  {&(_ZTV8S19941C1[200]),  200,203},
  {&(_tg__ZTV8S19941C8__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C78S19941C8__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C7__A1__8S19941C1[3]),  3,4},
  {&(_tg__ZTV9S19941C16__8S19941C1[6]),  6,9},
  {&(_tg__ZTV9S19941C139S19941C16__A1__8S19941C1[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C16__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C16__A1__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A3__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C6__9S19941C16__8S19941C1[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C16__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C16__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C16__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C7__A__9S19941C16__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C6__A2__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C6__A2__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C20__8S19941C1[13]),  13,16},
  {&(_tg__ZTV9S19941C21__9S19941C20__8S19941C1[13]),  13,15},
  {&(_tg__ZTV9S19941C16__9S19941C20__8S19941C1[13]),  13,16},
  {&(_tg__ZTV8S19941C6__9S19941C20__8S19941C1[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C20__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C20__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C20__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A1__9S19941C20__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C20__8S19941C1[2]),  2,5},
  {&(_tg__ZTV8S19941C8__9S19941C20__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C17__9S19941C20__8S19941C1[11]),  11,15},
  {&(_tg__ZTV8S19941C9__9S19941C20__8S19941C1[13]),  13,18},
  {&(_tg__ZTV9S19941C129S19941C108S19941C9__A2__9S19941C20__8S19941C1[2]),  2,4},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C20__8S19941C1[5]),  5,5},
  {&(_tg__ZTV8S19941C49S19941C15__A1__9S19941C20__8S19941C1[5]),  5,8},
  {&(_tg__ZTV8S19941C4__A2__9S19941C20__8S19941C1[5]),  5,8},
  {&(_tg__ZTV9S19941C21__8S19941C1[12]),  12,14},
  {&(_tg__ZTV9S19941C16__9S19941C21__8S19941C1[13]),  13,16},
  {&(_tg__ZTV8S19941C6__9S19941C21__8S19941C1[5]),  5,6},
  {&(_tg__ZTV8S19941C7__9S19941C21__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C21__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C21__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A1__9S19941C21__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C21__8S19941C1[2]),  2,5},
  {&(_tg__ZTV8S19941C8__9S19941C21__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C17__9S19941C21__8S19941C1[11]),  11,15},
  {&(_tg__ZTV8S19941C9__9S19941C21__8S19941C1[13]),  13,18},
  {&(_tg__ZTV9S19941C129S19941C108S19941C9__A2__9S19941C21__8S19941C1[2]),  2,4},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__A1__9S19941C21__8S19941C1[5]),  5,5},
  {&(_tg__ZTV8S19941C49S19941C15__A1__9S19941C21__8S19941C1[5]),  5,8},
  {&(_tg__ZTV8S19941C4__A2__9S19941C21__8S19941C1[5]),  5,8},
  {&(_tg__ZTV9S19941C17__A1__8S19941C1[8]),  8,12},
  {&(_tg__ZTV8S19941C69S19941C17__A3__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C17__A3__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C17__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C8__9S19941C17__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C16__9S19941C17__A1__8S19941C1[13]),  13,16},
  {&(_tg__ZTV8S19941C6__A1__9S19941C17__A1__8S19941C1[5]),  5,6},
  {&(_tg__ZTV9S19941C139S19941C16__9S19941C17__A1__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C17__A1__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C79S19941C16__A2__9S19941C17__A1__8S19941C1[3]),  3,4},
  {&(_tg__ZTV8S19941C49S19941C16__9S19941C17__A1__8S19941C1[2]),  2,5},
  {&(_tg__ZTV8S19941C9__A1__8S19941C1[6]),  6,11},
  {&(_tg__ZTV9S19941C108S19941C9__A1__8S19941C1[5]),  5,9},
  {&(_tg__ZTV9S19941C119S19941C108S19941C9__A1__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C69S19941C119S19941C108S19941C9__A4__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__8S19941C69S19941C119S19941C108S19941C9__A4__8S19941C1[4]),  4,5},
  {&(_tg__ZTV8S19941C7__9S19941C119S19941C108S19941C9__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C108S19941C9__A2__8S19941C1[5]),  5,5},
  {&(_tg__ZTV8S19941C7__9S19941C139S19941C108S19941C9__A2__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C12__9S19941C139S19941C108S19941C9__A2__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C7__9S19941C108S19941C9__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C13__9S19941C108S19941C9__A1__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__9S19941C108S19941C9__A1__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C7__8S19941C9__A1__8S19941C1[4]),  4,5},
  {&(_tg__ZTV9S19941C139S19941C10__8S19941C9__A1__8S19941C1[5]),  5,5},
  {&(_tg__ZTV9S19941C12__A1__8S19941C9__A1__8S19941C1[4]),  4,6},
  {&(_tg__ZTV8S19941C49S19941C15__8S19941C9__A1__8S19941C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19941C1[];
extern  VTBL_ENTRY _ZTV8S19941C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19941C1[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C21D0Ev,_ZTv0_n40_N9S19941C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19941C21D0Ev,_ZThn12_N9S19941C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C21D1Ev,_ZTv0_n40_N9S19941C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19941C21D1Ev,_ZThn12_N9S19941C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C20D0Ev,_ZTv0_n40_N9S19941C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19941C20D0Ev,_ZThn52_N9S19941C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19941C20D1Ev,_ZTv0_n40_N9S19941C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19941C20D1Ev,_ZThn52_N9S19941C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19941C20D0Ev,_ZTv0_n52_N9S19941C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19941C20D0Ev,_ZThn40_N9S19941C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19941C20D1Ev,_ZTv0_n52_N9S19941C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19941C20D1Ev,_ZThn40_N9S19941C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19941C1D0Ev,_ZTv0_n40_N8S19941C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22912_N8S19941C1D0Ev,_ZThn15460_N8S19941C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19941C1D1Ev,_ZTv0_n40_N8S19941C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22912_N8S19941C1D1Ev,_ZThn15460_N8S19941C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19941C1D0Ev,_ZTv0_n52_N8S19941C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22888_N8S19941C1D0Ev,_ZThn15448_N8S19941C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19941C1D1Ev,_ZTv0_n52_N8S19941C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22888_N8S19941C1D1Ev,_ZThn15448_N8S19941C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19941C1D0Ev,_ZTv0_n60_N8S19941C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22824_N8S19941C1D0Ev,_ZThn15408_N8S19941C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19941C1D1Ev,_ZTv0_n60_N8S19941C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22824_N8S19941C1D1Ev,_ZThn15408_N8S19941C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19941C1 = {  "S19941C1", // class name
  bases_S19941C1, 46,
  &(vtc_S19941C1[0]), // expected_vtbl_contents
  &(vtt_S19941C1[0]), // expected_vtt_contents
  ABISELECT(25536,17204), // object size
  NSPAIRA(_ZTI8S19941C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19941C1),203, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19941C1),132, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C4  {
  void *s19940c4f0[2];
  __tsi64 s19940c4f1;
  void *s19940c4f2[8];
  int s19940c4f3;
  void *s19940c4f4;
  int s19940c4f5;
  ::S20636C14 s19940c4f6[6];
  char s19940c4f7;
  virtual void  v10(); // _ZN8S19940C43v10Ev
  virtual void  v11(); // _ZN8S19940C43v11Ev
  virtual void  v12(); // _ZN8S19940C43v12Ev
  ~S19940C4(); // tgen
  S19940C4(); // tgen
};
//SIG(-1 S19940C4) C1{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU2{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc}


void  S19940C4 ::v10(){vfunc_called(this, "_ZN8S19940C43v10Ev");}
void  S19940C4 ::v11(){vfunc_called(this, "_ZN8S19940C43v11Ev");}
void  S19940C4 ::v12(){vfunc_called(this, "_ZN8S19940C43v12Ev");}
S19940C4 ::~S19940C4(){ note_dtor("S19940C4", this);} // tgen
S19940C4 ::S19940C4(){ note_ctor("S19940C4", this);} // tgen

static void Test_S19940C4()
{
  extern Class_Descriptor cd_S19940C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,36)];
    init_test(&cd_S19940C4, buf);
    S19940C4 *dp, &lv = *(dp=new (buf) S19940C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,140), "sizeof(S19940C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C4)");
    check_field_offset(lv, s19940c4f0, ABISELECT(8,4), "S19940C4.s19940c4f0");
    check_field_offset(lv, s19940c4f1, ABISELECT(24,12), "S19940C4.s19940c4f1");
    check_field_offset(lv, s19940c4f2, ABISELECT(32,20), "S19940C4.s19940c4f2");
    check_field_offset(lv, s19940c4f3, ABISELECT(96,52), "S19940C4.s19940c4f3");
    check_field_offset(lv, s19940c4f4, ABISELECT(104,56), "S19940C4.s19940c4f4");
    check_field_offset(lv, s19940c4f5, ABISELECT(112,60), "S19940C4.s19940c4f5");
    check_field_offset(lv, s19940c4f6, ABISELECT(128,64), "S19940C4.s19940c4f6");
    check_field_offset(lv, s19940c4f7, ABISELECT(224,136), "S19940C4.s19940c4f7");
    test_class_info(&lv, &cd_S19940C4);
    dp->~S19940C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C4(Test_S19940C4, "S19940C4", ABISELECT(240,140));

#else // __cplusplus

extern void _ZN8S19940C4C1Ev();
extern void _ZN8S19940C4D1Ev();
Name_Map name_map_S19940C4[] = {
  NSPAIR(_ZN8S19940C4C1Ev),
  NSPAIR(_ZN8S19940C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19940C4[];
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY vtc_S19940C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C4[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
Class_Descriptor cd_S19940C4 = {  "S19940C4", // class name
  0,0,//no base classes
  &(vtc_S19940C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,140), // object size
  NSPAIRA(_ZTI8S19940C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19940C4),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  S19940C7  : virtual S20636C3 {
  char s19940c7f0;
  int s19940c7f1;
  char s19940c7f2:8;
  virtual void  v3(); // _ZN8S19940C72v3Ev
  ~S19940C7(); // tgen
  S19940C7(); // tgen
};
//SIG(-1 S19940C7) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8}


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

static void Test_S19940C7()
{
  extern Class_Descriptor cd_S19940C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S19940C7, buf);
    S19940C7 *dp, &lv = *(dp=new (buf) S19940C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19940C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C7)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(32,16), "S19940C7");
    check_field_offset(lv, s19940c7f0, ABISELECT(8,4), "S19940C7.s19940c7f0");
    check_field_offset(lv, s19940c7f1, ABISELECT(12,8), "S19940C7.s19940c7f1");
    set_bf_and_test(lv, s19940c7f2, ABISELECT(16,12), 0, 8, 1, "S19940C7");
    set_bf_and_test(lv, s19940c7f2, ABISELECT(16,12), 0, 8, hide_sll(1LL<<7), "S19940C7");
    test_class_info(&lv, &cd_S19940C7);
    dp->~S19940C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C7(Test_S19940C7, "S19940C7", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19940C7C1Ev();
extern void _ZN8S19940C7D1Ev();
Name_Map name_map_S19940C7[] = {
  NSPAIR(_ZN8S19940C7C1Ev),
  NSPAIR(_ZN8S19940C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S19940C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19940C7[];
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY vtc_S19940C7[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19940C7[];
static  VTT_ENTRY vtt_S19940C7[] = {
  {&(_ZTV8S19940C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
Class_Descriptor cd_S19940C7 = {  "S19940C7", // class name
  bases_S19940C7, 1,
  &(vtc_S19940C7[0]), // expected_vtbl_contents
  &(vtt_S19940C7[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19940C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19940C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19940C7),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  S19940C6  : S20636C3 , virtual S19940C7 {
  short s19940c6f0:8;
  void *s19940c6f1;
  char  :0;
  char s19940c6f3[4];
  int s19940c6f4;
  virtual void  v4(); // _ZN8S19940C62v4Ev
  ~S19940C6(); // tgen
  S19940C6(); // tgen
};
//SIG(-1 S19940C6) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v2 Fc Fi Fc:8} v1 Fs:8 Fp Fc:0 Fc[4] Fi}


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

static void Test_S19940C6()
{
  extern Class_Descriptor cd_S19940C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,48)];
    init_test(&cd_S19940C6, buf);
    S19940C6 *dp, &lv = *(dp=new (buf) S19940C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,188), "sizeof(S19940C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C6)");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S19940C6");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(160,112), "S19940C6");
    check_base_class_offset(lv, (S19940C7*), ABISELECT(136,96), "S19940C6");
    set_bf_and_test(lv, s19940c6f0, ABISELECT(112,80), 0, 8, 1, "S19940C6");
    set_bf_and_test(lv, s19940c6f0, ABISELECT(112,80), 0, 8, hide_sll(1LL<<7), "S19940C6");
    check_field_offset(lv, s19940c6f1, ABISELECT(120,84), "S19940C6.s19940c6f1");
    check_field_offset(lv, s19940c6f3, ABISELECT(128,88), "S19940C6.s19940c6f3");
    check_field_offset(lv, s19940c6f4, ABISELECT(132,92), "S19940C6.s19940c6f4");
    test_class_info(&lv, &cd_S19940C6);
    dp->~S19940C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C6(Test_S19940C6, "S19940C6", ABISELECT(256,188));

#else // __cplusplus

extern void _ZN8S19940C6C1Ev();
extern void _ZN8S19940C6D1Ev();
Name_Map name_map_S19940C6[] = {
  NSPAIR(_ZN8S19940C6C1Ev),
  NSPAIR(_ZN8S19940C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
static Base_Class bases_S19940C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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_S20636C3,    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, 1},
  {&cd_S19940C7,    ABISELECT(136,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19940C6[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY vtc_S19940C6[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19940C6[];
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C6[] = {
  {&(_ZTV8S19940C6[4]),  4,10},
  {&(_ZTV8S19940C6[9]),  9,10},
  {&(_tg__ZTV8S19940C7__8S19940C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
Class_Descriptor cd_S19940C6 = {  "S19940C6", // class name
  bases_S19940C6, 3,
  &(vtc_S19940C6[0]), // expected_vtbl_contents
  &(vtt_S19940C6[0]), // expected_vtt_contents
  ABISELECT(256,188), // object size
  NSPAIRA(_ZTI8S19940C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19940C6),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19940C6),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C2  {
  int s19940c2f0;
  char s19940c2f1;
  ::S20636C3 s19940c2f2;
  int s19940c2f3;
  void *s19940c2f4;
  ::S19940C4 s19940c2f5;
  int s19940c2f6;
  ::S19940C6 s19940c2f7[9];
  __tsi64 s19940c2f8;
  virtual void  v1(); // _ZN8S19940C22v1Ev
  virtual void  v2(); // _ZN8S19940C22v2Ev
  ~S19940C2(); // tgen
  S19940C2(); // tgen
};
//SIG(-1 S19940C2) C1{ v1 v2 Fi Fc FC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} Fi Fp FC3{ v3 v4 v5 Fp[2] FL Fp[8] Fi Fp Fi FU4{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} Fi FC5{ BC2 VBC6{ VBC2 v7 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL}


void  S19940C2 ::v1(){vfunc_called(this, "_ZN8S19940C22v1Ev");}
void  S19940C2 ::v2(){vfunc_called(this, "_ZN8S19940C22v2Ev");}
S19940C2 ::~S19940C2(){ note_dtor("S19940C2", this);} // tgen
S19940C2 ::S19940C2(){ note_ctor("S19940C2", this);} // tgen

static void Test_S19940C2()
{
  extern Class_Descriptor cd_S19940C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(170,486)];
    init_test(&cd_S19940C2, buf);
    S19940C2 *dp, &lv = *(dp=new (buf) S19940C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2704,1940), "sizeof(S19940C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C2)");
    check_field_offset(lv, s19940c2f0, ABISELECT(8,4), "S19940C2.s19940c2f0");
    check_field_offset(lv, s19940c2f1, ABISELECT(12,8), "S19940C2.s19940c2f1");
    check_field_offset(lv, s19940c2f2, ABISELECT(16,12), "S19940C2.s19940c2f2");
    check_field_offset(lv, s19940c2f3, ABISELECT(112,88), "S19940C2.s19940c2f3");
    check_field_offset(lv, s19940c2f4, ABISELECT(120,92), "S19940C2.s19940c2f4");
    check_field_offset(lv, s19940c2f5, ABISELECT(128,96), "S19940C2.s19940c2f5");
    check_field_offset(lv, s19940c2f6, ABISELECT(368,236), "S19940C2.s19940c2f6");
    check_field_offset(lv, s19940c2f7, ABISELECT(384,240), "S19940C2.s19940c2f7");
    check_field_offset(lv, s19940c2f8, ABISELECT(2688,1932), "S19940C2.s19940c2f8");
    test_class_info(&lv, &cd_S19940C2);
    dp->~S19940C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C2(Test_S19940C2, "S19940C2", ABISELECT(2704,1940));

#else // __cplusplus

extern void _ZN8S19940C2C1Ev();
extern void _ZN8S19940C2D1Ev();
Name_Map name_map_S19940C2[] = {
  NSPAIR(_ZN8S19940C2C1Ev),
  NSPAIR(_ZN8S19940C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19940C2[];
extern void _ZN8S19940C22v1Ev();
extern void _ZN8S19940C22v2Ev();
static  VTBL_ENTRY vtc_S19940C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C2[0]),
  (VTBL_ENTRY)&_ZN8S19940C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19940C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19940C2[];
extern  VTBL_ENTRY _ZTV8S19940C2[];
Class_Descriptor cd_S19940C2 = {  "S19940C2", // class name
  0,0,//no base classes
  &(vtc_S19940C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2704,1940), // object size
  NSPAIRA(_ZTI8S19940C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19940C2),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  S19940C8  : S19940C7 {
  void *s19940c8f0;
  ~S19940C8(); // tgen
  S19940C8(); // tgen
};
//SIG(-1 S19940C8) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} Fp}


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

static void Test_S19940C8()
{
  extern Class_Descriptor cd_S19940C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,25)];
    init_test(&cd_S19940C8, buf);
    S19940C8 *dp, &lv = *(dp=new (buf) S19940C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S19940C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C8)");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(32,20), "S19940C8");
    check_base_class_offset(lv, (S19940C7*), 0, "S19940C8");
    check_field_offset(lv, s19940c8f0, ABISELECT(24,16), "S19940C8.s19940c8f0");
    test_class_info(&lv, &cd_S19940C8);
    dp->~S19940C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C8(Test_S19940C8, "S19940C8", ABISELECT(128,96));

#else // __cplusplus

extern void _ZN8S19940C8C1Ev();
extern void _ZN8S19940C8D1Ev();
Name_Map name_map_S19940C8[] = {
  NSPAIR(_ZN8S19940C8C1Ev),
  NSPAIR(_ZN8S19940C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
static Base_Class bases_S19940C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19940C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19940C8[];
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY vtc_S19940C8[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C8[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S19940C8[];
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C8[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C8[] = {
  {&(_ZTV8S19940C8[3]),  3,4},
  {&(_tg__ZTV8S19940C7__8S19940C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19940C8[];
extern  VTBL_ENTRY _ZTV8S19940C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C8[];
Class_Descriptor cd_S19940C8 = {  "S19940C8", // class name
  bases_S19940C8, 2,
  &(vtc_S19940C8[0]), // expected_vtbl_contents
  &(vtt_S19940C8[0]), // expected_vtt_contents
  ABISELECT(128,96), // object size
  NSPAIRA(_ZTI8S19940C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19940C8),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19940C8),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  S19940C11  : virtual S20636C3 , S19940C6 {
  virtual void  v5(); // _ZN9S19940C112v5Ev
  ~S19940C11(); // tgen
  S19940C11(); // tgen
};
//SIG(-1 S19940C11) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ BC2 VBC4{ VBC2 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v1}


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

static void Test_S19940C11()
{
  extern Class_Descriptor cd_S19940C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,48)];
    init_test(&cd_S19940C11, buf);
    S19940C11 *dp, &lv = *(dp=new (buf) S19940C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,188), "sizeof(S19940C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C11)");
    /*is_ambiguous_... S19940C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S19940C11");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(144,96), "S19940C11");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(16,4), "S19940C11");
    check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(240,172), "S19940C11");
    check_base_class_offset(lv, (S19940C6*), 0, "S19940C11");
    test_class_info(&lv, &cd_S19940C11);
    dp->~S19940C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C11(Test_S19940C11, "S19940C11", ABISELECT(272,188));

#else // __cplusplus

extern void _ZN9S19940C11C1Ev();
extern void _ZN9S19940C11D1Ev();
Name_Map name_map_S19940C11[] = {
  NSPAIR(_ZN9S19940C11C1Ev),
  NSPAIR(_ZN9S19940C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
static Base_Class bases_S19940C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(240,172), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19940C6,    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 _ZTI9S19940C11[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY vtc_S19940C11[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern VTBL_ENTRY _ZTV9S19940C11[];
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C11[] = {
  ABISELECT(144,96),
  ABISELECT(240,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__9S19940C11[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C11[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C11[] = {
  {&(_ZTV9S19940C11[4]),  4,11},
  {&(_tg__ZTV8S19940C6__9S19940C11[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__9S19940C11[4]),  4,5},
  {&(_ZTV9S19940C11[10]),  10,11},
  {&(_tg__ZTV8S19940C7__9S19940C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
Class_Descriptor cd_S19940C11 = {  "S19940C11", // class name
  bases_S19940C11, 4,
  &(vtc_S19940C11[0]), // expected_vtbl_contents
  &(vtt_S19940C11[0]), // expected_vtt_contents
  ABISELECT(272,188), // object size
  NSPAIRA(_ZTI9S19940C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19940C11),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C12  : S20636C3 {
  int s19940c12f0;
  int s19940c12f1;
  int s19940c12f2;
  char s19940c12f3;
  char s19940c12f4;
  char s19940c12f5[5];
  char s19940c12f6;
  char s19940c12f7[7];
  char s19940c12f8:8;
  void *s19940c12f9[7];
  int s19940c12f10;
  __tsi64 s19940c12f11;
  virtual void  v6(); // _ZN9S19940C122v6Ev
  virtual void  v7(); // _ZN9S19940C122v7Ev
  ~S19940C12(); // tgen
  S19940C12(); // tgen
};
//SIG(-1 S19940C12) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 v2 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL}


void  S19940C12 ::v6(){vfunc_called(this, "_ZN9S19940C122v6Ev");}
void  S19940C12 ::v7(){vfunc_called(this, "_ZN9S19940C122v7Ev");}
S19940C12 ::~S19940C12(){ note_dtor("S19940C12", this);} // tgen
S19940C12 ::S19940C12(){ note_ctor("S19940C12", this);} // tgen

static void Test_S19940C12()
{
  extern Class_Descriptor cd_S19940C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,38)];
    init_test(&cd_S19940C12, buf);
    S19940C12 *dp, &lv = *(dp=new (buf) S19940C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S19940C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C12)");
    check_base_class_offset(lv, (S20636C3*), ABISELECT(16,4), "S19940C12");
    check_field_offset(lv, s19940c12f0, ABISELECT(112,80), "S19940C12.s19940c12f0");
    check_field_offset(lv, s19940c12f1, ABISELECT(116,84), "S19940C12.s19940c12f1");
    check_field_offset(lv, s19940c12f2, ABISELECT(120,88), "S19940C12.s19940c12f2");
    check_field_offset(lv, s19940c12f3, ABISELECT(124,92), "S19940C12.s19940c12f3");
    check_field_offset(lv, s19940c12f4, ABISELECT(125,93), "S19940C12.s19940c12f4");
    check_field_offset(lv, s19940c12f5, ABISELECT(126,94), "S19940C12.s19940c12f5");
    check_field_offset(lv, s19940c12f6, ABISELECT(131,99), "S19940C12.s19940c12f6");
    check_field_offset(lv, s19940c12f7, ABISELECT(132,100), "S19940C12.s19940c12f7");
    set_bf_and_test(lv, s19940c12f8, ABISELECT(139,107), 0, 8, 1, "S19940C12");
    set_bf_and_test(lv, s19940c12f8, ABISELECT(139,107), 0, 8, hide_sll(1LL<<7), "S19940C12");
    check_field_offset(lv, s19940c12f9, ABISELECT(144,108), "S19940C12.s19940c12f9");
    check_field_offset(lv, s19940c12f10, ABISELECT(200,136), "S19940C12.s19940c12f10");
    check_field_offset(lv, s19940c12f11, ABISELECT(208,140), "S19940C12.s19940c12f11");
    test_class_info(&lv, &cd_S19940C12);
    dp->~S19940C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C12(Test_S19940C12, "S19940C12", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN9S19940C12C1Ev();
extern void _ZN9S19940C12D1Ev();
Name_Map name_map_S19940C12[] = {
  NSPAIR(_ZN9S19940C12C1Ev),
  NSPAIR(_ZN9S19940C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S19940C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    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 _ZTI9S19940C12[];
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY vtc_S19940C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C12[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
Class_Descriptor cd_S19940C12 = {  "S19940C12", // class name
  bases_S19940C12, 1,
  &(vtc_S19940C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI9S19940C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19940C12),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  S19940C13  : virtual S20636C3 , virtual S19940C7 , virtual S19940C12 {
  char s19940c13f0;
  int s19940c13f1;
  ::S20636C12_nt s19940c13f2;
  char s19940c13f3;
  int s19940c13f4;
  ~S19940C13(); // tgen
  S19940C13(); // tgen
};
//SIG(-1 S19940C13) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC3{ VBC2 v1 Fc Fi Fc:8} VBC4{ BC2 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} Fc Fi FU5{ m} Fc Fi}


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

static void Test_S19940C13()
{
  extern Class_Descriptor cd_S19940C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,66)];
    init_test(&cd_S19940C13, buf);
    S19940C13 *dp, &lv = *(dp=new (buf) S19940C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,260), "sizeof(S19940C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C13)");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(32,20), "S19940C13");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(32,20), "S19940C13");
    check_base_class_offset(lv, (S19940C7*), ABISELECT(128,96), "S19940C13");
    check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(176,116), "S19940C13");
    check_base_class_offset(lv, (S19940C12*), ABISELECT(160,112), "S19940C13");
    check_field_offset(lv, s19940c13f0, ABISELECT(8,4), "S19940C13.s19940c13f0");
    check_field_offset(lv, s19940c13f1, ABISELECT(12,8), "S19940C13.s19940c13f1");
    check_field_offset(lv, s19940c13f2, ABISELECT(16,12), "S19940C13.s19940c13f2");
    check_field_offset(lv, s19940c13f3, ABISELECT(17,13), "S19940C13.s19940c13f3");
    check_field_offset(lv, s19940c13f4, ABISELECT(20,16), "S19940C13.s19940c13f4");
    test_class_info(&lv, &cd_S19940C13);
    dp->~S19940C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C13(Test_S19940C13, "S19940C13", ABISELECT(384,260));

#else // __cplusplus

extern void _ZN9S19940C13C1Ev();
extern void _ZN9S19940C13D1Ev();
Name_Map name_map_S19940C13[] = {
  NSPAIR(_ZN9S19940C13C1Ev),
  NSPAIR(_ZN9S19940C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
static Base_Class bases_S19940C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19940C7,    ABISELECT(128,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(160,112), //bcp->offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C13[];
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY vtc_S19940C13[] = {
  ABISELECT(160,112),
  ABISELECT(128,96),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19940C13[];
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C13[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C13[] = {
  {&(_ZTV9S19940C13[5]),  5,16},
  {&(_ZTV9S19940C13[9]),  9,16},
  {&(_ZTV9S19940C13[14]),  14,16},
  {&(_tg__ZTV8S19940C7__9S19940C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
Class_Descriptor cd_S19940C13 = {  "S19940C13", // class name
  bases_S19940C13, 4,
  &(vtc_S19940C13[0]), // expected_vtbl_contents
  &(vtt_S19940C13[0]), // expected_vtt_contents
  ABISELECT(384,260), // object size
  NSPAIRA(_ZTI9S19940C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19940C13),16, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C13),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  S19940C10  : virtual S20636C3 , S19940C11 , S19940C12 , S19940C13 {
  int s19940c10f0[4];
  virtual void  v8(); // _ZN9S19940C102v8Ev
  virtual void  v9(); // _ZN9S19940C102v9Ev
  ~S19940C10(); // tgen
  S19940C10(); // tgen
};
//SIG(-1 S19940C10) C1{ VBC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC3{ VBC2 BC4{ BC2 VBC5{ VBC2 v3 Fc Fi Fc:8} v4 Fs:8 Fp Fc:0 Fc[4] Fi} v5} BC6{ BC2 v6 v7 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC2 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} v1 v2 Fi[4]}


void  S19940C10 ::v8(){vfunc_called(this, "_ZN9S19940C102v8Ev");}
void  S19940C10 ::v9(){vfunc_called(this, "_ZN9S19940C102v9Ev");}
S19940C10 ::~S19940C10(){ note_dtor("S19940C10", this);} // tgen
S19940C10 ::S19940C10(){ note_ctor("S19940C10", this);} // tgen

static void Test_S19940C10()
{
  extern Class_Descriptor cd_S19940C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,131)];
    init_test(&cd_S19940C10, buf);
    S19940C10 *dp, &lv = *(dp=new (buf) S19940C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,520), "sizeof(S19940C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C10)");
    /*is_ambiguous_... S19940C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(400,280), "S19940C10");
    /*is_ambiguous_... S19940C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C11*), ABISELECT(400,280), "S19940C10");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(400,280), "S19940C10");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*), ABISELECT(400,280), "S19940C10");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C11*), ABISELECT(16,4), "S19940C10");
    check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C11*), ABISELECT(496,356), "S19940C10");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*), ABISELECT(496,356), "S19940C10");
    check_base_class_offset(lv, (S19940C6*)(S19940C11*), 0, "S19940C10");
    check_base_class_offset(lv, (S19940C11*), 0, "S19940C10");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(160,100), "S19940C10");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*), ABISELECT(144,96), "S19940C10");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(544,376), "S19940C10");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*), ABISELECT(528,372), "S19940C10");
    check_base_class_offset(lv, (S19940C13*), ABISELECT(360,244), "S19940C10");
    check_field_offset(lv, s19940c10f0, ABISELECT(384,264), "S19940C10.s19940c10f0");
    test_class_info(&lv, &cd_S19940C10);
    dp->~S19940C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C10(Test_S19940C10, "S19940C10", ABISELECT(752,520));

#else // __cplusplus

extern void _ZN9S19940C10C1Ev();
extern void _ZN9S19940C10D1Ev();
Name_Map name_map_S19940C10[] = {
  NSPAIR(_ZN9S19940C10C1Ev),
  NSPAIR(_ZN9S19940C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C11;
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
static Base_Class bases_S19940C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(400,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(496,356), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19940C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19940C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(144,96), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(544,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(528,372), //bcp->offset
    23, //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
    9, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(360,244), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C10[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY vtc_S19940C10[] = {
  ABISELECT(528,372),
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-528,-372),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19940C10[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C11__9S19940C10[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C11__9S19940C10[] = {
  ABISELECT(400,280),
  ABISELECT(496,356),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C11__9S19940C10[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C11__9S19940C10[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C10[] = {
  ABISELECT(168,128),
  ABISELECT(136,112),
  ABISELECT(40,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C13__9S19940C10[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C13__9S19940C10[] = {
  0,
  0,
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C10[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C10[] = {
  {&(_ZTV9S19940C10[5]),  5,29},
  {&(_tg__ZTV9S19940C11__9S19940C10[4]),  4,6},
  {&(_tg__ZTV8S19940C69S19940C11__9S19940C10[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C11__9S19940C10[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C11__9S19940C10[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C10[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C13__9S19940C10[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C13__9S19940C10[4]),  4,6},
  {&(_ZTV9S19940C10[22]),  22,29},
  {&(_ZTV9S19940C10[18]),  18,29},
  {&(_ZTV9S19940C10[27]),  27,29},
  {&(_tg__ZTV8S19940C7__9S19940C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19940C10[];
extern  VTBL_ENTRY _ZTV9S19940C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C10[];
Class_Descriptor cd_S19940C10 = {  "S19940C10", // class name
  bases_S19940C10, 10,
  &(vtc_S19940C10[0]), // expected_vtbl_contents
  &(vtt_S19940C10[0]), // expected_vtt_contents
  ABISELECT(752,520), // object size
  NSPAIRA(_ZTI9S19940C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19940C10),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C10),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C16  : virtual S19940C6 , S19940C12 , S19940C13 , S19940C7 , S19940C4 {
  void *s19940c16f0[7];
  char s19940c16f1;
  char s19940c16f2;
  int s19940c16f3;
  void *s19940c16f4;
  virtual void  v14(); // _ZN9S19940C163v14Ev
  ~S19940C16(); // tgen
  S19940C16(); // tgen
};
//SIG(-1 S19940C16) C1{ VBC2{ BC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC4{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} BC5{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC6{ VBC3 VBC4 VBC5 Fc Fi FU7{ m} Fc Fi} BC4 BC8{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU9{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v1 Fp[7] Fc Fc Fi Fp}


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

static void Test_S19940C16()
{
  extern Class_Descriptor cd_S19940C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(67,176)];
    init_test(&cd_S19940C16, buf);
    S19940C16 *dp, &lv = *(dp=new (buf) S19940C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,700), "sizeof(S19940C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C16)");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(592,368), "S19940C16");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(736,476), "S19940C16");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*), ABISELECT(736,476), "S19940C16");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(736,476), "S19940C16");
    check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(712,460), "S19940C16");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*), ABISELECT(712,460), "S19940C16");
    check_base_class_offset(lv, (S19940C6*), ABISELECT(576,364), "S19940C16");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(16,4), "S19940C16");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*), 0, "S19940C16");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(848,556), "S19940C16");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*), ABISELECT(832,552), "S19940C16");
    check_base_class_offset(lv, (S19940C13*), ABISELECT(216,148), "S19940C16");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*), ABISELECT(240,168), "S19940C16");
    check_base_class_offset(lv, (S19940C4*), ABISELECT(272,184), "S19940C16");
    check_field_offset(lv, s19940c16f0, ABISELECT(504,324), "S19940C16.s19940c16f0");
    check_field_offset(lv, s19940c16f1, ABISELECT(560,352), "S19940C16.s19940c16f1");
    check_field_offset(lv, s19940c16f2, ABISELECT(561,353), "S19940C16.s19940c16f2");
    check_field_offset(lv, s19940c16f3, ABISELECT(564,356), "S19940C16.s19940c16f3");
    check_field_offset(lv, s19940c16f4, ABISELECT(568,360), "S19940C16.s19940c16f4");
    test_class_info(&lv, &cd_S19940C16);
    dp->~S19940C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C16(Test_S19940C16, "S19940C16", ABISELECT(1056,700));

#else // __cplusplus

extern void _ZN9S19940C16C1Ev();
extern void _ZN9S19940C16D1Ev();
Name_Map name_map_S19940C16[] = {
  NSPAIR(_ZN9S19940C16C1Ev),
  NSPAIR(_ZN9S19940C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
static Base_Class bases_S19940C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(592,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(736,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19940C7,    ABISELECT(712,460), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19940C6,    ABISELECT(576,364), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19940C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20636C3,    ABISELECT(848,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
    7, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(832,552), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(216,148), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19940C7,    ABISELECT(240,168), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19940C4,    ABISELECT(272,184), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C16[];
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY vtc_S19940C16[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19940C16[];
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C16[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C13__9S19940C16[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C13__9S19940C16[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C16[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C16[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__9S19940C16[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C16[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C16[] = {
  {&(_ZTV9S19940C16[6]),  6,40},
  {&(_tg__ZTV9S19940C13__9S19940C16[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C13__9S19940C16[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C13__9S19940C16[4]),  4,6},
  {&(_tg__ZTV8S19940C7__A__9S19940C16[3]),  3,4},
  {&(_ZTV9S19940C16[28]),  28,40},
  {&(_ZTV9S19940C16[33]),  33,40},
  {&(_ZTV9S19940C16[14]),  14,40},
  {&(_ZTV9S19940C16[38]),  38,40},
  {&(_ZTV9S19940C16[17]),  17,40},
  {&(_tg__ZTV8S19940C6__9S19940C16[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__9S19940C16[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19940C16[];
extern  VTBL_ENTRY _ZTV9S19940C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C16[];
Class_Descriptor cd_S19940C16 = {  "S19940C16", // class name
  bases_S19940C16, 11,
  &(vtc_S19940C16[0]), // expected_vtbl_contents
  &(vtt_S19940C16[0]), // expected_vtt_contents
  ABISELECT(1056,700), // object size
  NSPAIRA(_ZTI9S19940C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19940C16),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C16),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C17  : virtual S19940C7 , S19940C6 , virtual S19940C8 , virtual S19940C16 , S20636C3 {
  unsigned char s19940c17f0:1;
  virtual  ~S19940C17(); // _ZN9S19940C17D2Ev
  virtual void  v15(); // _ZN9S19940C173v15Ev
  S19940C17(); // tgen
};
//SIG(-1 S19940C17) C1{ VBC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v2 Fc Fi Fc:8} BC4{ BC3 VBC2 v3 Fs:8 Fp Fc:0 Fc[4] Fi} VBC5{ BC2 Fp} VBC6{ VBC4 BC7{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC2 VBC7 Fc Fi FU9{ m} Fc Fi} BC2 BC10{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU11{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v1 Fc:1}


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

static void Test_S19940C17()
{
  extern Class_Descriptor cd_S19940C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(85,225)];
    init_test(&cd_S19940C17, buf);
    S19940C17 *dp, &lv = *(dp=new (buf) S19940C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,896), "sizeof(S19940C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C17)");
    /*is_ambiguous_... S19940C17::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(272,192), "S19940C17");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C8*), ABISELECT(272,192), "S19940C17");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C16*), ABISELECT(272,192), "S19940C17");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C16*), ABISELECT(272,192), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*), ABISELECT(248,176), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(248,176), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(248,176), "S19940C17");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C16*), ABISELECT(248,176), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(16,4), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C6*), 0, "S19940C17");
    check_base_class_offset(lv, (S19940C7*)(S19940C8*), ABISELECT(368,268), "S19940C17");
    check_base_class_offset(lv, (S19940C8*), ABISELECT(368,268), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(992,656), "S19940C17");
    check_base_class_offset(lv, (S19940C6*)(S19940C16*), ABISELECT(976,652), "S19940C17");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C16*), ABISELECT(416,292), "S19940C17");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C16*), ABISELECT(400,288), "S19940C17");
    /*is_ambiguous_... S19940C17::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(1136,752), "S19940C17");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C16*), ABISELECT(1120,748), "S19940C17");
    check_base_class_offset(lv, (S19940C13*)(S19940C16*), ABISELECT(616,436), "S19940C17");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C16*), ABISELECT(640,456), "S19940C17");
    check_base_class_offset(lv, (S19940C4*)(S19940C16*), ABISELECT(672,472), "S19940C17");
    check_base_class_offset(lv, (S19940C16*), ABISELECT(400,288), "S19940C17");
    /*is_ambiguous_... S19940C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*), ABISELECT(144,96), "S19940C17");
    set_bf_and_test(lv, s19940c17f0, ABISELECT(240,172), 0, 1, 1, "S19940C17");
    test_class_info(&lv, &cd_S19940C17);
    dp->~S19940C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C17(Test_S19940C17, "S19940C17", ABISELECT(1344,896));

#else // __cplusplus

extern void _ZN9S19940C17C1Ev();
extern void _ZN9S19940C17D2Ev();
Name_Map name_map_S19940C17[] = {
  NSPAIR(_ZN9S19940C17C1Ev),
  NSPAIR(_ZN9S19940C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C8;
extern VTBL_ENTRY _ZTI8S19940C8[];
extern  VTBL_ENTRY _ZTV8S19940C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C16;
extern VTBL_ENTRY _ZTI9S19940C16[];
extern  VTBL_ENTRY _ZTV9S19940C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C16[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
static Base_Class bases_S19940C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(272,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
    1, //immediately_derived
  0, 1},
  {&cd_S19940C7,    ABISELECT(248,176), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19940C6,    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_S19940C7,    ABISELECT(368,268), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19940C8,    ABISELECT(368,268), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(992,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19940C6,    ABISELECT(976,652), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(416,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(400,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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1136,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
    11, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(1120,748), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    12, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(616,436), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //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
    15, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(640,456), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(672,472), //bcp->offset
    47, //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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19940C16,    ABISELECT(400,288), //bcp->offset
    22, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C17[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C17D1Ev();
extern void _ZN9S19940C17D0Ev();
extern void _ZN9S19940C173v15Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY vtc_S19940C17[] = {
  ABISELECT(1120,748),
  ABISELECT(976,652),
  ABISELECT(400,288),
  ABISELECT(368,268),
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-616,-436),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  ABISELECT(-368,-264),
  ABISELECT(-640,-456),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(-672,-472),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-976,-652),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  0,
  0,
  ABISELECT(-1120,-748),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern VTBL_ENTRY _ZTV9S19940C17[];
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A__9S19940C17[] = {
  ABISELECT(272,192),
  ABISELECT(248,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__A__9S19940C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C17[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C17[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C8[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C78S19940C8__A1__9S19940C17[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C17[] = {
  ABISELECT(720,460),
  ABISELECT(-128,-96),
  ABISELECT(-152,-112),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C17[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(368,260),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C17[] = {
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A2__9S19940C17[] = {
  ABISELECT(-368,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C16__9S19940C17[] = {
  0,
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C16__9S19940C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(152,112),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C16__9S19940C17[] = {
  ABISELECT(504,312),
  ABISELECT(-368,-260),
  ABISELECT(-344,-244),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C16__9S19940C17[] = {
  0,
  0,
  ABISELECT(-720,-460),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C16__9S19940C17[] = {
  ABISELECT(-368,-264),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C17[] = {
  ABISELECT(-704,-460),
  ABISELECT(-728,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__A1__9S19940C17[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(728,476),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C17[] = {
  {&(_ZTV9S19940C17[8]),  8,64},
  {&(_tg__ZTV8S19940C6__A__9S19940C17[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__A__9S19940C17[4]),  4,5},
  {&(_ZTV9S19940C17[16]),  16,64},
  {&(_ZTV9S19940C17[21]),  21,64},
  {&(_ZTV9S19940C17[35]),  35,64},
  {&(_ZTV9S19940C17[57]),  57,64},
  {&(_ZTV9S19940C17[43]),  43,64},
  {&(_ZTV9S19940C17[62]),  62,64},
  {&(_ZTV9S19940C17[46]),  46,64},
  {&(_ZTV9S19940C17[49]),  49,64},
  {&(_tg__ZTV8S19940C7__9S19940C17[3]),  3,4},
  {&(_tg__ZTV8S19940C8__9S19940C17[3]),  3,4},
  {&(_tg__ZTV8S19940C78S19940C8__A1__9S19940C17[3]),  3,4},
  {&(_tg__ZTV9S19940C16__9S19940C17[6]),  6,9},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C17[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C17[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C17[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A2__9S19940C17[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C16__9S19940C17[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C16__9S19940C17[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C16__9S19940C17[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C16__9S19940C17[4]),  4,6},
  {&(_tg__ZTV8S19940C7__A__9S19940C16__9S19940C17[3]),  3,4},
  {&(_tg__ZTV8S19940C6__A1__9S19940C17[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__A1__9S19940C17[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19940C17[];
extern  VTBL_ENTRY _ZTV9S19940C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C17[];
Class_Descriptor cd_S19940C17 = {  "S19940C17", // class name
  bases_S19940C17, 17,
  &(vtc_S19940C17[0]), // expected_vtbl_contents
  &(vtt_S19940C17[0]), // expected_vtt_contents
  ABISELECT(1344,896), // object size
  NSPAIRA(_ZTI9S19940C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19940C17),64, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C17),26, //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  S19940C15  : S19940C4 {
  ::S19940C16 s19940c15f0[5];
  int s19940c15f1;
  char s19940c15f2;
  void *s19940c15f3;
  char s19940c15f4;
  int s19940c15f5:5;
  int s19940c15f6[6];
  int s19940c15f7;
  ::S19940C17 s19940c15f8;
  char s19940c15f9;
  char s19940c15f10;
  char s19940c15f11;
  ~S19940C15(); // tgen
  S19940C15(); // tgen
};
//SIG(-1 S19940C15) C1{ BC2{ v1 v2 v3 Fp[2] FL Fp[8] Fi Fp Fi FU3{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC4{ VBC5{ BC6{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC7{ VBC6 v5 Fc Fi Fc:8} v6 Fs:8 Fp Fc:0 Fc[4] Fi} BC8{ BC6 v7 v8 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC9{ VBC6 VBC7 VBC8 Fc Fi FU10{ m} Fc Fi} BC7 BC2 v4 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC11{ VBC7 BC5 VBC12{ BC7 Fp} VBC4 BC6 vd v9 Fc:1} Fc Fc Fc}


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

static void Test_S19940C15()
{
  extern Class_Descriptor cd_S19940C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(434,1147)];
    init_test(&cd_S19940C15, buf);
    S19940C15 *dp, &lv = *(dp=new (buf) S19940C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6928,4584), "sizeof(S19940C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C15)");
    check_base_class_offset(lv, (S19940C4*), 0, "S19940C15");
    check_field_offset(lv, s19940c15f0, ABISELECT(240,140), "S19940C15.s19940c15f0");
    check_field_offset(lv, s19940c15f1, ABISELECT(5520,3640), "S19940C15.s19940c15f1");
    check_field_offset(lv, s19940c15f2, ABISELECT(5524,3644), "S19940C15.s19940c15f2");
    check_field_offset(lv, s19940c15f3, ABISELECT(5528,3648), "S19940C15.s19940c15f3");
    check_field_offset(lv, s19940c15f4, ABISELECT(5536,3652), "S19940C15.s19940c15f4");
    set_bf_and_test(lv, s19940c15f5, ABISELECT(5537,3653), 0, 5, 1, "S19940C15");
    set_bf_and_test(lv, s19940c15f5, ABISELECT(5537,3653), 0, 5, hide_sll(1LL<<4), "S19940C15");
    check_field_offset(lv, s19940c15f6, ABISELECT(5540,3656), "S19940C15.s19940c15f6");
    check_field_offset(lv, s19940c15f7, ABISELECT(5564,3680), "S19940C15.s19940c15f7");
    check_field_offset(lv, s19940c15f8, ABISELECT(5568,3684), "S19940C15.s19940c15f8");
    check_field_offset(lv, s19940c15f9, ABISELECT(6912,4580), "S19940C15.s19940c15f9");
    check_field_offset(lv, s19940c15f10, ABISELECT(6913,4581), "S19940C15.s19940c15f10");
    check_field_offset(lv, s19940c15f11, ABISELECT(6914,4582), "S19940C15.s19940c15f11");
    test_class_info(&lv, &cd_S19940C15);
    dp->~S19940C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C15(Test_S19940C15, "S19940C15", ABISELECT(6928,4584));

#else // __cplusplus

extern void _ZN9S19940C15C1Ev();
extern void _ZN9S19940C15D1Ev();
Name_Map name_map_S19940C15[] = {
  NSPAIR(_ZN9S19940C15C1Ev),
  NSPAIR(_ZN9S19940C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
static Base_Class bases_S19940C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19940C4,    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 _ZTI9S19940C15[];
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY vtc_S19940C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C15[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern VTBL_ENTRY _ZTI9S19940C15[];
extern  VTBL_ENTRY _ZTV9S19940C15[];
Class_Descriptor cd_S19940C15 = {  "S19940C15", // class name
  bases_S19940C15, 1,
  &(vtc_S19940C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6928,4584), // object size
  NSPAIRA(_ZTI9S19940C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19940C15),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  S19940C9  : S19940C10 , virtual S19940C15 {
  int s19940c9f0;
  ::S19941C18 s19940c9f1;
  virtual void  v13(); // _ZN8S19940C93v13Ev
  ~S19940C9(); // tgen
  S19940C9(); // tgen
};
//SIG(-1 S19940C9) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} BC4{ VBC3 BC5{ BC3 VBC6{ VBC3 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} v4} BC7{ BC3 v5 v6 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC3 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} v7 v8 Fi[4]} VBC10{ BC11{ v9 v10 v11 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} FC13{ VBC5 BC7 BC8 BC6 BC11 v24 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC14{ VBC6 BC5 VBC15{ BC6 Fp} VBC13 BC3 vd v25 Fc:1} Fc Fc Fc} v1 Fi FC16{ BC17{ VBC3 BC18{ VBC3 BC19{ BC3 VBC20{ VBC3 v13 Fc Fi Fc:8} v14 Fs:8 Fp Fc:0 Fc[4] Fi} v15} BC21{ BC3 v16 v17 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC22{ VBC3 VBC20 VBC21 Fc Fi FU9 Fc Fi} v18 v19 Fi[4]} BC21 VBC23{ VBC19 BC21 BC22 BC20 BC24{ v20 v21 v22 Fp[2] FL Fp[8] Fi Fp Fi FU12[6] Fc} v23 Fp[7] Fc Fc Fi Fp} v12 FL Fp Fi}}


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

static void Test_S19940C9()
{
  extern Class_Descriptor cd_S19940C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(589,1564)];
    init_test(&cd_S19940C9, buf);
    S19940C9 *dp, &lv = *(dp=new (buf) S19940C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9408,6252), "sizeof(S19940C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C9)");
    /*is_ambiguous_... S19940C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C10*), ABISELECT(2128,1428), "S19940C9");
    /*is_ambiguous_... S19940C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C11*)(S19940C10*), ABISELECT(2128,1428), "S19940C9");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(2128,1428), "S19940C9");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C10*), ABISELECT(2128,1428), "S19940C9");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C11*)(S19940C10*), ABISELECT(16,4), "S19940C9");
    check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C11*)(S19940C10*), ABISELECT(2224,1504), "S19940C9");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C10*), ABISELECT(2224,1504), "S19940C9");
    check_base_class_offset(lv, (S19940C6*)(S19940C11*)(S19940C10*), 0, "S19940C9");
    check_base_class_offset(lv, (S19940C11*)(S19940C10*), 0, "S19940C9");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C10*), ABISELECT(160,100), "S19940C9");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C10*), ABISELECT(144,96), "S19940C9");
    /*is_ambiguous_... S19940C9::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(2272,1524), "S19940C9");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C10*), ABISELECT(2256,1520), "S19940C9");
    check_base_class_offset(lv, (S19940C13*)(S19940C10*), ABISELECT(360,244), "S19940C9");
    check_base_class_offset(lv, (S19940C10*), 0, "S19940C9");
    check_base_class_offset(lv, (S19940C4*)(S19940C15*), ABISELECT(2480,1668), "S19940C9");
    check_base_class_offset(lv, (S19940C15*), ABISELECT(2480,1668), "S19940C9");
    check_field_offset(lv, s19940c9f0, ABISELECT(400,280), "S19940C9.s19940c9f0");
    check_field_offset(lv, s19940c9f1, ABISELECT(416,284), "S19940C9.s19940c9f1");
    test_class_info(&lv, &cd_S19940C9);
    dp->~S19940C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C9(Test_S19940C9, "S19940C9", ABISELECT(9408,6252));

#else // __cplusplus

extern void _ZN8S19940C9C1Ev();
extern void _ZN8S19940C9D1Ev();
Name_Map name_map_S19940C9[] = {
  NSPAIR(_ZN8S19940C9C1Ev),
  NSPAIR(_ZN8S19940C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C11;
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C10;
extern VTBL_ENTRY _ZTI9S19940C10[];
extern  VTBL_ENTRY _ZTV9S19940C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C10[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C15;
extern VTBL_ENTRY _ZTI9S19940C15[];
extern  VTBL_ENTRY _ZTV9S19940C15[];
static Base_Class bases_S19940C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(2128,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
    2, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(2224,1504), //bcp->offset
    20, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19940C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19940C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(144,96), //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(2272,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
    8, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(2256,1520), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(360,244), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19940C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19940C4,    ABISELECT(2480,1668), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19940C15,    ABISELECT(2480,1668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19940C9[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY vtc_S19940C9[] = {
  ABISELECT(2480,1668),
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  0,
  0,
  0,
  ABISELECT(-2480,-1668),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S19940C9[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C10__8S19940C9[] = {
  ABISELECT(2256,1520),
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C119S19940C10__8S19940C9[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C119S19940C10__8S19940C9[] = {
  ABISELECT(2128,1428),
  ABISELECT(2224,1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C119S19940C10__8S19940C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C119S19940C10__8S19940C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C10__8S19940C9[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C10__8S19940C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-1864,-1260),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C10__8S19940C9[] = {
  0,
  0,
  ABISELECT(-1896,-1276),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C10__8S19940C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-2224,-1504),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C10__8S19940C9[] = {
  ABISELECT(1896,1276),
  ABISELECT(1864,1260),
  ABISELECT(1768,1184),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C10__8S19940C9[] = {
  0,
  0,
  ABISELECT(-2256,-1520),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C9[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C9[] = {
  {&(_ZTV8S19940C9[6]),  6,39},
  {&(_tg__ZTV9S19940C10__8S19940C9[5]),  5,9},
  {&(_tg__ZTV9S19940C119S19940C10__8S19940C9[4]),  4,6},
  {&(_tg__ZTV8S19940C69S19940C119S19940C10__8S19940C9[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C119S19940C10__8S19940C9[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C119S19940C10__8S19940C9[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C10__8S19940C9[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C10__8S19940C9[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C10__8S19940C9[4]),  4,6},
  {&(_tg__ZTV8S19940C7__9S19940C10__8S19940C9[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C10__8S19940C9[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C10__8S19940C9[4]),  4,6},
  {&(_ZTV8S19940C9[24]),  24,39},
  {&(_ZTV8S19940C9[20]),  20,39},
  {&(_ZTV8S19940C9[29]),  29,39},
  {&(_ZTV8S19940C9[36]),  36,39},
  {&(_tg__ZTV8S19940C7__8S19940C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19940C9[];
extern  VTBL_ENTRY _ZTV8S19940C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C9[];
Class_Descriptor cd_S19940C9 = {  "S19940C9", // class name
  bases_S19940C9, 13,
  &(vtc_S19940C9[0]), // expected_vtbl_contents
  &(vtt_S19940C9[0]), // expected_vtt_contents
  ABISELECT(9408,6252), // object size
  NSPAIRA(_ZTI8S19940C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19940C9),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19940C9),17, //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  S19940C19  : S19940C7 , virtual S19940C12 , S19940C17 {
  ::S19940C2 s19940c19f0;
  ::S19940C15 s19940c19f1;
  int s19940c19f2;
  ~S19940C19(); // tgen
  S19940C19(); // tgen
};
//SIG(-1 S19940C19) C1{ BC2{ VBC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} v1 Fc Fi Fc:8} VBC4{ BC3 v2 v3 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC5{ VBC2 BC6{ BC3 VBC2 v4 Fs:8 Fp Fc:0 Fc[4] Fi} VBC7{ BC2 Fp} VBC8{ VBC6 BC4 BC9{ VBC3 VBC2 VBC4 Fc Fi FU10{ m} Fc Fi} BC2 BC11{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} BC3 vd v9 Fc:1} FC13{ v10 v11 Fi Fc FC3 Fi Fp FC11 Fi FC6[9] FL} FC14{ BC11 FC8[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC5 Fc Fc Fc} Fi}


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

static void Test_S19940C19()
{
  extern Class_Descriptor cd_S19940C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(690,1861)];
    init_test(&cd_S19940C19, buf);
    S19940C19 *dp, &lv = *(dp=new (buf) S19940C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11024,7440), "sizeof(S19940C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C19)");
    /*is_ambiguous_... S19940C19::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(9936,6720), "S19940C19");
    /*is_ambiguous_... S19940C19::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(9936,6720), "S19940C19");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C8*), ABISELECT(9936,6720), "S19940C19");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C16*), ABISELECT(9936,6720), "S19940C19");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C16*), ABISELECT(9936,6720), "S19940C19");
    /*is_ambiguous_... S19940C19::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*), 0, "S19940C19");
    /*is_ambiguous_... S19940C19::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(10048,6800), "S19940C19");
    /*is_ambiguous_... S19940C19::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*), ABISELECT(10032,6796), "S19940C19");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C16*), ABISELECT(10032,6796), "S19940C19");
    /*is_ambiguous_... S19940C17::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C17*), ABISELECT(10248,6944), "S19940C19");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C17*), ABISELECT(10248,6944), "S19940C19");
    /*is_ambiguous_... S19940C19::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(10248,6944), "S19940C19");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C16*), ABISELECT(10248,6944), "S19940C19");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C17*), ABISELECT(48,20), "S19940C19");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C17*), ABISELECT(32,16), "S19940C19");
    check_base_class_offset(lv, (S19940C7*)(S19940C8*), ABISELECT(10272,6960), "S19940C19");
    check_base_class_offset(lv, (S19940C8*)(S19940C17*), ABISELECT(10272,6960), "S19940C19");
    /*is_ambiguous_... S19940C19::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(10896,7348), "S19940C19");
    check_base_class_offset(lv, (S19940C6*)(S19940C16*), ABISELECT(10880,7344), "S19940C19");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C16*), ABISELECT(10320,6984), "S19940C19");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C16*), ABISELECT(10304,6980), "S19940C19");
    check_base_class_offset(lv, (S19940C13*)(S19940C16*), ABISELECT(10520,7128), "S19940C19");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C16*), ABISELECT(10544,7148), "S19940C19");
    check_base_class_offset(lv, (S19940C4*)(S19940C16*), ABISELECT(10576,7164), "S19940C19");
    check_base_class_offset(lv, (S19940C16*)(S19940C17*), ABISELECT(10304,6980), "S19940C19");
    /*is_ambiguous_... S19940C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C17*), ABISELECT(176,112), "S19940C19");
    check_base_class_offset(lv, (S19940C17*), ABISELECT(32,16), "S19940C19");
    check_field_offset(lv, s19940c19f0, ABISELECT(288,192), "S19940C19.s19940c19f0");
    check_field_offset(lv, s19940c19f1, ABISELECT(2992,2132), "S19940C19.s19940c19f1");
    check_field_offset(lv, s19940c19f2, ABISELECT(9920,6716), "S19940C19.s19940c19f2");
    test_class_info(&lv, &cd_S19940C19);
    dp->~S19940C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C19(Test_S19940C19, "S19940C19", ABISELECT(11024,7440));

#else // __cplusplus

extern void _ZN9S19940C19C1Ev();
extern void _ZN9S19940C19D1Ev();
Name_Map name_map_S19940C19[] = {
  NSPAIR(_ZN9S19940C19C1Ev),
  NSPAIR(_ZN9S19940C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C8;
extern VTBL_ENTRY _ZTI8S19940C8[];
extern  VTBL_ENTRY _ZTV8S19940C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C16;
extern VTBL_ENTRY _ZTI9S19940C16[];
extern  VTBL_ENTRY _ZTV9S19940C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C16[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C17;
extern VTBL_ENTRY _ZTI9S19940C17[];
extern  VTBL_ENTRY _ZTV9S19940C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C17[];
static Base_Class bases_S19940C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(9936,6720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19940C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(10048,6800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(10032,6796), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19940C7,    ABISELECT(10248,6944), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19940C6,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(10272,6960), //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19940C8,    ABISELECT(10272,6960), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10896,7348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19940C6,    ABISELECT(10880,7344), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(10320,6984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C12,    ABISELECT(10304,6980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19940C13,    ABISELECT(10520,7128), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(10544,7148), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(10576,7164), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19940C16,    ABISELECT(10304,6980), //bcp->offset
    39, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19940C17,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C19[];
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C19D1Ev();
extern void _ZN9S19940C19D0Ev();
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZThn32_N9S19940C19D1Ev,_ZThn16_N9S19940C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19940C19D0Ev,_ZThn16_N9S19940C19D0Ev)();
extern void _ZN9S19940C173v15Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY vtc_S19940C19[] = {
  ABISELECT(10880,7344),
  ABISELECT(10304,6980),
  ABISELECT(10272,6960),
  ABISELECT(10248,6944),
  ABISELECT(10032,6796),
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19940C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C19D0Ev,
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19940C19D1Ev,_ZThn16_N9S19940C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19940C19D0Ev,_ZThn16_N9S19940C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
  0,
  0,
  ABISELECT(-10032,-6796),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10248,-6944),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10272,-6960),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10304,-6980),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10520,-7128),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  ABISELECT(-608,-428),
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(-10576,-7164),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10880,-7344),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S19940C19[];
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C19[] = {
  ABISELECT(9936,6720),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C17D1Ev();
extern void _ZN9S19940C17D0Ev();
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C19[] = {
  ABISELECT(10000,6780),
  ABISELECT(10848,7328),
  ABISELECT(10272,6964),
  ABISELECT(10240,6944),
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C17__9S19940C19[] = {
  ABISELECT(9904,6704),
  ABISELECT(10216,6928),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C17__9S19940C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C17__9S19940C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-10216,-6928),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C17__9S19940C19[] = {
  0,
  ABISELECT(-336,-240),
  ABISELECT(-10240,-6944),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C17__9S19940C19[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  ABISELECT(-10272,-6964),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C17__9S19940C19[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-10848,-7328),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C17__9S19940C19[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-10488,-7112),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C17__9S19940C19[] = {
  0,
  0,
  ABISELECT(-10000,-6780),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A2__9S19940C17__9S19940C19[] = {
  ABISELECT(-608,-428),
  ABISELECT(-10512,-7132),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C17__9S19940C19[] = {
  ABISELECT(-10544,-7148),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A1__9S19940C19[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C19[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C8[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C78S19940C8__A2__9S19940C19[] = {
  ABISELECT(-336,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C19[] = {
  ABISELECT(-272,-184),
  ABISELECT(-368,-260),
  ABISELECT(-56,-36),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C19[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C19[] = {
  0,
  0,
  ABISELECT(488,332),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A3__9S19940C19[] = {
  ABISELECT(-608,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C16__9S19940C19[] = {
  0,
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C16__9S19940C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C16__9S19940C19[] = {
  ABISELECT(-488,-332),
  ABISELECT(-272,-184),
  ABISELECT(-584,-408),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C16__9S19940C19[] = {
  0,
  0,
  ABISELECT(272,184),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C16__9S19940C19[] = {
  ABISELECT(-608,-428),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C19[] = {
  ABISELECT(-944,-624),
  ABISELECT(-632,-400),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__A1__9S19940C19[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(632,400),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTT_ENTRY vtt_S19940C19[] = {
  {&(_ZTV9S19940C19[8]),  8,75},
  {&(_tg__ZTV8S19940C7__A__9S19940C19[3]),  3,4},
  {&(_tg__ZTV9S19940C17__9S19940C19[8]),  8,12},
  {&(_tg__ZTV8S19940C69S19940C17__9S19940C19[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C17__9S19940C19[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C17__9S19940C19[4]),  4,5},
  {&(_tg__ZTV8S19940C8__9S19940C17__9S19940C19[4]),  4,5},
  {&(_tg__ZTV9S19940C16__9S19940C17__9S19940C19[13]),  13,16},
  {&(_tg__ZTV8S19940C6__A1__9S19940C17__9S19940C19[5]),  5,6},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C17__9S19940C19[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C17__9S19940C19[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A2__9S19940C17__9S19940C19[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C17__9S19940C19[2]),  2,5},
  {&(_ZTV9S19940C19[27]),  27,75},
  {&(_ZTV9S19940C19[19]),  19,75},
  {&(_ZTV9S19940C19[33]),  33,75},
  {&(_ZTV9S19940C19[38]),  38,75},
  {&(_ZTV9S19940C19[52]),  52,75},
  {&(_ZTV9S19940C19[74]),  74,75},
  {&(_ZTV9S19940C19[60]),  60,75},
  {&(_ZTV9S19940C19[63]),  63,75},
  {&(_ZTV9S19940C19[66]),  66,75},
  {&(_tg__ZTV8S19940C7__A1__9S19940C19[3]),  3,4},
  {&(_tg__ZTV8S19940C8__9S19940C19[3]),  3,4},
  {&(_tg__ZTV8S19940C78S19940C8__A2__9S19940C19[3]),  3,4},
  {&(_tg__ZTV9S19940C16__9S19940C19[6]),  6,9},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C19[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C19[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C19[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A3__9S19940C19[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C16__9S19940C19[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C16__9S19940C19[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C16__9S19940C19[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C16__9S19940C19[4]),  4,6},
  {&(_tg__ZTV8S19940C7__A__9S19940C16__9S19940C19[3]),  3,4},
  {&(_tg__ZTV8S19940C6__A1__9S19940C19[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__A1__9S19940C19[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19940C19[];
extern  VTBL_ENTRY _ZTV9S19940C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C19[];
Class_Descriptor cd_S19940C19 = {  "S19940C19", // class name
  bases_S19940C19, 19,
  &(vtc_S19940C19[0]), // expected_vtbl_contents
  &(vtt_S19940C19[0]), // expected_vtt_contents
  ABISELECT(11024,7440), // object size
  NSPAIRA(_ZTI9S19940C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19940C19),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C19),37, //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  S19940C21  : virtual S19940C16 , virtual S19940C8 , virtual S19940C17 , virtual S19940C9 , virtual S19940C4 {
  int s19940c21f0;
  int s19940c21f1;
  virtual  ~S19940C21(); // _ZN9S19940C21D2Ev
  S19940C21(); // tgen
};
//SIG(-1 S19940C21) C1{ VBC2{ VBC3{ BC4{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC5{ VBC4 v1 Fc Fi Fc:8} v2 Fs:8 Fp Fc:0 Fc[4] Fi} BC6{ BC4 v3 v4 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC7{ VBC4 VBC5 VBC6 Fc Fi FU8{ m} Fc Fi} BC5 BC9{ v5 v6 v7 Fp[2] FL Fp[8] Fi Fp Fi FU10{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v8 Fp[7] Fc Fc Fi Fp} VBC11{ BC5 Fp} VBC12{ VBC5 BC3 VBC11 VBC2 BC4 vd v9 Fc:1} VBC13{ BC14{ VBC4 BC15{ VBC4 BC3 v10} BC6 BC7 v11 v12 Fi[4]} VBC16{ BC9 FC2[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC12 Fc Fc Fc} v13 Fi FC17{ BC18{ VBC4 BC19{ VBC4 BC20{ BC4 VBC21{ VBC4 v15 Fc Fi Fc:8} v16 Fs:8 Fp Fc:0 Fc[4] Fi} v17} BC22{ BC4 v18 v19 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC23{ VBC4 VBC21 VBC22 Fc Fi FU8 Fc Fi} v20 v21 Fi[4]} BC22 VBC24{ VBC20 BC22 BC23 BC21 BC25{ v22 v23 v24 Fp[2] FL Fp[8] Fi Fp Fi FU10[6] Fc} v25 Fp[7] Fc Fc Fi Fp} v14 FL Fp Fi}} VBC9 vd Fi Fi}


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

static void Test_S19940C21()
{
  extern Class_Descriptor cd_S19940C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(667,1766)];
    init_test(&cd_S19940C21, buf);
    S19940C21 *dp, &lv = *(dp=new (buf) S19940C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10656,7060), "sizeof(S19940C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C21)");
    /*is_ambiguous_... S19940C21::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(608,380), "S19940C21");
    /*is_ambiguous_... S19940C21::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(752,488), "S19940C21");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C16*), ABISELECT(752,488), "S19940C21");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C16*), ABISELECT(752,488), "S19940C21");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C8*), ABISELECT(752,488), "S19940C21");
    /*is_ambiguous_... S19940C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C10*)(S19940C9*), ABISELECT(752,488), "S19940C21");
    /*is_ambiguous_... S19940C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(752,488), "S19940C21");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(752,488), "S19940C21");
    /*is_ambiguous_... S19940C21::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(728,472), "S19940C21");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C16*), ABISELECT(728,472), "S19940C21");
    /*is_ambiguous_... S19940C17::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C17*), ABISELECT(728,472), "S19940C21");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C17*), ABISELECT(728,472), "S19940C21");
    check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(728,472), "S19940C21");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(728,472), "S19940C21");
    check_base_class_offset(lv, (S19940C6*)(S19940C16*), ABISELECT(592,376), "S19940C21");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C16*), ABISELECT(32,16), "S19940C21");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C16*), ABISELECT(16,12), "S19940C21");
    /*is_ambiguous_... S19940C21::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(864,568), "S19940C21");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C16*), ABISELECT(848,564), "S19940C21");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(848,564), "S19940C21");
    check_base_class_offset(lv, (S19940C13*)(S19940C16*), ABISELECT(232,160), "S19940C21");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C16*), ABISELECT(256,180), "S19940C21");
    check_base_class_offset(lv, (S19940C4*)(S19940C16*), ABISELECT(288,196), "S19940C21");
    check_base_class_offset(lv, (S19940C16*), ABISELECT(16,12), "S19940C21");
    check_base_class_offset(lv, (S19940C16*)(S19940C17*), ABISELECT(16,12), "S19940C21");
    check_base_class_offset(lv, (S19940C7*)(S19940C8*), ABISELECT(1064,712), "S19940C21");
    check_base_class_offset(lv, (S19940C8*), ABISELECT(1064,712), "S19940C21");
    check_base_class_offset(lv, (S19940C8*)(S19940C17*), ABISELECT(1064,712), "S19940C21");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C17*), ABISELECT(1120,736), "S19940C21");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C17*), ABISELECT(1104,732), "S19940C21");
    /*is_ambiguous_... S19940C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C17*), ABISELECT(1248,828), "S19940C21");
    check_base_class_offset(lv, (S19940C17*), ABISELECT(1104,732), "S19940C21");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(1376,912), "S19940C21");
    check_base_class_offset(lv, (S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(1360,908), "S19940C21");
    check_base_class_offset(lv, (S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(1360,908), "S19940C21");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(1520,1008), "S19940C21");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(1504,1004), "S19940C21");
    check_base_class_offset(lv, (S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(1720,1152), "S19940C21");
    check_base_class_offset(lv, (S19940C10*)(S19940C9*), ABISELECT(1360,908), "S19940C21");
    check_base_class_offset(lv, (S19940C4*)(S19940C15*), ABISELECT(3488,2336), "S19940C21");
    check_base_class_offset(lv, (S19940C15*)(S19940C9*), ABISELECT(3488,2336), "S19940C21");
    check_base_class_offset(lv, (S19940C9*), ABISELECT(1360,908), "S19940C21");
    /*is_ambiguous_... S19940C21::S19940C4 */ AMB_check_base_class_offset(lv, (S19940C4*), ABISELECT(10416,6920), "S19940C21");
    check_field_offset(lv, s19940c21f0, ABISELECT(8,4), "S19940C21.s19940c21f0");
    check_field_offset(lv, s19940c21f1, ABISELECT(12,8), "S19940C21.s19940c21f1");
    test_class_info(&lv, &cd_S19940C21);
    dp->~S19940C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C21(Test_S19940C21, "S19940C21", ABISELECT(10656,7060));

#else // __cplusplus

extern void _ZN9S19940C21C1Ev();
extern void _ZN9S19940C21D2Ev();
Name_Map name_map_S19940C21[] = {
  NSPAIR(_ZN9S19940C21C1Ev),
  NSPAIR(_ZN9S19940C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C16;
extern VTBL_ENTRY _ZTI9S19940C16[];
extern  VTBL_ENTRY _ZTV9S19940C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C16[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C8;
extern VTBL_ENTRY _ZTI8S19940C8[];
extern  VTBL_ENTRY _ZTV8S19940C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C17;
extern VTBL_ENTRY _ZTI9S19940C17[];
extern  VTBL_ENTRY _ZTV9S19940C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C17[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C11;
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C10;
extern VTBL_ENTRY _ZTI9S19940C10[];
extern  VTBL_ENTRY _ZTV9S19940C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C10[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C15;
extern VTBL_ENTRY _ZTI9S19940C15[];
extern  VTBL_ENTRY _ZTV9S19940C15[];
extern Class_Descriptor cd_S19940C9;
extern VTBL_ENTRY _ZTI8S19940C9[];
extern  VTBL_ENTRY _ZTV8S19940C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C9[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
static Base_Class bases_S19940C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(608,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(752,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
    2, //immediately_derived
  0, 1},
  {&cd_S19940C7,    ABISELECT(728,472), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19940C6,    ABISELECT(592,376), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(864,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
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(848,564), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(232,160), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(256,180), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(288,196), //bcp->offset
    39, //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19940C16,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19940C7,    ABISELECT(1064,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19940C8,    ABISELECT(1064,712), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(1120,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
    15, //immediately_derived
  0, 0},
  {&cd_S19940C6,    ABISELECT(1104,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1248,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19940C17,    ABISELECT(1104,732), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(1376,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19940C6,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19940C11,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1520,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C12,    ABISELECT(1504,1004), //bcp->offset
    99, //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
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19940C13,    ABISELECT(1720,1152), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19940C10,    ABISELECT(1360,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(3488,2336), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19940C15,    ABISELECT(3488,2336), //bcp->offset
    -1, //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
    14, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19940C9,    ABISELECT(1360,908), //bcp->offset
    81, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19940C4,    ABISELECT(10416,6920), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C21[];
extern void _ZN9S19940C21D1Ev();
extern void _ZN9S19940C21D0Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19940C21D1Ev,_ZThn732_N9S19940C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19940C21D0Ev,_ZThn732_N9S19940C21D0Ev)() __attribute__((weak));
extern void _ZN9S19940C173v15Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY vtc_S19940C21[] = {
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C21D0Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  ABISELECT(496,308),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-592,-376),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-728,-472),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-848,-564),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1064,-712),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  ABISELECT(-1104,-732),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1104,-732),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1360,-908),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
  ABISELECT(-1504,-1004),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1720,-1152),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  0,
  0,
  0,
  ABISELECT(-3488,-2336),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  0,
  0,
  ABISELECT(-10416,-6920),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern VTBL_ENTRY _ZTV9S19940C21[];
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C21[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C21[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C21[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A1__9S19940C21[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C16__9S19940C21[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C16__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C16__9S19940C21[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C16__9S19940C21[] = {
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C16__9S19940C21[] = {
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C21[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C21[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C21[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C8[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C78S19940C8__A2__9S19940C21[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C17D1Ev();
extern void _ZN9S19940C17D0Ev();
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C21[] = {
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C17__A1__9S19940C21[] = {
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C17__A1__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C17__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C17__9S19940C21[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C17__9S19940C21[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(1088,720),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C17__9S19940C21[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(512,356),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C17__9S19940C21[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(872,572),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C17__9S19940C21[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A2__9S19940C17__9S19940C21[] = {
  ABISELECT(496,308),
  ABISELECT(848,552),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C17__9S19940C21[] = {
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__9S19940C21[] = {
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C108S19940C9__9S19940C21[] = {
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C119S19940C108S19940C9__9S19940C21[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C21[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C21[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__A1__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(992,680),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__A1__9S19940C21[] = {
  0,
  0,
  ABISELECT(872,588),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C108S19940C9__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C108S19940C9__9S19940C21[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C108S19940C9__9S19940C21[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C9__9S19940C21[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C10__8S19940C9__9S19940C21[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__8S19940C9__9S19940C21[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__8S19940C9__9S19940C21[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
static  VTT_ENTRY vtt_S19940C21[] = {
  {&(_ZTV9S19940C21[12]),  12,124},
  {&(_ZTV9S19940C21[27]),  27,124},
  {&(_ZTV9S19940C21[49]),  49,124},
  {&(_ZTV9S19940C21[54]),  54,124},
  {&(_ZTV9S19940C21[35]),  35,124},
  {&(_ZTV9S19940C21[59]),  59,124},
  {&(_ZTV9S19940C21[38]),  38,124},
  {&(_ZTV9S19940C21[41]),  41,124},
  {&(_ZTV9S19940C21[65]),  65,124},
  {&(_ZTV9S19940C21[77]),  77,124},
  {&(_ZTV9S19940C21[94]),  94,124},
  {&(_ZTV9S19940C21[101]),  101,124},
  {&(_ZTV9S19940C21[108]),  108,124},
  {&(_ZTV9S19940C21[113]),  113,124},
  {&(_ZTV9S19940C21[121]),  121,124},
  {&(_tg__ZTV9S19940C16__9S19940C21[6]),  6,9},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C21[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A1__9S19940C21[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C16__9S19940C21[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C16__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C16__9S19940C21[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C16__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C7__A__9S19940C16__9S19940C21[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C21[3]),  3,4},
  {&(_tg__ZTV8S19940C8__9S19940C21[3]),  3,4},
  {&(_tg__ZTV8S19940C78S19940C8__A2__9S19940C21[3]),  3,4},
  {&(_tg__ZTV9S19940C17__9S19940C21[8]),  8,12},
  {&(_tg__ZTV8S19940C69S19940C17__A1__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C17__A1__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C17__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C8__9S19940C17__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C16__9S19940C17__9S19940C21[13]),  13,16},
  {&(_tg__ZTV8S19940C6__A1__9S19940C17__9S19940C21[5]),  5,6},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C17__9S19940C21[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C17__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A2__9S19940C17__9S19940C21[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C17__9S19940C21[2]),  2,5},
  {&(_tg__ZTV8S19940C9__9S19940C21[6]),  6,11},
  {&(_tg__ZTV9S19940C108S19940C9__9S19940C21[5]),  5,9},
  {&(_tg__ZTV9S19940C119S19940C108S19940C9__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C21[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C21[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__A1__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__A1__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C7__9S19940C108S19940C9__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C108S19940C9__9S19940C21[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C108S19940C9__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C7__8S19940C9__9S19940C21[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C10__8S19940C9__9S19940C21[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__8S19940C9__9S19940C21[4]),  4,6},
  {&(_tg__ZTV8S19940C49S19940C15__8S19940C9__9S19940C21[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19940C21[];
extern  VTBL_ENTRY _ZTV9S19940C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C21[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19940C21D0Ev,_ZThn732_N9S19940C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19940C21D1Ev,_ZThn732_N9S19940C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19940C21 = {  "S19940C21", // class name
  bases_S19940C21, 29,
  &(vtc_S19940C21[0]), // expected_vtbl_contents
  &(vtt_S19940C21[0]), // expected_vtt_contents
  ABISELECT(10656,7060), // object size
  NSPAIRA(_ZTI9S19940C21),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19940C21),124, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C21),57, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C20  : virtual S19940C21 {
  int s19940c20f0;
  long s19940c20f1;
  char s19940c20f2;
  char s19940c20f3;
  void *s19940c20f4;
  __tsi64 s19940c20f5;
  long s19940c20f6;
  int s19940c20f7;
  virtual void  v16(); // _ZN9S19940C203v16Ev
  ~S19940C20(); // tgen
  S19940C20(); // tgen
};
//SIG(-1 S19940C20) C1{ VBC2{ VBC3{ VBC4{ BC5{ m Fi[7] Fp FD FL Fc Fi[3] FL} VBC6{ VBC5 v2 Fc Fi Fc:8} v3 Fs:8 Fp Fc:0 Fc[4] Fi} BC7{ BC5 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC8{ VBC5 VBC6 VBC7 Fc Fi FU9{ m} Fc Fi} BC6 BC10{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU11{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} VBC12{ BC6 Fp} VBC13{ VBC6 BC4 VBC12 VBC3 BC5 vd v10 Fc:1} VBC14{ BC15{ VBC5 BC16{ VBC5 BC4 v11} BC7 BC8 v12 v13 Fi[4]} VBC17{ BC10 FC3[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC13 Fc Fc Fc} v14 Fi FC18{ BC19{ VBC5 BC20{ VBC5 BC21{ BC5 VBC22{ VBC5 v16 Fc Fi Fc:8} v17 Fs:8 Fp Fc:0 Fc[4] Fi} v18} BC23{ BC5 v19 v20 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC24{ VBC5 VBC22 VBC23 Fc Fi FU9 Fc Fi} v21 v22 Fi[4]} BC23 VBC25{ VBC21 BC23 BC24 BC22 BC26{ v23 v24 v25 Fp[2] FL Fp[8] Fi Fp Fi FU11[6] Fc} v26 Fp[7] Fc Fc Fi Fp} v15 FL Fp Fi}} VBC10 vd Fi Fi} v1 Fi Fl Fc Fc Fp FL Fl Fi}


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

static void Test_S19940C20()
{
  extern Class_Descriptor cd_S19940C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(671,1775)];
    init_test(&cd_S19940C20, buf);
    S19940C20 *dp, &lv = *(dp=new (buf) S19940C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10720,7096), "sizeof(S19940C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C20)");
    /*is_ambiguous_... S19940C20::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(672,416), "S19940C20");
    /*is_ambiguous_... S19940C20::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(816,524), "S19940C20");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C16*), ABISELECT(816,524), "S19940C20");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C16*), ABISELECT(816,524), "S19940C20");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C8*), ABISELECT(816,524), "S19940C20");
    /*is_ambiguous_... S19940C10::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C10*)(S19940C9*), ABISELECT(816,524), "S19940C20");
    /*is_ambiguous_... S19940C11::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(816,524), "S19940C20");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(816,524), "S19940C20");
    /*is_ambiguous_... S19940C20::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(792,508), "S19940C20");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C16*), ABISELECT(792,508), "S19940C20");
    /*is_ambiguous_... S19940C17::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C17*), ABISELECT(792,508), "S19940C20");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C17*), ABISELECT(792,508), "S19940C20");
    check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(792,508), "S19940C20");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(792,508), "S19940C20");
    check_base_class_offset(lv, (S19940C6*)(S19940C16*), ABISELECT(656,412), "S19940C20");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C16*), ABISELECT(96,52), "S19940C20");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C16*), ABISELECT(80,48), "S19940C20");
    /*is_ambiguous_... S19940C20::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(928,604), "S19940C20");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C16*), ABISELECT(912,600), "S19940C20");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(912,600), "S19940C20");
    check_base_class_offset(lv, (S19940C13*)(S19940C16*), ABISELECT(296,196), "S19940C20");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C16*), ABISELECT(320,216), "S19940C20");
    check_base_class_offset(lv, (S19940C4*)(S19940C16*), ABISELECT(352,232), "S19940C20");
    check_base_class_offset(lv, (S19940C16*)(S19940C21*), ABISELECT(80,48), "S19940C20");
    check_base_class_offset(lv, (S19940C16*)(S19940C17*), ABISELECT(80,48), "S19940C20");
    check_base_class_offset(lv, (S19940C7*)(S19940C8*), ABISELECT(1128,748), "S19940C20");
    check_base_class_offset(lv, (S19940C8*)(S19940C21*), ABISELECT(1128,748), "S19940C20");
    check_base_class_offset(lv, (S19940C8*)(S19940C17*), ABISELECT(1128,748), "S19940C20");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C17*), ABISELECT(1184,772), "S19940C20");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C17*), ABISELECT(1168,768), "S19940C20");
    /*is_ambiguous_... S19940C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C17*), ABISELECT(1312,864), "S19940C20");
    check_base_class_offset(lv, (S19940C17*)(S19940C21*), ABISELECT(1168,768), "S19940C20");
    /*is_ambiguous_... S19940C6::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(1440,948), "S19940C20");
    check_base_class_offset(lv, (S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(1424,944), "S19940C20");
    check_base_class_offset(lv, (S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(1424,944), "S19940C20");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(1584,1044), "S19940C20");
    /*is_ambiguous_... S19940C10::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(1568,1040), "S19940C20");
    check_base_class_offset(lv, (S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(1784,1188), "S19940C20");
    check_base_class_offset(lv, (S19940C10*)(S19940C9*), ABISELECT(1424,944), "S19940C20");
    check_base_class_offset(lv, (S19940C4*)(S19940C15*), ABISELECT(3552,2372), "S19940C20");
    check_base_class_offset(lv, (S19940C15*)(S19940C9*), ABISELECT(3552,2372), "S19940C20");
    check_base_class_offset(lv, (S19940C9*)(S19940C21*), ABISELECT(1424,944), "S19940C20");
    /*is_ambiguous_... S19940C21::S19940C4 */ AMB_check_base_class_offset(lv, (S19940C4*)(S19940C21*), ABISELECT(10480,6956), "S19940C20");
    check_base_class_offset(lv, (S19940C21*), ABISELECT(64,36), "S19940C20");
    check_field_offset(lv, s19940c20f0, ABISELECT(8,4), "S19940C20.s19940c20f0");
    check_field_offset(lv, s19940c20f1, ABISELECT(16,8), "S19940C20.s19940c20f1");
    check_field_offset(lv, s19940c20f2, ABISELECT(24,12), "S19940C20.s19940c20f2");
    check_field_offset(lv, s19940c20f3, ABISELECT(25,13), "S19940C20.s19940c20f3");
    check_field_offset(lv, s19940c20f4, ABISELECT(32,16), "S19940C20.s19940c20f4");
    check_field_offset(lv, s19940c20f5, ABISELECT(40,20), "S19940C20.s19940c20f5");
    check_field_offset(lv, s19940c20f6, ABISELECT(48,28), "S19940C20.s19940c20f6");
    check_field_offset(lv, s19940c20f7, ABISELECT(56,32), "S19940C20.s19940c20f7");
    test_class_info(&lv, &cd_S19940C20);
    dp->~S19940C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C20(Test_S19940C20, "S19940C20", ABISELECT(10720,7096));

#else // __cplusplus

extern void _ZN9S19940C20C1Ev();
extern void _ZN9S19940C20D1Ev();
Name_Map name_map_S19940C20[] = {
  NSPAIR(_ZN9S19940C20C1Ev),
  NSPAIR(_ZN9S19940C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C16;
extern VTBL_ENTRY _ZTI9S19940C16[];
extern  VTBL_ENTRY _ZTV9S19940C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C16[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C8;
extern VTBL_ENTRY _ZTI8S19940C8[];
extern  VTBL_ENTRY _ZTV8S19940C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C17;
extern VTBL_ENTRY _ZTI9S19940C17[];
extern  VTBL_ENTRY _ZTV9S19940C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C17[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C11;
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C10;
extern VTBL_ENTRY _ZTI9S19940C10[];
extern  VTBL_ENTRY _ZTV9S19940C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C10[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C15;
extern VTBL_ENTRY _ZTI9S19940C15[];
extern  VTBL_ENTRY _ZTV9S19940C15[];
extern Class_Descriptor cd_S19940C9;
extern VTBL_ENTRY _ZTI8S19940C9[];
extern  VTBL_ENTRY _ZTV8S19940C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C9[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C21;
extern VTBL_ENTRY _ZTI9S19940C21[];
extern  VTBL_ENTRY _ZTV9S19940C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C21[];
static Base_Class bases_S19940C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C3,    ABISELECT(672,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
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(816,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19940C7,    ABISELECT(792,508), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19940C6,    ABISELECT(656,412), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20636C3,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19940C12,    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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(928,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
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(912,600), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(296,196), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(320,216), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(352,232), //bcp->offset
    56, //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19940C16,    ABISELECT(80,48), //bcp->offset
    31, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19940C7,    ABISELECT(1128,748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19940C8,    ABISELECT(1128,748), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(1184,772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C6,    ABISELECT(1168,768), //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
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1312,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C17,    ABISELECT(1168,768), //bcp->offset
    83, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(1440,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C6,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19940C11,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(1584,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C12,    ABISELECT(1568,1040), //bcp->offset
    116, //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
    24, //immediately_derived
  0, 0},
  {&cd_S19940C13,    ABISELECT(1784,1188), //bcp->offset
    120, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19940C10,    ABISELECT(1424,944), //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
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(3552,2372), //bcp->offset
    125, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19940C15,    ABISELECT(3552,2372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19940C9,    ABISELECT(1424,944), //bcp->offset
    98, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19940C4,    ABISELECT(10480,6956), //bcp->offset
    133, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19940C21,    ABISELECT(64,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19940C20[];
extern void _ZN9S19940C203v16Ev();
extern void _ZN9S19940C20D1Ev();
extern void _ZN9S19940C20D0Ev();
extern void ABISELECT(_ZTv0_n104_N9S19940C20D1Ev,_ZTv0_n52_N9S19940C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19940C20D1Ev,_ZThn36_N9S19940C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19940C20D0Ev,_ZTv0_n52_N9S19940C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S19940C20D0Ev,_ZThn36_N9S19940C20D0Ev)() __attribute__((weak));
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19940C20D1Ev,_ZTv0_n40_N9S19940C20D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19940C20D1Ev,_ZThn768_N9S19940C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19940C20D0Ev,_ZTv0_n40_N9S19940C20D0Ev)();
extern void ABISELECT(_ZThn1168_N9S19940C20D0Ev,_ZThn768_N9S19940C20D0Ev)() __attribute__((weak));
extern void _ZN9S19940C173v15Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY vtc_S19940C20[] = {
  ABISELECT(10480,6956),
  ABISELECT(3552,2372),
  ABISELECT(1424,944),
  ABISELECT(1168,768),
  ABISELECT(1128,748),
  ABISELECT(912,600),
  ABISELECT(816,524),
  ABISELECT(792,508),
  ABISELECT(656,412),
  ABISELECT(80,48),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C203v16Ev,
  (VTBL_ENTRY)&_ZN9S19940C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C20D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19940C20D1Ev,_ZTv0_n52_N9S19940C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19940C20D0Ev,_ZTv0_n52_N9S19940C20D0Ev),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  ABISELECT(496,308),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(-352,-232),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-656,-412),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  0,
  ABISELECT(24,16),
  ABISELECT(-792,-508),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-912,-600),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1128,-748),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  ABISELECT(-1168,-768),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1168,-768),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C20D1Ev,_ZTv0_n40_N9S19940C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C20D0Ev,_ZTv0_n40_N9S19940C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1424,-944),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
  ABISELECT(-1568,-1040),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1784,-1188),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  0,
  0,
  0,
  ABISELECT(-3552,-2372),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  0,
  0,
  ABISELECT(-10480,-6956),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern VTBL_ENTRY _ZTV9S19940C20[];
extern void _ZN9S19940C21D1Ev();
extern void _ZN9S19940C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C21__9S19940C20[] = {
  ABISELECT(10416,6920),
  ABISELECT(3488,2336),
  ABISELECT(1360,908),
  ABISELECT(1104,732),
  ABISELECT(1064,712),
  ABISELECT(848,564),
  ABISELECT(752,488),
  ABISELECT(728,472),
  ABISELECT(592,376),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C21D0Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C21__9S19940C20[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C21__9S19940C20[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-592,-376),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C21__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-728,-472),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C21__9S19940C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C21__9S19940C20[] = {
  0,
  0,
  ABISELECT(-848,-564),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A1__9S19940C21__9S19940C20[] = {
  ABISELECT(496,308),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C21__9S19940C20[] = {
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C21__9S19940C20[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(-1064,-712),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev)();
extern void ABISELECT(_ZThn1104_N9S19940C21D1Ev,_ZThn732_N9S19940C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev)();
extern void ABISELECT(_ZThn1104_N9S19940C21D0Ev,_ZThn732_N9S19940C21D0Ev)() __attribute__((weak));
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C21__9S19940C20[] = {
  0,
  ABISELECT(-1104,-732),
  0,
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  ABISELECT(-1104,-732),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__9S19940C21__9S19940C20[] = {
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  ABISELECT(-1360,-908),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C129S19940C108S19940C9__A2__9S19940C21__9S19940C20[] = {
  ABISELECT(-1504,-1004),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C21__9S19940C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-1720,-1152),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__A1__9S19940C21__9S19940C20[] = {
  0,
  0,
  0,
  ABISELECT(-3488,-2336),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C4__A2__9S19940C21__9S19940C20[] = {
  0,
  0,
  0,
  ABISELECT(-10416,-6920),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C20[] = {
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-496,-312),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C20[] = {
  0,
  0,
  ABISELECT(-616,-404),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A1__9S19940C20[] = {
  ABISELECT(496,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C16__9S19940C20[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C16__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-712,-460),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C16__9S19940C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C16__9S19940C20[] = {
  0,
  0,
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C16__9S19940C20[] = {
  ABISELECT(496,308),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C20[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C20[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C20[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C8[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C78S19940C8__A2__9S19940C20[] = {
  ABISELECT(-312,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C17D1Ev();
extern void _ZN9S19940C17D0Ev();
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C20[] = {
  ABISELECT(-256,-168),
  ABISELECT(-512,-356),
  ABISELECT(-1088,-720),
  ABISELECT(-40,-20),
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C17__A1__9S19940C20[] = {
  ABISELECT(-352,-244),
  ABISELECT(-376,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C17__A1__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C17__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C17__9S19940C20[] = {
  0,
  ABISELECT(-312,-224),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C17__9S19940C20[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(832,552),
  ABISELECT(736,476),
  ABISELECT(712,460),
  ABISELECT(576,364),
  ABISELECT(1088,720),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C17__9S19940C20[] = {
  0,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(512,356),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C17__9S19940C20[] = {
  ABISELECT(616,404),
  ABISELECT(496,312),
  ABISELECT(520,328),
  ABISELECT(872,572),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C17__9S19940C20[] = {
  0,
  0,
  ABISELECT(256,168),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A2__9S19940C17__9S19940C20[] = {
  ABISELECT(496,308),
  ABISELECT(848,552),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C17__9S19940C20[] = {
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__9S19940C20[] = {
  ABISELECT(2128,1428),
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C108S19940C9__9S19940C20[] = {
  ABISELECT(-512,-344),
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C119S19940C108S19940C9__9S19940C20[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C20[] = {
  ABISELECT(-608,-420),
  ABISELECT(-632,-436),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__A1__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(992,680),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__A1__9S19940C20[] = {
  0,
  0,
  ABISELECT(872,588),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C108S19940C9__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C108S19940C9__9S19940C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C108S19940C9__9S19940C20[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C9__9S19940C20[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(632,436),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C10__8S19940C9__9S19940C20[] = {
  ABISELECT(-872,-588),
  ABISELECT(-992,-680),
  ABISELECT(-968,-664),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__8S19940C9__9S19940C20[] = {
  0,
  0,
  ABISELECT(512,344),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__8S19940C9__9S19940C20[] = {
  0,
  0,
  0,
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
static  VTT_ENTRY vtt_S19940C20[] = {
  {&(_ZTV9S19940C20[13]),  13,141},
  {&(_ZTV9S19940C20[29]),  29,141},
  {&(_ZTV9S19940C20[44]),  44,141},
  {&(_ZTV9S19940C20[66]),  66,141},
  {&(_ZTV9S19940C20[71]),  71,141},
  {&(_ZTV9S19940C20[52]),  52,141},
  {&(_ZTV9S19940C20[76]),  76,141},
  {&(_ZTV9S19940C20[55]),  55,141},
  {&(_ZTV9S19940C20[58]),  58,141},
  {&(_ZTV9S19940C20[82]),  82,141},
  {&(_ZTV9S19940C20[94]),  94,141},
  {&(_ZTV9S19940C20[111]),  111,141},
  {&(_ZTV9S19940C20[118]),  118,141},
  {&(_ZTV9S19940C20[125]),  125,141},
  {&(_ZTV9S19940C20[130]),  130,141},
  {&(_ZTV9S19940C20[138]),  138,141},
  {&(_tg__ZTV9S19940C21__9S19940C20[12]),  12,14},
  {&(_tg__ZTV9S19940C16__9S19940C21__9S19940C20[13]),  13,16},
  {&(_tg__ZTV8S19940C6__9S19940C21__9S19940C20[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C21__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C21__9S19940C20[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C21__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A1__9S19940C21__9S19940C20[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C21__9S19940C20[2]),  2,5},
  {&(_tg__ZTV8S19940C8__9S19940C21__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C17__9S19940C21__9S19940C20[11]),  11,15},
  {&(_tg__ZTV8S19940C9__9S19940C21__9S19940C20[13]),  13,18},
  {&(_tg__ZTV9S19940C129S19940C108S19940C9__A2__9S19940C21__9S19940C20[2]),  2,4},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C21__9S19940C20[5]),  5,5},
  {&(_tg__ZTV8S19940C49S19940C15__A1__9S19940C21__9S19940C20[5]),  5,8},
  {&(_tg__ZTV8S19940C4__A2__9S19940C21__9S19940C20[5]),  5,8},
  {&(_tg__ZTV9S19940C16__9S19940C20[6]),  6,9},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C20[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C16__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C16__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A1__9S19940C20[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C16__9S19940C20[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C16__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C16__9S19940C20[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C16__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C7__A__9S19940C16__9S19940C20[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C20[3]),  3,4},
  {&(_tg__ZTV8S19940C8__9S19940C20[3]),  3,4},
  {&(_tg__ZTV8S19940C78S19940C8__A2__9S19940C20[3]),  3,4},
  {&(_tg__ZTV9S19940C17__9S19940C20[8]),  8,12},
  {&(_tg__ZTV8S19940C69S19940C17__A1__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C17__A1__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C17__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C8__9S19940C17__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C16__9S19940C17__9S19940C20[13]),  13,16},
  {&(_tg__ZTV8S19940C6__A1__9S19940C17__9S19940C20[5]),  5,6},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C17__9S19940C20[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C17__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A2__9S19940C17__9S19940C20[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C17__9S19940C20[2]),  2,5},
  {&(_tg__ZTV8S19940C9__9S19940C20[6]),  6,11},
  {&(_tg__ZTV9S19940C108S19940C9__9S19940C20[5]),  5,9},
  {&(_tg__ZTV9S19940C119S19940C108S19940C9__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__A2__9S19940C20[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C20[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__A1__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__A1__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C7__9S19940C108S19940C9__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C108S19940C9__9S19940C20[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C108S19940C9__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C7__8S19940C9__9S19940C20[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C10__8S19940C9__9S19940C20[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__8S19940C9__9S19940C20[4]),  4,6},
  {&(_tg__ZTV8S19940C49S19940C15__8S19940C9__9S19940C20[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19940C20[];
extern  VTBL_ENTRY _ZTV9S19940C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C20[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19940C21D0Ev,_ZThn732_N9S19940C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N9S19940C21D1Ev,_ZThn732_N9S19940C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C20D0Ev,_ZTv0_n40_N9S19940C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1168_N9S19940C20D0Ev,_ZThn768_N9S19940C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C20D1Ev,_ZTv0_n40_N9S19940C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1168_N9S19940C20D1Ev,_ZThn768_N9S19940C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19940C20D0Ev,_ZTv0_n52_N9S19940C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19940C20D0Ev,_ZThn36_N9S19940C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19940C20D1Ev,_ZTv0_n52_N9S19940C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19940C20D1Ev,_ZThn36_N9S19940C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19940C20 = {  "S19940C20", // class name
  bases_S19940C20, 30,
  &(vtc_S19940C20[0]), // expected_vtbl_contents
  &(vtt_S19940C20[0]), // expected_vtt_contents
  ABISELECT(10720,7096), // object size
  NSPAIRA(_ZTI9S19940C20),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19940C20),141, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19940C20),73, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19940C1  : virtual S19940C2 , virtual S19940C8 , S19940C9 , S19940C19 , virtual S19940C20 {
  void *s19940c1f0;
  int s19940c1f1;
  void *s19940c1f2;
  int s19940c1f3;
  ~S19940C1(); // tgen
  S19940C1(); // tgen
};
//SIG(1 S19940C1) C1{ VBC2{ v1 v2 Fi Fc FC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} Fi Fp FC4{ v10 v11 v12 Fp[2] FL Fp[8] Fi Fp Fi FU5{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} Fi FC6{ BC3 VBC7{ VBC3 v3 Fc Fi Fc:8} v4 Fs:8 Fp Fc:0 Fc[4] Fi}[9] FL} VBC8{ BC7 Fp} BC9{ BC10{ VBC3 BC11{ VBC3 BC6 v5} BC12{ BC3 v6 v7 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC13{ VBC3 VBC7 VBC12 Fc Fi FU14{ m} Fc Fi} v8 v9 Fi[4]} VBC15{ BC4 FC16{ VBC6 BC12 BC13 BC7 BC4 v14 Fp[7] Fc Fc Fi Fp}[5] Fi Fc Fp Fc Fi:5 Fi[6] Fi FC17{ VBC7 BC6 VBC8 VBC16 BC3 vd v15 Fc:1} Fc Fc Fc} v13 Fi FC18{ BC19{ VBC3 BC20{ VBC3 BC21{ BC3 VBC22{ VBC3 v18 Fc Fi Fc:8} v19 Fs:8 Fp Fc:0 Fc[4] Fi} v20} BC23{ BC3 v21 v22 Fi Fi Fi Fc Fc Fc[5] Fc Fc[7] Fc:8 Fp[7] Fi FL} BC24{ VBC3 VBC22 VBC23 Fc Fi FU14 Fc Fi} v23 v24 Fi[4]} BC23 VBC25{ VBC21 BC23 BC24 BC22 BC26{ v25 v26 v27 Fp[2] FL Fp[8] Fi Fp Fi FU5[6] Fc} v28 Fp[7] Fc Fc Fi Fp} v17 FL Fp Fi}} BC27{ BC7 VBC12 BC17 FC2 FC15 Fi} VBC28{ VBC29{ VBC16 VBC8 VBC17 VBC9 VBC4 vd Fi Fi} v16 Fi Fl Fc Fc Fp FL Fl Fi} Fp Fi Fp Fi}


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

static void Test_S19940C1()
{
  extern Class_Descriptor cd_S19940C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1597,4301)];
    init_test(&cd_S19940C1, buf);
    S19940C1 *dp, &lv = *(dp=new (buf) S19940C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(25536,17200), "sizeof(S19940C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19940C1)");
    check_base_class_offset(lv, (S19940C2*), ABISELECT(12096,8164), "S19940C1");
    check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C8*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C10*)(S19940C9*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C19::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C19*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C13::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C16*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C7*)(S19940C16*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C10*)(S19940C9*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(14832,10124), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(14832,10124), "S19940C1");
    check_base_class_offset(lv, (S19940C7*)(S19940C8*), ABISELECT(14792,10104), "S19940C1");
    check_base_class_offset(lv, (S19940C8*), ABISELECT(14792,10104), "S19940C1");
    check_base_class_offset(lv, (S19940C8*)(S19940C17*)(S19940C19*), ABISELECT(14792,10104), "S19940C1");
    check_base_class_offset(lv, (S19940C8*)(S19940C21*), ABISELECT(14792,10104), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S19940C8*)(S19940C17*), ABISELECT(14792,10104), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(16,4), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C17::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C17*)(S19940C19*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C17*)(S19940C19*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*), ABISELECT(14928,10200), "S19940C1");
    check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C16*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C17*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C17*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(14928,10200), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), 0, "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C11*)(S19940C10*)(S19940C9*), 0, "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(160,100), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(144,96), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*), ABISELECT(14976,10220), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(14960,10216), "S19940C1");
    /*is_ambiguous_... S19940C19::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C19*), ABISELECT(14960,10216), "S19940C1");
    check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C16*), ABISELECT(14960,10216), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(14960,10216), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(360,244), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C10*)(S19940C9*), 0, "S19940C1");
    check_base_class_offset(lv, (S19940C4*)(S19940C15*), ABISELECT(15184,10364), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C15*)(S19940C9*), ABISELECT(15184,10364), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C15*)(S19940C9*), ABISELECT(15184,10364), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C9*), 0, "S19940C1");
    /*is_ambiguous_... S19940C19::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C19*), ABISELECT(2128,1428), "S19940C1");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C17*)(S19940C19*), ABISELECT(2176,1448), "S19940C1");
    /*is_ambiguous_... S19940C17::S19940C6 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C17*)(S19940C19*), ABISELECT(2160,1444), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C6 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*), ABISELECT(22704,15316), "S19940C1");
    check_base_class_offset(lv, (S19940C6*)(S19940C16*), ABISELECT(22688,15312), "S19940C1");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C16*), ABISELECT(22128,14952), "S19940C1");
    /*is_ambiguous_... S19940C16::S19940C12 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C16*), ABISELECT(22112,14948), "S19940C1");
    check_base_class_offset(lv, (S19940C13*)(S19940C16*), ABISELECT(22328,15096), "S19940C1");
    /*is_ambiguous_... S19940C16::S19940C7 */ AMB_check_base_class_offset(lv, (S19940C7*)(S19940C16*), ABISELECT(22352,15116), "S19940C1");
    check_base_class_offset(lv, (S19940C4*)(S19940C16*), ABISELECT(22384,15132), "S19940C1");
    check_base_class_offset(lv, (S19940C16*)(S19940C17*)(S19940C19*), ABISELECT(22112,14948), "S19940C1");
    check_base_class_offset(lv, (S19940C16*)(S19940C21*), ABISELECT(22112,14948), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S19940C16*)(S19940C17*), ABISELECT(22112,14948), "S19940C1");
    /*is_ambiguous_... S19940C17::S20636C3 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C17*)(S19940C19*), ABISELECT(2304,1540), "S19940C1");
    check_base_class_offset(lv, (S19940C17*)(S19940C19*), ABISELECT(2160,1444), "S19940C1");
    check_base_class_offset(lv, (S19940C19*), ABISELECT(2128,1428), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C17*), ABISELECT(22928,15460), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C17*), ABISELECT(22912,15456), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C17 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C17*), ABISELECT(23056,15552), "S19940C1");
    check_base_class_offset(lv, (S19940C17*)(S19940C21*), ABISELECT(22912,15456), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(23184,15636), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C6*)(S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(23168,15632), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C11*)(S19940C10*)(S19940C9*), ABISELECT(23168,15632), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S20636C3*)(S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(23328,15732), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C12*)(S19940C10*)(S19940C9*), ABISELECT(23312,15728), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C13*)(S19940C10*)(S19940C9*), ABISELECT(23528,15876), "S19940C1");
    /*is_ambiguous_... S19940C1::S19940C9 */ AMB_check_base_class_offset(lv, (S19940C10*)(S19940C9*), ABISELECT(23168,15632), "S19940C1");
    check_base_class_offset(lv, (S19940C9*)(S19940C21*), ABISELECT(23168,15632), "S19940C1");
    /*is_ambiguous_... S19940C21::S19940C4 */ AMB_check_base_class_offset(lv, (S19940C4*)(S19940C21*), ABISELECT(25296,17060), "S19940C1");
    check_base_class_offset(lv, (S19940C21*)(S19940C20*), ABISELECT(22888,15444), "S19940C1");
    check_base_class_offset(lv, (S19940C20*), ABISELECT(22824,15408), "S19940C1");
    check_field_offset(lv, s19940c1f0, ABISELECT(12056,8148), "S19940C1.s19940c1f0");
    check_field_offset(lv, s19940c1f1, ABISELECT(12064,8152), "S19940C1.s19940c1f1");
    check_field_offset(lv, s19940c1f2, ABISELECT(12072,8156), "S19940C1.s19940c1f2");
    check_field_offset(lv, s19940c1f3, ABISELECT(12080,8160), "S19940C1.s19940c1f3");
    test_class_info(&lv, &cd_S19940C1);
    dp->~S19940C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19940C1(Test_S19940C1, "S19940C1", ABISELECT(25536,17200));

#else // __cplusplus

extern void _ZN8S19940C1C1Ev();
extern void _ZN8S19940C1D1Ev();
Name_Map name_map_S19940C1[] = {
  NSPAIR(_ZN8S19940C1C1Ev),
  NSPAIR(_ZN8S19940C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19940C2;
extern VTBL_ENTRY _ZTI8S19940C2[];
extern  VTBL_ENTRY _ZTV8S19940C2[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C8;
extern VTBL_ENTRY _ZTI8S19940C8[];
extern  VTBL_ENTRY _ZTV8S19940C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C8[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C11;
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C10;
extern VTBL_ENTRY _ZTI9S19940C10[];
extern  VTBL_ENTRY _ZTV9S19940C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C10[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C15;
extern VTBL_ENTRY _ZTI9S19940C15[];
extern  VTBL_ENTRY _ZTV9S19940C15[];
extern Class_Descriptor cd_S19940C9;
extern VTBL_ENTRY _ZTI8S19940C9[];
extern  VTBL_ENTRY _ZTV8S19940C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C9[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C7;
extern VTBL_ENTRY _ZTI8S19940C7[];
extern  VTBL_ENTRY _ZTV8S19940C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C7[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C16;
extern VTBL_ENTRY _ZTI9S19940C16[];
extern  VTBL_ENTRY _ZTV9S19940C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C16[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C17;
extern VTBL_ENTRY _ZTI9S19940C17[];
extern  VTBL_ENTRY _ZTV9S19940C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C17[];
extern Class_Descriptor cd_S19940C19;
extern VTBL_ENTRY _ZTI9S19940C19[];
extern  VTBL_ENTRY _ZTV9S19940C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C19[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C17;
extern VTBL_ENTRY _ZTI9S19940C17[];
extern  VTBL_ENTRY _ZTV9S19940C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C17[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C6;
extern VTBL_ENTRY _ZTI8S19940C6[];
extern  VTBL_ENTRY _ZTV8S19940C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C6[];
extern Class_Descriptor cd_S19940C11;
extern VTBL_ENTRY _ZTI9S19940C11[];
extern  VTBL_ENTRY _ZTV9S19940C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C11[];
extern Class_Descriptor cd_S20636C3;
extern VTBL_ENTRY _ZTI8S20636C3[];
extern Class_Descriptor cd_S19940C12;
extern VTBL_ENTRY _ZTI9S19940C12[];
extern  VTBL_ENTRY _ZTV9S19940C12[];
extern Class_Descriptor cd_S19940C13;
extern VTBL_ENTRY _ZTI9S19940C13[];
extern  VTBL_ENTRY _ZTV9S19940C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C13[];
extern Class_Descriptor cd_S19940C10;
extern VTBL_ENTRY _ZTI9S19940C10[];
extern  VTBL_ENTRY _ZTV9S19940C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C10[];
extern Class_Descriptor cd_S19940C9;
extern VTBL_ENTRY _ZTI8S19940C9[];
extern  VTBL_ENTRY _ZTV8S19940C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C9[];
extern Class_Descriptor cd_S19940C4;
extern VTBL_ENTRY _ZTI8S19940C4[];
extern  VTBL_ENTRY _ZTV8S19940C4[];
extern Class_Descriptor cd_S19940C21;
extern VTBL_ENTRY _ZTI9S19940C21[];
extern  VTBL_ENTRY _ZTV9S19940C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C21[];
extern Class_Descriptor cd_S19940C20;
extern VTBL_ENTRY _ZTI9S19940C20[];
extern  VTBL_ENTRY _ZTV9S19940C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19940C20[];
static Base_Class bases_S19940C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19940C2,    ABISELECT(12096,8164), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    ABISELECT(14832,10124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19940C7,    ABISELECT(14792,10104), //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19940C8,    ABISELECT(14792,10104), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20636C3,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(14928,10200), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19940C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19940C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19940C12,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(14976,10220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C12,    ABISELECT(14960,10216), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19940C13,    ABISELECT(360,244), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19940C10,    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
    29, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(15184,10364), //bcp->offset
    76, //bcp->virtual_function_table_offset
    5, //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_S19940C15,    ABISELECT(15184,10364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19940C9,    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
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19940C7,    ABISELECT(2128,1428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(2176,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
    19, //immediately_derived
  0, 0},
  {&cd_S19940C6,    ABISELECT(2160,1444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(22704,15316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C6,    ABISELECT(22688,15312), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(22128,14952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C12,    ABISELECT(22112,14948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19940C13,    ABISELECT(22328,15096), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19940C7,    ABISELECT(22352,15116), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19940C4,    ABISELECT(22384,15132), //bcp->offset
    109, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19940C16,    ABISELECT(22112,14948), //bcp->offset
    84, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(2304,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
    29, //immediately_derived
  0, 0},
  {&cd_S19940C17,    ABISELECT(2160,1444), //bcp->offset
    42, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19940C19,    ABISELECT(2128,1428), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C3,    ABISELECT(22928,15460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C6,    ABISELECT(22912,15456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(23056,15552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C17,    ABISELECT(22912,15456), //bcp->offset
    153, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S20636C3,    ABISELECT(23184,15636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C6,    ABISELECT(23168,15632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19940C11,    ABISELECT(23168,15632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20636C3,    ABISELECT(23328,15732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19940C12,    ABISELECT(23312,15728), //bcp->offset
    186, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19940C13,    ABISELECT(23528,15876), //bcp->offset
    190, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19940C10,    ABISELECT(23168,15632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19940C9,    ABISELECT(23168,15632), //bcp->offset
    168, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19940C4,    ABISELECT(25296,17060), //bcp->offset
    195, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19940C21,    ABISELECT(22888,15444), //bcp->offset
    138, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19940C20,    ABISELECT(22824,15408), //bcp->offset
    120, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19940C1[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
extern void _ZN8S19940C1D1Ev();
extern void _ZN8S19940C1D0Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C72v3Ev();
extern void ABISELECT(_ZThn2128_N8S19940C1D1Ev,_ZThn1428_N8S19940C1D1Ev)();
extern void ABISELECT(_ZThn2128_N8S19940C1D0Ev,_ZThn1428_N8S19940C1D0Ev)();
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZThn2160_N8S19940C1D1Ev,_ZThn1444_N8S19940C1D1Ev)();
extern void ABISELECT(_ZThn2160_N8S19940C1D0Ev,_ZThn1444_N8S19940C1D0Ev)();
extern void _ZN9S19940C173v15Ev();
extern void _ZN8S19940C22v1Ev();
extern void _ZN8S19940C22v2Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
extern void _ZN8S19940C72v3Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C203v16Ev();
extern void ABISELECT(_ZTv0_n120_N8S19940C1D1Ev,_ZTv0_n60_N8S19940C1D1Ev)();
extern void ABISELECT(_ZThn22824_N8S19940C1D1Ev,_ZThn15408_N8S19940C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19940C1D0Ev,_ZTv0_n60_N8S19940C1D0Ev)();
extern void ABISELECT(_ZThn22824_N8S19940C1D0Ev,_ZThn15408_N8S19940C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19940C1D1Ev,_ZTv0_n52_N8S19940C1D1Ev)();
extern void ABISELECT(_ZThn22888_N8S19940C1D1Ev,_ZThn15444_N8S19940C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19940C1D0Ev,_ZTv0_n52_N8S19940C1D0Ev)();
extern void ABISELECT(_ZThn22888_N8S19940C1D0Ev,_ZThn15444_N8S19940C1D0Ev)() __attribute__((weak));
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N8S19940C1D1Ev,_ZTv0_n40_N8S19940C1D1Ev)();
extern void ABISELECT(_ZThn22912_N8S19940C1D1Ev,_ZThn15456_N8S19940C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19940C1D0Ev,_ZTv0_n40_N8S19940C1D0Ev)();
extern void ABISELECT(_ZThn22912_N8S19940C1D0Ev,_ZThn15456_N8S19940C1D0Ev)() __attribute__((weak));
extern void _ZN9S19940C173v15Ev();
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY vtc_S19940C1[] = {
  ABISELECT(25296,17060),
  ABISELECT(23168,15632),
  ABISELECT(22912,15456),
  ABISELECT(22888,15444),
  ABISELECT(22824,15408),
  ABISELECT(22688,15312),
  ABISELECT(22112,14948),
  ABISELECT(14792,10104),
  ABISELECT(12096,8164),
  ABISELECT(15184,10364),
  ABISELECT(14960,10216),
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19940C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19940C1D0Ev,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  ABISELECT(20560,13884),
  ABISELECT(19984,13520),
  ABISELECT(12664,8676),
  ABISELECT(12800,8772),
  ABISELECT(12832,8788),
  ABISELECT(12704,8696),
  ABISELECT(-2128,-1428),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn2128_N8S19940C1D1Ev,_ZThn1428_N8S19940C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn2128_N8S19940C1D0Ev,_ZThn1428_N8S19940C1D0Ev),
  ABISELECT(12800,8772),
  ABISELECT(20528,13868),
  ABISELECT(19952,13504),
  ABISELECT(12632,8660),
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  ABISELECT(-2160,-1444),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn2160_N8S19940C1D1Ev,_ZThn1444_N8S19940C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn2160_N8S19940C1D0Ev,_ZThn1444_N8S19940C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
  0,
  0,
  ABISELECT(-12096,-8164),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19940C22v2Ev,
  0,
  ABISELECT(40,20),
  ABISELECT(-14792,-10104),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  0,
  0,
  ABISELECT(-14960,-10216),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  0,
  0,
  0,
  ABISELECT(-15184,-10364),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(-22112,-14948),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-22328,-15096),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  ABISELECT(-7520,-4992),
  ABISELECT(-22352,-15116),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  ABISELECT(-22384,-15132),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-22688,-15312),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  ABISELECT(-22824,-15408),
  0,
  ABISELECT(2472,1652),
  ABISELECT(-7640,-5044),
  ABISELECT(344,224),
  ABISELECT(88,48),
  ABISELECT(-8032,-5304),
  ABISELECT(-7864,-5192),
  ABISELECT(-7992,-5284),
  ABISELECT(-7896,-5208),
  ABISELECT(-136,-96),
  ABISELECT(-712,-460),
  ABISELECT(64,36),
  ABISELECT(-22824,-15408),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN9S19940C203v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19940C1D1Ev,_ZTv0_n60_N8S19940C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19940C1D0Ev,_ZTv0_n60_N8S19940C1D0Ev),
  ABISELECT(-22888,-15444),
  ABISELECT(2408,1616),
  ABISELECT(-7704,-5080),
  ABISELECT(280,188),
  ABISELECT(24,12),
  ABISELECT(-8096,-5340),
  ABISELECT(-7928,-5228),
  ABISELECT(-8056,-5320),
  ABISELECT(-7960,-5244),
  ABISELECT(-200,-132),
  ABISELECT(-776,-496),
  ABISELECT(-22888,-15444),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19940C1D1Ev,_ZTv0_n52_N8S19940C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19940C1D0Ev,_ZTv0_n52_N8S19940C1D0Ev),
  0,
  ABISELECT(-22912,-15456),
  0,
  ABISELECT(-7952,-5240),
  ABISELECT(-224,-144),
  ABISELECT(-800,-508),
  ABISELECT(-8120,-5352),
  ABISELECT(-8080,-5332),
  ABISELECT(-7984,-5256),
  ABISELECT(-22912,-15456),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19940C1D1Ev,_ZTv0_n40_N8S19940C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19940C1D0Ev,_ZTv0_n40_N8S19940C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-7984,-5268),
  ABISELECT(-8208,-5416),
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  ABISELECT(-23168,-15632),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
  ABISELECT(-23312,-15728),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  ABISELECT(-8568,-5660),
  ABISELECT(-8600,-5676),
  ABISELECT(-8696,-5752),
  ABISELECT(-23528,-15876),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  0,
  0,
  0,
  ABISELECT(-25296,-17060),
  (VTBL_ENTRY)&(_ZTI8S19940C1[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S19940C1[];
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__A__8S19940C1[] = {
  ABISELECT(15184,10364),
  ABISELECT(14960,10216),
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C108S19940C9__8S19940C1[] = {
  ABISELECT(14960,10216),
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C119S19940C108S19940C9__8S19940C1[] = {
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C119S19940C108S19940C9__8S19940C1[] = {
  ABISELECT(14832,10124),
  ABISELECT(14928,10200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__8S19940C1[] = {
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14568,-9956),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__8S19940C1[] = {
  0,
  0,
  ABISELECT(-14600,-9972),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C108S19940C9__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C108S19940C9__8S19940C1[] = {
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C108S19940C9__8S19940C1[] = {
  0,
  0,
  ABISELECT(-14960,-10216),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C9__A__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-14928,-10200),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C10__8S19940C9__A__8S19940C1[] = {
  ABISELECT(14600,9972),
  ABISELECT(14568,9956),
  ABISELECT(14472,9880),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__8S19940C9__A__8S19940C1[] = {
  0,
  0,
  ABISELECT(-14960,-10216),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__8S19940C9__A__8S19940C1[] = {
  0,
  0,
  0,
  ABISELECT(-15184,-10364),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C72v3Ev();
extern void _ZN9S19940C19D1Ev();
extern void _ZN9S19940C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C19__8S19940C1[] = {
  ABISELECT(20560,13884),
  ABISELECT(19984,13520),
  ABISELECT(12664,8676),
  ABISELECT(12800,8772),
  ABISELECT(12832,8788),
  ABISELECT(12704,8696),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19940C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C19D0Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C19__A2__8S19940C1[] = {
  ABISELECT(12704,8696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C17D1Ev();
extern void _ZN9S19940C17D0Ev();
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C179S19940C19__8S19940C1[] = {
  ABISELECT(12800,8772),
  ABISELECT(20528,13868),
  ABISELECT(19952,13504),
  ABISELECT(12632,8660),
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C179S19940C19__A1__8S19940C1[] = {
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C179S19940C19__A1__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12768,-8756),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C179S19940C19__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12768,-8756),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C179S19940C19__8S19940C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(-12632,-8660),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C179S19940C19__8S19940C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(-19952,-13504),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C179S19940C19__8S19940C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-20528,-13868),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C179S19940C19__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-20168,-13652),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C179S19940C19__8S19940C1[] = {
  0,
  0,
  ABISELECT(-12800,-8772),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A2__9S19940C179S19940C19__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(-20192,-13672),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C179S19940C19__8S19940C1[] = {
  ABISELECT(-20224,-13688),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C19__8S19940C1[] = {
  0,
  0,
  ABISELECT(-12832,-8788),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZThn32_N9S19940C19D1Ev,_ZThn16_N9S19940C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S19940C19D0Ev,_ZThn16_N9S19940C19D0Ev)();
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C19__8S19940C1[] = {
  ABISELECT(12800,8772),
  ABISELECT(20528,13868),
  ABISELECT(19952,13504),
  ABISELECT(12632,8660),
  ABISELECT(12672,8680),
  ABISELECT(12768,8756),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19940C19D1Ev,_ZThn16_N9S19940C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19940C19D0Ev,_ZThn16_N9S19940C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A1__9S19940C19__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-12800,-8772),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C19__8S19940C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(-12664,-8676),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C19__8S19940C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(-19984,-13520),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C19__8S19940C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-20560,-13884),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C19__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-20200,-13668),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A3__9S19940C19__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(-20224,-13688),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C19__8S19940C1[] = {
  ABISELECT(-20256,-13704),
  (VTBL_ENTRY)&(_ZTI9S19940C19[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__8S19940C1[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C8[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C78S19940C8__8S19940C1[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A1__8S19940C1[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__8S19940C1[] = {
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__A1__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C16__A1__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7400,4896),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C16__A1__8S19940C1[] = {
  0,
  0,
  ABISELECT(7368,4880),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A3__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C7[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C16__8S19940C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(-576,-364),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C16__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7184,4748),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C16__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C16__8S19940C1[] = {
  0,
  0,
  ABISELECT(7152,4732),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__A__9S19940C16__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19940C16[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A2__8S19940C1[] = {
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C6__A2__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7760,5112),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C203v16Ev();
extern void _ZN9S19940C20D1Ev();
extern void _ZN9S19940C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C20__8S19940C1[] = {
  ABISELECT(2472,1652),
  ABISELECT(-7640,-5044),
  ABISELECT(344,224),
  ABISELECT(88,48),
  ABISELECT(-8032,-5304),
  ABISELECT(-7864,-5192),
  ABISELECT(-7992,-5284),
  ABISELECT(-7896,-5208),
  ABISELECT(-136,-96),
  ABISELECT(-712,-460),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C203v16Ev,
  (VTBL_ENTRY)&_ZN9S19940C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C20D0Ev,
};
extern void ABISELECT(_ZTv0_n104_N9S19940C20D1Ev,_ZTv0_n52_N9S19940C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19940C20D1Ev,_ZThn36_N9S19940C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19940C20D0Ev,_ZTv0_n52_N9S19940C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S19940C20D0Ev,_ZThn36_N9S19940C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19940C21__9S19940C20__8S19940C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(2408,1616),
  ABISELECT(-7704,-5080),
  ABISELECT(280,188),
  ABISELECT(24,12),
  ABISELECT(-8096,-5340),
  ABISELECT(-7928,-5228),
  ABISELECT(-8056,-5320),
  ABISELECT(-7960,-5244),
  ABISELECT(-200,-132),
  ABISELECT(-776,-496),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19940C20D1Ev,_ZTv0_n52_N9S19940C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19940C20D0Ev,_ZTv0_n52_N9S19940C20D0Ev),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C20__8S19940C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(712,460),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C20__8S19940C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C20__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7896,5208),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C20__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(496,312),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C20__8S19940C1[] = {
  0,
  0,
  ABISELECT(7864,5192),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A1__9S19940C20__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(472,292),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C20__8S19940C1[] = {
  ABISELECT(440,276),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C20__8S19940C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(8032,5304),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19940C20D1Ev,_ZTv0_n40_N9S19940C20D1Ev)();
extern void ABISELECT(_ZThn88_N9S19940C20D1Ev,_ZThn48_N9S19940C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19940C20D0Ev,_ZTv0_n40_N9S19940C20D0Ev)();
extern void ABISELECT(_ZThn88_N9S19940C20D0Ev,_ZThn48_N9S19940C20D0Ev)() __attribute__((weak));
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C20__8S19940C1[] = {
  0,
  ABISELECT(-88,-48),
  0,
  ABISELECT(-7952,-5240),
  ABISELECT(-224,-144),
  ABISELECT(-800,-508),
  ABISELECT(-8120,-5352),
  ABISELECT(-8080,-5332),
  ABISELECT(-7984,-5256),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C20D1Ev,_ZTv0_n40_N9S19940C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C20D0Ev,_ZTv0_n40_N9S19940C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__9S19940C20__8S19940C1[] = {
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-7984,-5268),
  ABISELECT(-8208,-5416),
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  ABISELECT(-344,-224),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C129S19940C108S19940C9__A2__9S19940C20__8S19940C1[] = {
  ABISELECT(-488,-320),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C20__8S19940C1[] = {
  ABISELECT(-8568,-5660),
  ABISELECT(-8600,-5676),
  ABISELECT(-8696,-5752),
  ABISELECT(-704,-468),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__A1__9S19940C20__8S19940C1[] = {
  0,
  0,
  0,
  ABISELECT(7640,5044),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C4__A2__9S19940C20__8S19940C1[] = {
  0,
  0,
  0,
  ABISELECT(-2472,-1652),
  (VTBL_ENTRY)&(_ZTI9S19940C20[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN9S19940C21D1Ev();
extern void _ZN9S19940C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C21__8S19940C1[] = {
  ABISELECT(2408,1616),
  ABISELECT(-7704,-5080),
  ABISELECT(280,188),
  ABISELECT(24,12),
  ABISELECT(-8096,-5340),
  ABISELECT(-7928,-5228),
  ABISELECT(-8056,-5320),
  ABISELECT(-7960,-5244),
  ABISELECT(-200,-132),
  ABISELECT(-776,-496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C21D0Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C21__8S19940C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(776,496),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__9S19940C21__8S19940C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C21__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7960,5244),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C21__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C21__8S19940C1[] = {
  0,
  0,
  ABISELECT(7928,5228),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A1__9S19940C21__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(536,328),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C21__8S19940C1[] = {
  ABISELECT(504,312),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C21__8S19940C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(8096,5340),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev)();
extern void ABISELECT(_ZThn24_N9S19940C21D1Ev,_ZThn12_N9S19940C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev)();
extern void ABISELECT(_ZThn24_N9S19940C21D0Ev,_ZThn12_N9S19940C21D0Ev)() __attribute__((weak));
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__9S19940C21__8S19940C1[] = {
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-7952,-5240),
  ABISELECT(-224,-144),
  ABISELECT(-800,-508),
  ABISELECT(-8120,-5352),
  ABISELECT(-8080,-5332),
  ABISELECT(-7984,-5256),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__9S19940C21__8S19940C1[] = {
  0,
  ABISELECT(144,96),
  ABISELECT(144,96),
  0,
  0,
  0,
  0,
  ABISELECT(-7984,-5268),
  ABISELECT(-8208,-5416),
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C129S19940C108S19940C9__A2__9S19940C21__8S19940C1[] = {
  ABISELECT(-424,-284),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C21__8S19940C1[] = {
  ABISELECT(-8568,-5660),
  ABISELECT(-8600,-5676),
  ABISELECT(-8696,-5752),
  ABISELECT(-640,-432),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__A1__9S19940C21__8S19940C1[] = {
  0,
  0,
  0,
  ABISELECT(7704,5080),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C4__A2__9S19940C21__8S19940C1[] = {
  0,
  0,
  0,
  ABISELECT(-2408,-1616),
  (VTBL_ENTRY)&(_ZTI9S19940C21[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C17D1Ev();
extern void _ZN9S19940C17D0Ev();
extern void _ZN9S19940C173v15Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C17__A1__8S19940C1[] = {
  ABISELECT(-7952,-5240),
  ABISELECT(-224,-144),
  ABISELECT(-800,-508),
  ABISELECT(-8120,-5352),
  ABISELECT(-8080,-5332),
  ABISELECT(-7984,-5256),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19940C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19940C173v15Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C17__A3__8S19940C1[] = {
  ABISELECT(-8080,-5332),
  ABISELECT(-7984,-5256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C17__A3__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7984,5256),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C17__A1__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(7984,5256),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C8__9S19940C17__A1__8S19940C1[] = {
  0,
  ABISELECT(40,20),
  ABISELECT(8120,5352),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
extern void _ZN9S19940C163v14Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C16__9S19940C17__A1__8S19940C1[] = {
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(272,184),
  ABISELECT(240,168),
  0,
  0,
  0,
  ABISELECT(-7152,-4732),
  ABISELECT(-7280,-4824),
  ABISELECT(-7184,-4748),
  ABISELECT(576,364),
  ABISELECT(800,508),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
  (VTBL_ENTRY)&_ZN9S19940C163v14Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C6__A1__9S19940C17__A1__8S19940C1[] = {
  0,
  ABISELECT(-7856,-5188),
  ABISELECT(-7760,-5112),
  ABISELECT(224,144),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C16__9S19940C17__A1__8S19940C1[] = {
  ABISELECT(-7368,-4880),
  ABISELECT(-7400,-4896),
  ABISELECT(-7496,-4972),
  ABISELECT(584,360),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C17__A1__8S19940C1[] = {
  0,
  0,
  ABISELECT(7952,5240),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C79S19940C16__A2__9S19940C17__A1__8S19940C1[] = {
  ABISELECT(-7520,-4992),
  ABISELECT(560,340),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C16__9S19940C17__A1__8S19940C1[] = {
  ABISELECT(528,324),
  (VTBL_ENTRY)&(_ZTI9S19940C17[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
extern void _ZN8S19940C93v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C9__A1__8S19940C1[] = {
  ABISELECT(-7984,-5268),
  ABISELECT(-8208,-5416),
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
  (VTBL_ENTRY)&_ZN8S19940C93v13Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
extern void _ZN9S19940C102v8Ev();
extern void _ZN9S19940C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C108S19940C9__A1__8S19940C1[] = {
  ABISELECT(-8208,-5416),
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v8Ev,
  (VTBL_ENTRY)&_ZN9S19940C102v9Ev,
};
extern void _ZN8S19940C62v4Ev();
extern void _ZN9S19940C112v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C119S19940C108S19940C9__A1__8S19940C1[] = {
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
  (VTBL_ENTRY)&_ZN9S19940C112v5Ev,
};
extern void _ZN8S19940C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C69S19940C119S19940C108S19940C9__A4__8S19940C1[] = {
  ABISELECT(-8336,-5508),
  ABISELECT(-8240,-5432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C62v4Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__A4__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5432),
  (VTBL_ENTRY)&(_ZTI8S19940C6[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__A1__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5432),
  (VTBL_ENTRY)&(_ZTI9S19940C11[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C108S19940C9__A2__8S19940C1[] = {
  ABISELECT(-8568,-5660),
  ABISELECT(-8600,-5676),
  ABISELECT(-8696,-5752),
  0,
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__A2__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8600,5676),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__A2__8S19940C1[] = {
  0,
  0,
  ABISELECT(8568,5660),
  (VTBL_ENTRY)&(_ZTI9S19940C13[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__9S19940C108S19940C9__A1__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5432),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C13__9S19940C108S19940C9__A1__8S19940C1[] = {
  ABISELECT(-8568,-5660),
  ABISELECT(-8600,-5676),
  ABISELECT(-8696,-5752),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__9S19940C108S19940C9__A1__8S19940C1[] = {
  0,
  0,
  ABISELECT(8208,5416),
  (VTBL_ENTRY)&(_ZTI9S19940C10[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C7__8S19940C9__A1__8S19940C1[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(8240,5432),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19940C139S19940C10__8S19940C9__A1__8S19940C1[] = {
  ABISELECT(-8568,-5660),
  ABISELECT(-8600,-5676),
  ABISELECT(-8696,-5752),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
};
extern void _ZN9S19940C122v6Ev();
extern void _ZN9S19940C122v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19940C12__A1__8S19940C9__A1__8S19940C1[] = {
  0,
  0,
  ABISELECT(8208,5416),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN9S19940C122v6Ev,
  (VTBL_ENTRY)&_ZN9S19940C122v7Ev,
};
extern void _ZN8S19940C43v10Ev();
extern void _ZN8S19940C43v11Ev();
extern void _ZN8S19940C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19940C49S19940C15__8S19940C9__A1__8S19940C1[] = {
  0,
  0,
  0,
  ABISELECT(7984,5268),
  (VTBL_ENTRY)&(_ZTI8S19940C9[0]),
  (VTBL_ENTRY)&_ZN8S19940C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19940C43v12Ev,
};
static  VTT_ENTRY vtt_S19940C1[] = {
  {&(_ZTV8S19940C1[15]),  15,203},
  {&(_tg__ZTV8S19940C9__A__8S19940C1[6]),  6,11},
  {&(_tg__ZTV9S19940C108S19940C9__8S19940C1[5]),  5,9},
  {&(_tg__ZTV9S19940C119S19940C108S19940C9__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C69S19940C119S19940C108S19940C9__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__8S19940C1[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C7__9S19940C108S19940C9__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C108S19940C9__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C108S19940C9__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C7__8S19940C9__A__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C10__8S19940C9__A__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__8S19940C9__A__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C49S19940C15__8S19940C9__A__8S19940C1[5]),  5,8},
  {&(_tg__ZTV9S19940C19__8S19940C1[8]),  8,11},
  {&(_tg__ZTV8S19940C79S19940C19__A2__8S19940C1[3]),  3,4},
  {&(_tg__ZTV9S19940C179S19940C19__8S19940C1[8]),  8,12},
  {&(_tg__ZTV8S19940C69S19940C179S19940C19__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C179S19940C19__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C179S19940C19__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C8__9S19940C179S19940C19__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C16__9S19940C179S19940C19__8S19940C1[13]),  13,16},
  {&(_tg__ZTV8S19940C6__A1__9S19940C179S19940C19__8S19940C1[5]),  5,6},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C179S19940C19__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C179S19940C19__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A2__9S19940C179S19940C19__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C179S19940C19__8S19940C1[2]),  2,5},
  {&(_tg__ZTV9S19940C12__9S19940C19__8S19940C1[4]),  4,6},
  {&(_tg__ZTV9S19940C17__9S19940C19__8S19940C1[8]),  8,12},
  {&(_tg__ZTV8S19940C7__A1__9S19940C19__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C8__9S19940C19__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C16__9S19940C19__8S19940C1[13]),  13,16},
  {&(_tg__ZTV8S19940C6__A1__9S19940C19__8S19940C1[5]),  5,6},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C19__8S19940C1[5]),  5,5},
  {&(_tg__ZTV8S19940C79S19940C16__A3__9S19940C19__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C19__8S19940C1[2]),  2,5},
  {&(_ZTV8S19940C1[58]),  58,203},
  {&(_ZTV8S19940C1[64]),  64,203},
  {&(_ZTV8S19940C1[69]),  69,203},
  {&(_ZTV8S19940C1[31]),  31,203},
  {&(_ZTV8S19940C1[74]),  74,203},
  {&(_ZTV8S19940C1[81]),  81,203},
  {&(_ZTV8S19940C1[39]),  39,203},
  {&(_ZTV8S19940C1[50]),  50,203},
  {&(_ZTV8S19940C1[97]),  97,203},
  {&(_ZTV8S19940C1[119]),  119,203},
  {&(_ZTV8S19940C1[105]),  105,203},
  {&(_ZTV8S19940C1[108]),  108,203},
  {&(_ZTV8S19940C1[111]),  111,203},
  {&(_ZTV8S19940C1[135]),  135,203},
  {&(_ZTV8S19940C1[151]),  151,203},
  {&(_ZTV8S19940C1[164]),  164,203},
  {&(_ZTV8S19940C1[181]),  181,203},
  {&(_ZTV8S19940C1[188]),  188,203},
  {&(_ZTV8S19940C1[195]),  195,203},
  {&(_ZTV8S19940C1[200]),  200,203},
  {&(_tg__ZTV8S19940C8__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C78S19940C8__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C7__A1__8S19940C1[3]),  3,4},
  {&(_tg__ZTV9S19940C16__8S19940C1[6]),  6,9},
  {&(_tg__ZTV9S19940C139S19940C16__A1__8S19940C1[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C16__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C16__A1__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A3__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C6__9S19940C16__8S19940C1[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C16__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C16__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C16__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C7__A__9S19940C16__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C6__A2__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C6__A2__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C20__8S19940C1[13]),  13,16},
  {&(_tg__ZTV9S19940C21__9S19940C20__8S19940C1[13]),  13,15},
  {&(_tg__ZTV9S19940C16__9S19940C20__8S19940C1[13]),  13,16},
  {&(_tg__ZTV8S19940C6__9S19940C20__8S19940C1[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C20__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C20__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C20__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A1__9S19940C20__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C20__8S19940C1[2]),  2,5},
  {&(_tg__ZTV8S19940C8__9S19940C20__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C17__9S19940C20__8S19940C1[11]),  11,15},
  {&(_tg__ZTV8S19940C9__9S19940C20__8S19940C1[13]),  13,18},
  {&(_tg__ZTV9S19940C129S19940C108S19940C9__A2__9S19940C20__8S19940C1[2]),  2,4},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C20__8S19940C1[5]),  5,5},
  {&(_tg__ZTV8S19940C49S19940C15__A1__9S19940C20__8S19940C1[5]),  5,8},
  {&(_tg__ZTV8S19940C4__A2__9S19940C20__8S19940C1[5]),  5,8},
  {&(_tg__ZTV9S19940C21__8S19940C1[12]),  12,14},
  {&(_tg__ZTV9S19940C16__9S19940C21__8S19940C1[13]),  13,16},
  {&(_tg__ZTV8S19940C6__9S19940C21__8S19940C1[5]),  5,6},
  {&(_tg__ZTV8S19940C7__9S19940C21__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C21__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C21__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A1__9S19940C21__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C21__8S19940C1[2]),  2,5},
  {&(_tg__ZTV8S19940C8__9S19940C21__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C17__9S19940C21__8S19940C1[11]),  11,15},
  {&(_tg__ZTV8S19940C9__9S19940C21__8S19940C1[13]),  13,18},
  {&(_tg__ZTV9S19940C129S19940C108S19940C9__A2__9S19940C21__8S19940C1[2]),  2,4},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__A1__9S19940C21__8S19940C1[5]),  5,5},
  {&(_tg__ZTV8S19940C49S19940C15__A1__9S19940C21__8S19940C1[5]),  5,8},
  {&(_tg__ZTV8S19940C4__A2__9S19940C21__8S19940C1[5]),  5,8},
  {&(_tg__ZTV9S19940C17__A1__8S19940C1[8]),  8,12},
  {&(_tg__ZTV8S19940C69S19940C17__A3__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C17__A3__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C17__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C8__9S19940C17__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C16__9S19940C17__A1__8S19940C1[13]),  13,16},
  {&(_tg__ZTV8S19940C6__A1__9S19940C17__A1__8S19940C1[5]),  5,6},
  {&(_tg__ZTV9S19940C139S19940C16__9S19940C17__A1__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C17__A1__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C79S19940C16__A2__9S19940C17__A1__8S19940C1[3]),  3,4},
  {&(_tg__ZTV8S19940C49S19940C16__9S19940C17__A1__8S19940C1[2]),  2,5},
  {&(_tg__ZTV8S19940C9__A1__8S19940C1[6]),  6,11},
  {&(_tg__ZTV9S19940C108S19940C9__A1__8S19940C1[5]),  5,9},
  {&(_tg__ZTV9S19940C119S19940C108S19940C9__A1__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C69S19940C119S19940C108S19940C9__A4__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__8S19940C69S19940C119S19940C108S19940C9__A4__8S19940C1[4]),  4,5},
  {&(_tg__ZTV8S19940C7__9S19940C119S19940C108S19940C9__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C108S19940C9__A2__8S19940C1[5]),  5,5},
  {&(_tg__ZTV8S19940C7__9S19940C139S19940C108S19940C9__A2__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C12__9S19940C139S19940C108S19940C9__A2__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C7__9S19940C108S19940C9__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C13__9S19940C108S19940C9__A1__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__9S19940C108S19940C9__A1__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C7__8S19940C9__A1__8S19940C1[4]),  4,5},
  {&(_tg__ZTV9S19940C139S19940C10__8S19940C9__A1__8S19940C1[5]),  5,5},
  {&(_tg__ZTV9S19940C12__A1__8S19940C9__A1__8S19940C1[4]),  4,6},
  {&(_tg__ZTV8S19940C49S19940C15__8S19940C9__A1__8S19940C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19940C1[];
extern  VTBL_ENTRY _ZTV8S19940C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19940C1[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C21D0Ev,_ZTv0_n40_N9S19940C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19940C21D0Ev,_ZThn12_N9S19940C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C21D1Ev,_ZTv0_n40_N9S19940C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19940C21D1Ev,_ZThn12_N9S19940C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C20D0Ev,_ZTv0_n40_N9S19940C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19940C20D0Ev,_ZThn48_N9S19940C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19940C20D1Ev,_ZTv0_n40_N9S19940C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19940C20D1Ev,_ZThn48_N9S19940C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19940C20D0Ev,_ZTv0_n52_N9S19940C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19940C20D0Ev,_ZThn36_N9S19940C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19940C20D1Ev,_ZTv0_n52_N9S19940C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19940C20D1Ev,_ZThn36_N9S19940C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19940C1D0Ev,_ZTv0_n40_N8S19940C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22912_N8S19940C1D0Ev,_ZThn15456_N8S19940C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19940C1D1Ev,_ZTv0_n40_N8S19940C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22912_N8S19940C1D1Ev,_ZThn15456_N8S19940C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19940C1D0Ev,_ZTv0_n52_N8S19940C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22888_N8S19940C1D0Ev,_ZThn15444_N8S19940C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19940C1D1Ev,_ZTv0_n52_N8S19940C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22888_N8S19940C1D1Ev,_ZThn15444_N8S19940C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19940C1D0Ev,_ZTv0_n60_N8S19940C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22824_N8S19940C1D0Ev,_ZThn15408_N8S19940C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19940C1D1Ev,_ZTv0_n60_N8S19940C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn22824_N8S19940C1D1Ev,_ZThn15408_N8S19940C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19940C1 = {  "S19940C1", // class name
  bases_S19940C1, 46,
  &(vtc_S19940C1[0]), // expected_vtbl_contents
  &(vtt_S19940C1[0]), // expected_vtt_contents
  ABISELECT(25536,17200), // object size
  NSPAIRA(_ZTI8S19940C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19940C1),203, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19940C1),132, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1436C4  {
  int s1436c4f0;
  __tsi64 s1436c4f1;
  void *s1436c4f2[4];
  int s1436c4f3[2];
  void *s1436c4f4;
  ::S3281C4_nt s1436c4f5;
  void *s1436c4f6[2];
  virtual  ~S1436C4(); // _ZN7S1436C4D1Ev
  virtual void  v4(); // _ZN7S1436C42v4Ev
  virtual void  v5(); // _ZN7S1436C42v5Ev
  virtual void  v6(); // _ZN7S1436C42v6Ev
  virtual void  v7(); // _ZN7S1436C42v7Ev
  virtual void  v8(); // _ZN7S1436C42v8Ev
  virtual void  v9(); // _ZN7S1436C42v9Ev
  virtual void  v10(); // _ZN7S1436C43v10Ev
  virtual void  v11(); // _ZN7S1436C43v11Ev
  virtual void  v12(); // _ZN7S1436C43v12Ev
  virtual void  v13(); // _ZN7S1436C43v13Ev
  virtual void  v14(); // _ZN7S1436C43v14Ev
  virtual void  v15(); // _ZN7S1436C43v15Ev
  virtual void  v16(); // _ZN7S1436C43v16Ev
  virtual void  v17(); // _ZN7S1436C43v17Ev
  virtual void  v18(); // _ZN7S1436C43v18Ev
  virtual void  v19(); // _ZN7S1436C43v19Ev
  virtual void  v20(); // _ZN7S1436C43v20Ev
  virtual void  v21(); // _ZN7S1436C43v21Ev
  virtual void  v22(); // _ZN7S1436C43v22Ev
  virtual void  v23(); // _ZN7S1436C43v23Ev
  virtual void  v24(); // _ZN7S1436C43v24Ev
  virtual void  v25(); // _ZN7S1436C43v25Ev
  virtual void  v26(); // _ZN7S1436C43v26Ev
  virtual void  v27(); // _ZN7S1436C43v27Ev
  virtual void  v28(); // _ZN7S1436C43v28Ev
  virtual void  v29(); // _ZN7S1436C43v29Ev
  virtual void  v30(); // _ZN7S1436C43v30Ev
  virtual void  v31(); // _ZN7S1436C43v31Ev
  virtual void  v32(); // _ZN7S1436C43v32Ev
  virtual void  v33(); // _ZN7S1436C43v33Ev
  virtual void  v34(); // _ZN7S1436C43v34Ev
  virtual void  v35(); // _ZN7S1436C43v35Ev
  virtual void  v36(); // _ZN7S1436C43v36Ev
  virtual void  v37(); // _ZN7S1436C43v37Ev
  virtual void  v38(); // _ZN7S1436C43v38Ev
  virtual void  v39(); // _ZN7S1436C43v39Ev
  virtual void  v40(); // _ZN7S1436C43v40Ev
  virtual void  v41(); // _ZN7S1436C43v41Ev
  virtual void  v42(); // _ZN7S1436C43v42Ev
  virtual void  v43(); // _ZN7S1436C43v43Ev
  virtual void  v44(); // _ZN7S1436C43v44Ev
  virtual void  v45(); // _ZN7S1436C43v45Ev
  virtual void  v46(); // _ZN7S1436C43v46Ev
  virtual void  v47(); // _ZN7S1436C43v47Ev
  virtual void  v48(); // _ZN7S1436C43v48Ev
  virtual void  v49(); // _ZN7S1436C43v49Ev
  virtual void  v50(); // _ZN7S1436C43v50Ev
  virtual void  v51(); // _ZN7S1436C43v51Ev
  virtual void  v52(); // _ZN7S1436C43v52Ev
  virtual void  v53(); // _ZN7S1436C43v53Ev
  virtual void  v54(); // _ZN7S1436C43v54Ev
  virtual void  v55(); // _ZN7S1436C43v55Ev
  virtual void  v56(); // _ZN7S1436C43v56Ev
  virtual void  v57(); // _ZN7S1436C43v57Ev
  virtual void  v58(); // _ZN7S1436C43v58Ev
  virtual void  v59(); // _ZN7S1436C43v59Ev
  virtual void  v60(); // _ZN7S1436C43v60Ev
  virtual void  v61(); // _ZN7S1436C43v61Ev
  virtual void  v62(); // _ZN7S1436C43v62Ev
  virtual void  v63(); // _ZN7S1436C43v63Ev
  virtual void  v64(); // _ZN7S1436C43v64Ev
  virtual void  v65(); // _ZN7S1436C43v65Ev
  virtual void  v66(); // _ZN7S1436C43v66Ev
  virtual void  v67(); // _ZN7S1436C43v67Ev
  S1436C4(); // tgen
};
//SIG(-1 S1436C4) 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]}


 S1436C4 ::~S1436C4(){ note_dtor("S1436C4", this);}
void  S1436C4 ::v4(){vfunc_called(this, "_ZN7S1436C42v4Ev");}
void  S1436C4 ::v5(){vfunc_called(this, "_ZN7S1436C42v5Ev");}
void  S1436C4 ::v6(){vfunc_called(this, "_ZN7S1436C42v6Ev");}
void  S1436C4 ::v7(){vfunc_called(this, "_ZN7S1436C42v7Ev");}
void  S1436C4 ::v8(){vfunc_called(this, "_ZN7S1436C42v8Ev");}
void  S1436C4 ::v9(){vfunc_called(this, "_ZN7S1436C42v9Ev");}
void  S1436C4 ::v10(){vfunc_called(this, "_ZN7S1436C43v10Ev");}
void  S1436C4 ::v11(){vfunc_called(this, "_ZN7S1436C43v11Ev");}
void  S1436C4 ::v12(){vfunc_called(this, "_ZN7S1436C43v12Ev");}
void  S1436C4 ::v13(){vfunc_called(this, "_ZN7S1436C43v13Ev");}
void  S1436C4 ::v14(){vfunc_called(this, "_ZN7S1436C43v14Ev");}
void  S1436C4 ::v15(){vfunc_called(this, "_ZN7S1436C43v15Ev");}
void  S1436C4 ::v16(){vfunc_called(this, "_ZN7S1436C43v16Ev");}
void  S1436C4 ::v17(){vfunc_called(this, "_ZN7S1436C43v17Ev");}
void  S1436C4 ::v18(){vfunc_called(this, "_ZN7S1436C43v18Ev");}
void  S1436C4 ::v19(){vfunc_called(this, "_ZN7S1436C43v19Ev");}
void  S1436C4 ::v20(){vfunc_called(this, "_ZN7S1436C43v20Ev");}
void  S1436C4 ::v21(){vfunc_called(this, "_ZN7S1436C43v21Ev");}
void  S1436C4 ::v22(){vfunc_called(this, "_ZN7S1436C43v22Ev");}
void  S1436C4 ::v23(){vfunc_called(this, "_ZN7S1436C43v23Ev");}
void  S1436C4 ::v24(){vfunc_called(this, "_ZN7S1436C43v24Ev");}
void  S1436C4 ::v25(){vfunc_called(this, "_ZN7S1436C43v25Ev");}
void  S1436C4 ::v26(){vfunc_called(this, "_ZN7S1436C43v26Ev");}
void  S1436C4 ::v27(){vfunc_called(this, "_ZN7S1436C43v27Ev");}
void  S1436C4 ::v28(){vfunc_called(this, "_ZN7S1436C43v28Ev");}
void  S1436C4 ::v29(){vfunc_called(this, "_ZN7S1436C43v29Ev");}
void  S1436C4 ::v30(){vfunc_called(this, "_ZN7S1436C43v30Ev");}
void  S1436C4 ::v31(){vfunc_called(this, "_ZN7S1436C43v31Ev");}
void  S1436C4 ::v32(){vfunc_called(this, "_ZN7S1436C43v32Ev");}
void  S1436C4 ::v33(){vfunc_called(this, "_ZN7S1436C43v33Ev");}
void  S1436C4 ::v34(){vfunc_called(this, "_ZN7S1436C43v34Ev");}
void  S1436C4 ::v35(){vfunc_called(this, "_ZN7S1436C43v35Ev");}
void  S1436C4 ::v36(){vfunc_called(this, "_ZN7S1436C43v36Ev");}
void  S1436C4 ::v37(){vfunc_called(this, "_ZN7S1436C43v37Ev");}
void  S1436C4 ::v38(){vfunc_called(this, "_ZN7S1436C43v38Ev");}
void  S1436C4 ::v39(){vfunc_called(this, "_ZN7S1436C43v39Ev");}
void  S1436C4 ::v40(){vfunc_called(this, "_ZN7S1436C43v40Ev");}
void  S1436C4 ::v41(){vfunc_called(this, "_ZN7S1436C43v41Ev");}
void  S1436C4 ::v42(){vfunc_called(this, "_ZN7S1436C43v42Ev");}
void  S1436C4 ::v43(){vfunc_called(this, "_ZN7S1436C43v43Ev");}
void  S1436C4 ::v44(){vfunc_called(this, "_ZN7S1436C43v44Ev");}
void  S1436C4 ::v45(){vfunc_called(this, "_ZN7S1436C43v45Ev");}
void  S1436C4 ::v46(){vfunc_called(this, "_ZN7S1436C43v46Ev");}
void  S1436C4 ::v47(){vfunc_called(this, "_ZN7S1436C43v47Ev");}
void  S1436C4 ::v48(){vfunc_called(this, "_ZN7S1436C43v48Ev");}
void  S1436C4 ::v49(){vfunc_called(this, "_ZN7S1436C43v49Ev");}
void  S1436C4 ::v50(){vfunc_called(this, "_ZN7S1436C43v50Ev");}
void  S1436C4 ::v51(){vfunc_called(this, "_ZN7S1436C43v51Ev");}
void  S1436C4 ::v52(){vfunc_called(this, "_ZN7S1436C43v52Ev");}
void  S1436C4 ::v53(){vfunc_called(this, "_ZN7S1436C43v53Ev");}
void  S1436C4 ::v54(){vfunc_called(this, "_ZN7S1436C43v54Ev");}
void  S1436C4 ::v55(){vfunc_called(this, "_ZN7S1436C43v55Ev");}
void  S1436C4 ::v56(){vfunc_called(this, "_ZN7S1436C43v56Ev");}
void  S1436C4 ::v57(){vfunc_called(this, "_ZN7S1436C43v57Ev");}
void  S1436C4 ::v58(){vfunc_called(this, "_ZN7S1436C43v58Ev");}
void  S1436C4 ::v59(){vfunc_called(this, "_ZN7S1436C43v59Ev");}
void  S1436C4 ::v60(){vfunc_called(this, "_ZN7S1436C43v60Ev");}
void  S1436C4 ::v61(){vfunc_called(this, "_ZN7S1436C43v61Ev");}
void  S1436C4 ::v62(){vfunc_called(this, "_ZN7S1436C43v62Ev");}
void  S1436C4 ::v63(){vfunc_called(this, "_ZN7S1436C43v63Ev");}
void  S1436C4 ::v64(){vfunc_called(this, "_ZN7S1436C43v64Ev");}
void  S1436C4 ::v65(){vfunc_called(this, "_ZN7S1436C43v65Ev");}
void  S1436C4 ::v66(){vfunc_called(this, "_ZN7S1436C43v66Ev");}
void  S1436C4 ::v67(){vfunc_called(this, "_ZN7S1436C43v67Ev");}
S1436C4 ::S1436C4(){ note_ctor("S1436C4", this);} // tgen

static void Test_S1436C4()
{
  extern Class_Descriptor cd_S1436C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1436C4, buf);
    S1436C4 *dp, &lv = *(dp=new (buf) S1436C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1436C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1436C4)");
    check_field_offset(lv, s1436c4f0, ABISELECT(8,4), "S1436C4.s1436c4f0");
    check_field_offset(lv, s1436c4f1, ABISELECT(16,8), "S1436C4.s1436c4f1");
    check_field_offset(lv, s1436c4f2, ABISELECT(24,16), "S1436C4.s1436c4f2");
    check_field_offset(lv, s1436c4f3, ABISELECT(56,32), "S1436C4.s1436c4f3");
    check_field_offset(lv, s1436c4f4, ABISELECT(64,40), "S1436C4.s1436c4f4");
    check_field_offset(lv, s1436c4f5, ABISELECT(72,44), "S1436C4.s1436c4f5");
    check_field_offset(lv, s1436c4f6, ABISELECT(80,52), "S1436C4.s1436c4f6");
    test_class_info(&lv, &cd_S1436C4);
    dp->~S1436C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1436C4(Test_S1436C4, "S1436C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1436C4C1Ev();
extern void _ZN7S1436C4D1Ev();
Name_Map name_map_S1436C4[] = {
  NSPAIR(_ZN7S1436C4C1Ev),
  NSPAIR(_ZN7S1436C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1436C4[];
extern void _ZN7S1436C4D1Ev();
extern void _ZN7S1436C4D0Ev();
extern void _ZN7S1436C42v4Ev();
extern void _ZN7S1436C42v5Ev();
extern void _ZN7S1436C42v6Ev();
extern void _ZN7S1436C42v7Ev();
extern void _ZN7S1436C42v8Ev();
extern void _ZN7S1436C42v9Ev();
extern void _ZN7S1436C43v10Ev();
extern void _ZN7S1436C43v11Ev();
extern void _ZN7S1436C43v12Ev();
extern void _ZN7S1436C43v13Ev();
extern void _ZN7S1436C43v14Ev();
extern void _ZN7S1436C43v15Ev();
extern void _ZN7S1436C43v16Ev();
extern void _ZN7S1436C43v17Ev();
extern void _ZN7S1436C43v18Ev();
extern void _ZN7S1436C43v19Ev();
extern void _ZN7S1436C43v20Ev();
extern void _ZN7S1436C43v21Ev();
extern void _ZN7S1436C43v22Ev();
extern void _ZN7S1436C43v23Ev();
extern void _ZN7S1436C43v24Ev();
extern void _ZN7S1436C43v25Ev();
extern void _ZN7S1436C43v26Ev();
extern void _ZN7S1436C43v27Ev();
extern void _ZN7S1436C43v28Ev();
extern void _ZN7S1436C43v29Ev();
extern void _ZN7S1436C43v30Ev();
extern void _ZN7S1436C43v31Ev();
extern void _ZN7S1436C43v32Ev();
extern void _ZN7S1436C43v33Ev();
extern void _ZN7S1436C43v34Ev();
extern void _ZN7S1436C43v35Ev();
extern void _ZN7S1436C43v36Ev();
extern void _ZN7S1436C43v37Ev();
extern void _ZN7S1436C43v38Ev();
extern void _ZN7S1436C43v39Ev();
extern void _ZN7S1436C43v40Ev();
extern void _ZN7S1436C43v41Ev();
extern void _ZN7S1436C43v42Ev();
extern void _ZN7S1436C43v43Ev();
extern void _ZN7S1436C43v44Ev();
extern void _ZN7S1436C43v45Ev();
extern void _ZN7S1436C43v46Ev();
extern void _ZN7S1436C43v47Ev();
extern void _ZN7S1436C43v48Ev();
extern void _ZN7S1436C43v49Ev();
extern void _ZN7S1436C43v50Ev();
extern void _ZN7S1436C43v51Ev();
extern void _ZN7S1436C43v52Ev();
extern void _ZN7S1436C43v53Ev();
extern void _ZN7S1436C43v54Ev();
extern void _ZN7S1436C43v55Ev();
extern void _ZN7S1436C43v56Ev();
extern void _ZN7S1436C43v57Ev();
extern void _ZN7S1436C43v58Ev();
extern void _ZN7S1436C43v59Ev();
extern void _ZN7S1436C43v60Ev();
extern void _ZN7S1436C43v61Ev();
extern void _ZN7S1436C43v62Ev();
extern void _ZN7S1436C43v63Ev();
extern void _ZN7S1436C43v64Ev();
extern void _ZN7S1436C43v65Ev();
extern void _ZN7S1436C43v66Ev();
extern void _ZN7S1436C43v67Ev();
static  VTBL_ENTRY vtc_S1436C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1436C4[0]),
  (VTBL_ENTRY)&_ZN7S1436C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1436C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1436C4[];
extern  VTBL_ENTRY _ZTV7S1436C4[];
Class_Descriptor cd_S1436C4 = {  "S1436C4", // class name
  0,0,//no base classes
  &(vtc_S1436C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1436C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1436C4),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  S1436C3  : S1436C4 {
  int s1436c3f0[2];
  void *s1436c3f1;
  int s1436c3f2[2];
  ::S638C7_nt s1436c3f3;
  ::S638C7_nt s1436c3f4;
  ::S4224C37 s1436c3f5;
  ::S638C7_nt s1436c3f6;
  unsigned int s1436c3f7:1;
  unsigned int s1436c3f8:1;
  unsigned int s1436c3f9:1;
  unsigned int s1436c3f10:1;
  unsigned int s1436c3f11:1;
  int s1436c3f12[2];
  virtual  ~S1436C3(); // _ZN7S1436C3D1Ev
  virtual void  v68(); // _ZN7S1436C33v68Ev
  virtual void  v69(); // _ZN7S1436C33v69Ev
  virtual void  v70(); // _ZN7S1436C33v70Ev
  virtual void  v71(); // _ZN7S1436C33v71Ev
  virtual void  v72(); // _ZN7S1436C33v72Ev
  virtual void  v73(); // _ZN7S1436C33v73Ev
  virtual void  v74(); // _ZN7S1436C33v74Ev
  virtual void  v75(); // _ZN7S1436C33v75Ev
  virtual void  v76(); // _ZN7S1436C33v76Ev
  virtual void  v77(); // _ZN7S1436C33v77Ev
  virtual void  v78(); // _ZN7S1436C33v78Ev
  virtual void  v79(); // _ZN7S1436C33v79Ev
  virtual void  v80(); // _ZN7S1436C33v80Ev
  virtual void  v81(); // _ZN7S1436C33v81Ev
  virtual void  v82(); // _ZN7S1436C33v82Ev
  virtual void  v83(); // _ZN7S1436C33v83Ev
  virtual void  v84(); // _ZN7S1436C33v84Ev
  virtual void  v85(); // _ZN7S1436C33v85Ev
  virtual void  v86(); // _ZN7S1436C33v86Ev
  virtual void  v87(); // _ZN7S1436C33v87Ev
  virtual void  v88(); // _ZN7S1436C33v88Ev
  virtual void  v89(); // _ZN7S1436C33v89Ev
  S1436C3(); // tgen
};
//SIG(-1 S1436C3) 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]}


 S1436C3 ::~S1436C3(){ note_dtor("S1436C3", this);}
void  S1436C3 ::v68(){vfunc_called(this, "_ZN7S1436C33v68Ev");}
void  S1436C3 ::v69(){vfunc_called(this, "_ZN7S1436C33v69Ev");}
void  S1436C3 ::v70(){vfunc_called(this, "_ZN7S1436C33v70Ev");}
void  S1436C3 ::v71(){vfunc_called(this, "_ZN7S1436C33v71Ev");}
void  S1436C3 ::v72(){vfunc_called(this, "_ZN7S1436C33v72Ev");}
void  S1436C3 ::v73(){vfunc_called(this, "_ZN7S1436C33v73Ev");}
void  S1436C3 ::v74(){vfunc_called(this, "_ZN7S1436C33v74Ev");}
void  S1436C3 ::v75(){vfunc_called(this, "_ZN7S1436C33v75Ev");}
void  S1436C3 ::v76(){vfunc_called(this, "_ZN7S1436C33v76Ev");}
void  S1436C3 ::v77(){vfunc_called(this, "_ZN7S1436C33v77Ev");}
void  S1436C3 ::v78(){vfunc_called(this, "_ZN7S1436C33v78Ev");}
void  S1436C3 ::v79(){vfunc_called(this, "_ZN7S1436C33v79Ev");}
void  S1436C3 ::v80(){vfunc_called(this, "_ZN7S1436C33v80Ev");}
void  S1436C3 ::v81(){vfunc_called(this, "_ZN7S1436C33v81Ev");}
void  S1436C3 ::v82(){vfunc_called(this, "_ZN7S1436C33v82Ev");}
void  S1436C3 ::v83(){vfunc_called(this, "_ZN7S1436C33v83Ev");}
void  S1436C3 ::v84(){vfunc_called(this, "_ZN7S1436C33v84Ev");}
void  S1436C3 ::v85(){vfunc_called(this, "_ZN7S1436C33v85Ev");}
void  S1436C3 ::v86(){vfunc_called(this, "_ZN7S1436C33v86Ev");}
void  S1436C3 ::v87(){vfunc_called(this, "_ZN7S1436C33v87Ev");}
void  S1436C3 ::v88(){vfunc_called(this, "_ZN7S1436C33v88Ev");}
void  S1436C3 ::v89(){vfunc_called(this, "_ZN7S1436C33v89Ev");}
S1436C3 ::S1436C3(){ note_ctor("S1436C3", this);} // tgen

static void Test_S1436C3()
{
  extern Class_Descriptor cd_S1436C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S1436C3, buf);
    S1436C3 *dp, &lv = *(dp=new (buf) S1436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S1436C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1436C3)");
    check_base_class_offset(lv, (S1436C4*), 0, "S1436C3");
    check_field_offset(lv, s1436c3f0, ABISELECT(96,60), "S1436C3.s1436c3f0");
    check_field_offset(lv, s1436c3f1, ABISELECT(104,68), "S1436C3.s1436c3f1");
    check_field_offset(lv, s1436c3f2, ABISELECT(112,72), "S1436C3.s1436c3f2");
    check_field_offset(lv, s1436c3f3, ABISELECT(120,80), "S1436C3.s1436c3f3");
    check_field_offset(lv, s1436c3f4, ABISELECT(136,92), "S1436C3.s1436c3f4");
    check_field_offset(lv, s1436c3f5, ABISELECT(152,104), "S1436C3.s1436c3f5");
    check_field_offset(lv, s1436c3f6, ABISELECT(160,108), "S1436C3.s1436c3f6");
    set_bf_and_test(lv, s1436c3f7, ABISELECT(176,120), 0, 1, 1, "S1436C3");
    set_bf_and_test(lv, s1436c3f8, ABISELECT(176,120), 1, 1, 1, "S1436C3");
    set_bf_and_test(lv, s1436c3f9, ABISELECT(176,120), 2, 1, 1, "S1436C3");
    set_bf_and_test(lv, s1436c3f10, ABISELECT(176,120), 3, 1, 1, "S1436C3");
    set_bf_and_test(lv, s1436c3f11, ABISELECT(176,120), 4, 1, 1, "S1436C3");
    check_field_offset(lv, s1436c3f12, ABISELECT(180,124), "S1436C3.s1436c3f12");
    test_class_info(&lv, &cd_S1436C3);
    dp->~S1436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1436C3(Test_S1436C3, "S1436C3", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN7S1436C3C1Ev();
extern void _ZN7S1436C3D1Ev();
Name_Map name_map_S1436C3[] = {
  NSPAIR(_ZN7S1436C3C1Ev),
  NSPAIR(_ZN7S1436C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1436C4;
extern VTBL_ENTRY _ZTI7S1436C4[];
extern  VTBL_ENTRY _ZTV7S1436C4[];
static Base_Class bases_S1436C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1436C3[];
extern void _ZN7S1436C3D1Ev();
extern void _ZN7S1436C3D0Ev();
extern void _ZN7S1436C42v4Ev();
extern void _ZN7S1436C42v5Ev();
extern void _ZN7S1436C42v6Ev();
extern void _ZN7S1436C42v7Ev();
extern void _ZN7S1436C42v8Ev();
extern void _ZN7S1436C42v9Ev();
extern void _ZN7S1436C43v10Ev();
extern void _ZN7S1436C43v11Ev();
extern void _ZN7S1436C43v12Ev();
extern void _ZN7S1436C43v13Ev();
extern void _ZN7S1436C43v14Ev();
extern void _ZN7S1436C43v15Ev();
extern void _ZN7S1436C43v16Ev();
extern void _ZN7S1436C43v17Ev();
extern void _ZN7S1436C43v18Ev();
extern void _ZN7S1436C43v19Ev();
extern void _ZN7S1436C43v20Ev();
extern void _ZN7S1436C43v21Ev();
extern void _ZN7S1436C43v22Ev();
extern void _ZN7S1436C43v23Ev();
extern void _ZN7S1436C43v24Ev();
extern void _ZN7S1436C43v25Ev();
extern void _ZN7S1436C43v26Ev();
extern void _ZN7S1436C43v27Ev();
extern void _ZN7S1436C43v28Ev();
extern void _ZN7S1436C43v29Ev();
extern void _ZN7S1436C43v30Ev();
extern void _ZN7S1436C43v31Ev();
extern void _ZN7S1436C43v32Ev();
extern void _ZN7S1436C43v33Ev();
extern void _ZN7S1436C43v34Ev();
extern void _ZN7S1436C43v35Ev();
extern void _ZN7S1436C43v36Ev();
extern void _ZN7S1436C43v37Ev();
extern void _ZN7S1436C43v38Ev();
extern void _ZN7S1436C43v39Ev();
extern void _ZN7S1436C43v40Ev();
extern void _ZN7S1436C43v41Ev();
extern void _ZN7S1436C43v42Ev();
extern void _ZN7S1436C43v43Ev();
extern void _ZN7S1436C43v44Ev();
extern void _ZN7S1436C43v45Ev();
extern void _ZN7S1436C43v46Ev();
extern void _ZN7S1436C43v47Ev();
extern void _ZN7S1436C43v48Ev();
extern void _ZN7S1436C43v49Ev();
extern void _ZN7S1436C43v50Ev();
extern void _ZN7S1436C43v51Ev();
extern void _ZN7S1436C43v52Ev();
extern void _ZN7S1436C43v53Ev();
extern void _ZN7S1436C43v54Ev();
extern void _ZN7S1436C43v55Ev();
extern void _ZN7S1436C43v56Ev();
extern void _ZN7S1436C43v57Ev();
extern void _ZN7S1436C43v58Ev();
extern void _ZN7S1436C43v59Ev();
extern void _ZN7S1436C43v60Ev();
extern void _ZN7S1436C43v61Ev();
extern void _ZN7S1436C43v62Ev();
extern void _ZN7S1436C43v63Ev();
extern void _ZN7S1436C43v64Ev();
extern void _ZN7S1436C43v65Ev();
extern void _ZN7S1436C43v66Ev();
extern void _ZN7S1436C43v67Ev();
extern void _ZN7S1436C33v68Ev();
extern void _ZN7S1436C33v69Ev();
extern void _ZN7S1436C33v70Ev();
extern void _ZN7S1436C33v71Ev();
extern void _ZN7S1436C33v72Ev();
extern void _ZN7S1436C33v73Ev();
extern void _ZN7S1436C33v74Ev();
extern void _ZN7S1436C33v75Ev();
extern void _ZN7S1436C33v76Ev();
extern void _ZN7S1436C33v77Ev();
extern void _ZN7S1436C33v78Ev();
extern void _ZN7S1436C33v79Ev();
extern void _ZN7S1436C33v80Ev();
extern void _ZN7S1436C33v81Ev();
extern void _ZN7S1436C33v82Ev();
extern void _ZN7S1436C33v83Ev();
extern void _ZN7S1436C33v84Ev();
extern void _ZN7S1436C33v85Ev();
extern void _ZN7S1436C33v86Ev();
extern void _ZN7S1436C33v87Ev();
extern void _ZN7S1436C33v88Ev();
extern void _ZN7S1436C33v89Ev();
static  VTBL_ENTRY vtc_S1436C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1436C3[0]),
  (VTBL_ENTRY)&_ZN7S1436C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1436C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v89Ev,
};
extern VTBL_ENTRY _ZTI7S1436C3[];
extern  VTBL_ENTRY _ZTV7S1436C3[];
Class_Descriptor cd_S1436C3 = {  "S1436C3", // class name
  bases_S1436C3, 1,
  &(vtc_S1436C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI7S1436C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1436C3),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  S1436C2  : S1436C3 {
  int s1436c2f0[3];
  unsigned int s1436c2f1:1;
  unsigned int s1436c2f2:1;
  unsigned int s1436c2f3:1;
  ::S4224C37 s1436c2f4;
  ::S4224C37 s1436c2f5;
  void *s1436c2f6[2];
  virtual  ~S1436C2(); // _ZN7S1436C2D1Ev
  virtual void  v90(); // _ZN7S1436C23v90Ev
  virtual void  v91(); // _ZN7S1436C23v91Ev
  virtual void  v92(); // _ZN7S1436C23v92Ev
  S1436C2(); // tgen
};
//SIG(-1 S1436C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 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 Fi[3] Fi:1 Fi:1 Fi:1 FC9 FC9 Fp[2]}


 S1436C2 ::~S1436C2(){ note_dtor("S1436C2", this);}
void  S1436C2 ::v90(){vfunc_called(this, "_ZN7S1436C23v90Ev");}
void  S1436C2 ::v91(){vfunc_called(this, "_ZN7S1436C23v91Ev");}
void  S1436C2 ::v92(){vfunc_called(this, "_ZN7S1436C23v92Ev");}
S1436C2 ::S1436C2(){ note_ctor("S1436C2", this);} // tgen

static void Test_S1436C2()
{
  extern Class_Descriptor cd_S1436C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,40)];
    init_test(&cd_S1436C2, buf);
    S1436C2 *dp, &lv = *(dp=new (buf) S1436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,156), "sizeof(S1436C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1436C2)");
    check_base_class_offset(lv, (S1436C4*)(S1436C3*), 0, "S1436C2");
    check_base_class_offset(lv, (S1436C3*), 0, "S1436C2");
    check_field_offset(lv, s1436c2f0, ABISELECT(188,132), "S1436C2.s1436c2f0");
    set_bf_and_test(lv, s1436c2f1, ABISELECT(200,144), 0, 1, 1, "S1436C2");
    set_bf_and_test(lv, s1436c2f2, ABISELECT(200,144), 1, 1, 1, "S1436C2");
    set_bf_and_test(lv, s1436c2f3, ABISELECT(200,144), 2, 1, 1, "S1436C2");
    check_field_offset(lv, s1436c2f4, ABISELECT(201,145), "S1436C2.s1436c2f4");
    check_field_offset(lv, s1436c2f5, ABISELECT(202,146), "S1436C2.s1436c2f5");
    check_field_offset(lv, s1436c2f6, ABISELECT(208,148), "S1436C2.s1436c2f6");
    test_class_info(&lv, &cd_S1436C2);
    dp->~S1436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1436C2(Test_S1436C2, "S1436C2", ABISELECT(224,156));

#else // __cplusplus

extern void _ZN7S1436C2C1Ev();
extern void _ZN7S1436C2D1Ev();
Name_Map name_map_S1436C2[] = {
  NSPAIR(_ZN7S1436C2C1Ev),
  NSPAIR(_ZN7S1436C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1436C4;
extern VTBL_ENTRY _ZTI7S1436C4[];
extern  VTBL_ENTRY _ZTV7S1436C4[];
extern Class_Descriptor cd_S1436C3;
extern VTBL_ENTRY _ZTI7S1436C3[];
extern  VTBL_ENTRY _ZTV7S1436C3[];
static Base_Class bases_S1436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1436C2[];
extern void _ZN7S1436C2D1Ev();
extern void _ZN7S1436C2D0Ev();
extern void _ZN7S1436C42v4Ev();
extern void _ZN7S1436C42v5Ev();
extern void _ZN7S1436C42v6Ev();
extern void _ZN7S1436C42v7Ev();
extern void _ZN7S1436C42v8Ev();
extern void _ZN7S1436C42v9Ev();
extern void _ZN7S1436C43v10Ev();
extern void _ZN7S1436C43v11Ev();
extern void _ZN7S1436C43v12Ev();
extern void _ZN7S1436C43v13Ev();
extern void _ZN7S1436C43v14Ev();
extern void _ZN7S1436C43v15Ev();
extern void _ZN7S1436C43v16Ev();
extern void _ZN7S1436C43v17Ev();
extern void _ZN7S1436C43v18Ev();
extern void _ZN7S1436C43v19Ev();
extern void _ZN7S1436C43v20Ev();
extern void _ZN7S1436C43v21Ev();
extern void _ZN7S1436C43v22Ev();
extern void _ZN7S1436C43v23Ev();
extern void _ZN7S1436C43v24Ev();
extern void _ZN7S1436C43v25Ev();
extern void _ZN7S1436C43v26Ev();
extern void _ZN7S1436C43v27Ev();
extern void _ZN7S1436C43v28Ev();
extern void _ZN7S1436C43v29Ev();
extern void _ZN7S1436C43v30Ev();
extern void _ZN7S1436C43v31Ev();
extern void _ZN7S1436C43v32Ev();
extern void _ZN7S1436C43v33Ev();
extern void _ZN7S1436C43v34Ev();
extern void _ZN7S1436C43v35Ev();
extern void _ZN7S1436C43v36Ev();
extern void _ZN7S1436C43v37Ev();
extern void _ZN7S1436C43v38Ev();
extern void _ZN7S1436C43v39Ev();
extern void _ZN7S1436C43v40Ev();
extern void _ZN7S1436C43v41Ev();
extern void _ZN7S1436C43v42Ev();
extern void _ZN7S1436C43v43Ev();
extern void _ZN7S1436C43v44Ev();
extern void _ZN7S1436C43v45Ev();
extern void _ZN7S1436C43v46Ev();
extern void _ZN7S1436C43v47Ev();
extern void _ZN7S1436C43v48Ev();
extern void _ZN7S1436C43v49Ev();
extern void _ZN7S1436C43v50Ev();
extern void _ZN7S1436C43v51Ev();
extern void _ZN7S1436C43v52Ev();
extern void _ZN7S1436C43v53Ev();
extern void _ZN7S1436C43v54Ev();
extern void _ZN7S1436C43v55Ev();
extern void _ZN7S1436C43v56Ev();
extern void _ZN7S1436C43v57Ev();
extern void _ZN7S1436C43v58Ev();
extern void _ZN7S1436C43v59Ev();
extern void _ZN7S1436C43v60Ev();
extern void _ZN7S1436C43v61Ev();
extern void _ZN7S1436C43v62Ev();
extern void _ZN7S1436C43v63Ev();
extern void _ZN7S1436C43v64Ev();
extern void _ZN7S1436C43v65Ev();
extern void _ZN7S1436C43v66Ev();
extern void _ZN7S1436C43v67Ev();
extern void _ZN7S1436C33v68Ev();
extern void _ZN7S1436C33v69Ev();
extern void _ZN7S1436C33v70Ev();
extern void _ZN7S1436C33v71Ev();
extern void _ZN7S1436C33v72Ev();
extern void _ZN7S1436C33v73Ev();
extern void _ZN7S1436C33v74Ev();
extern void _ZN7S1436C33v75Ev();
extern void _ZN7S1436C33v76Ev();
extern void _ZN7S1436C33v77Ev();
extern void _ZN7S1436C33v78Ev();
extern void _ZN7S1436C33v79Ev();
extern void _ZN7S1436C33v80Ev();
extern void _ZN7S1436C33v81Ev();
extern void _ZN7S1436C33v82Ev();
extern void _ZN7S1436C33v83Ev();
extern void _ZN7S1436C33v84Ev();
extern void _ZN7S1436C33v85Ev();
extern void _ZN7S1436C33v86Ev();
extern void _ZN7S1436C33v87Ev();
extern void _ZN7S1436C33v88Ev();
extern void _ZN7S1436C33v89Ev();
extern void _ZN7S1436C23v90Ev();
extern void _ZN7S1436C23v91Ev();
extern void _ZN7S1436C23v92Ev();
static  VTBL_ENTRY vtc_S1436C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1436C2[0]),
  (VTBL_ENTRY)&_ZN7S1436C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1436C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1436C23v90Ev,
  (VTBL_ENTRY)&_ZN7S1436C23v91Ev,
  (VTBL_ENTRY)&_ZN7S1436C23v92Ev,
};
extern VTBL_ENTRY _ZTI7S1436C2[];
extern  VTBL_ENTRY _ZTV7S1436C2[];
Class_Descriptor cd_S1436C2 = {  "S1436C2", // class name
  bases_S1436C2, 2,
  &(vtc_S1436C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,156), // object size
  NSPAIRA(_ZTI7S1436C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1436C2),93, //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  S1436C1  : S1436C2 {
  virtual  ~S1436C1(); // _ZN7S1436C1D1Ev
  virtual void  v1(); // _ZN7S1436C12v1Ev
  virtual void  v2(); // _ZN7S1436C12v2Ev
  virtual void  v3(); // _ZN7S1436C12v3Ev
  S1436C1(); // tgen
};
//SIG(1 S1436C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 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 v90 v91 v92 Fi[3] Fi:1 Fi:1 Fi:1 FC10 FC10 Fp[2]} vd v1 v2 v3}


 S1436C1 ::~S1436C1(){ note_dtor("S1436C1", this);}
void  S1436C1 ::v1(){vfunc_called(this, "_ZN7S1436C12v1Ev");}
void  S1436C1 ::v2(){vfunc_called(this, "_ZN7S1436C12v2Ev");}
void  S1436C1 ::v3(){vfunc_called(this, "_ZN7S1436C12v3Ev");}
S1436C1 ::S1436C1(){ note_ctor("S1436C1", this);} // tgen

static void Test_S1436C1()
{
  extern Class_Descriptor cd_S1436C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,40)];
    init_test(&cd_S1436C1, buf);
    S1436C1 *dp, &lv = *(dp=new (buf) S1436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,156), "sizeof(S1436C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1436C1)");
    check_base_class_offset(lv, (S1436C4*)(S1436C3*)(S1436C2*), 0, "S1436C1");
    check_base_class_offset(lv, (S1436C3*)(S1436C2*), 0, "S1436C1");
    check_base_class_offset(lv, (S1436C2*), 0, "S1436C1");
    test_class_info(&lv, &cd_S1436C1);
    dp->~S1436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1436C1(Test_S1436C1, "S1436C1", ABISELECT(224,156));

#else // __cplusplus

extern void _ZN7S1436C1C1Ev();
extern void _ZN7S1436C1D1Ev();
Name_Map name_map_S1436C1[] = {
  NSPAIR(_ZN7S1436C1C1Ev),
  NSPAIR(_ZN7S1436C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1436C4;
extern VTBL_ENTRY _ZTI7S1436C4[];
extern  VTBL_ENTRY _ZTV7S1436C4[];
extern Class_Descriptor cd_S1436C3;
extern VTBL_ENTRY _ZTI7S1436C3[];
extern  VTBL_ENTRY _ZTV7S1436C3[];
extern Class_Descriptor cd_S1436C2;
extern VTBL_ENTRY _ZTI7S1436C2[];
extern  VTBL_ENTRY _ZTV7S1436C2[];
static Base_Class bases_S1436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1436C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1436C1[];
extern void _ZN7S1436C1D1Ev();
extern void _ZN7S1436C1D0Ev();
extern void _ZN7S1436C42v4Ev();
extern void _ZN7S1436C42v5Ev();
extern void _ZN7S1436C42v6Ev();
extern void _ZN7S1436C42v7Ev();
extern void _ZN7S1436C42v8Ev();
extern void _ZN7S1436C42v9Ev();
extern void _ZN7S1436C43v10Ev();
extern void _ZN7S1436C43v11Ev();
extern void _ZN7S1436C43v12Ev();
extern void _ZN7S1436C43v13Ev();
extern void _ZN7S1436C43v14Ev();
extern void _ZN7S1436C43v15Ev();
extern void _ZN7S1436C43v16Ev();
extern void _ZN7S1436C43v17Ev();
extern void _ZN7S1436C43v18Ev();
extern void _ZN7S1436C43v19Ev();
extern void _ZN7S1436C43v20Ev();
extern void _ZN7S1436C43v21Ev();
extern void _ZN7S1436C43v22Ev();
extern void _ZN7S1436C43v23Ev();
extern void _ZN7S1436C43v24Ev();
extern void _ZN7S1436C43v25Ev();
extern void _ZN7S1436C43v26Ev();
extern void _ZN7S1436C43v27Ev();
extern void _ZN7S1436C43v28Ev();
extern void _ZN7S1436C43v29Ev();
extern void _ZN7S1436C43v30Ev();
extern void _ZN7S1436C43v31Ev();
extern void _ZN7S1436C43v32Ev();
extern void _ZN7S1436C43v33Ev();
extern void _ZN7S1436C43v34Ev();
extern void _ZN7S1436C43v35Ev();
extern void _ZN7S1436C43v36Ev();
extern void _ZN7S1436C43v37Ev();
extern void _ZN7S1436C43v38Ev();
extern void _ZN7S1436C43v39Ev();
extern void _ZN7S1436C43v40Ev();
extern void _ZN7S1436C43v41Ev();
extern void _ZN7S1436C43v42Ev();
extern void _ZN7S1436C43v43Ev();
extern void _ZN7S1436C43v44Ev();
extern void _ZN7S1436C43v45Ev();
extern void _ZN7S1436C43v46Ev();
extern void _ZN7S1436C43v47Ev();
extern void _ZN7S1436C43v48Ev();
extern void _ZN7S1436C43v49Ev();
extern void _ZN7S1436C43v50Ev();
extern void _ZN7S1436C43v51Ev();
extern void _ZN7S1436C43v52Ev();
extern void _ZN7S1436C43v53Ev();
extern void _ZN7S1436C43v54Ev();
extern void _ZN7S1436C43v55Ev();
extern void _ZN7S1436C43v56Ev();
extern void _ZN7S1436C43v57Ev();
extern void _ZN7S1436C43v58Ev();
extern void _ZN7S1436C43v59Ev();
extern void _ZN7S1436C43v60Ev();
extern void _ZN7S1436C43v61Ev();
extern void _ZN7S1436C43v62Ev();
extern void _ZN7S1436C43v63Ev();
extern void _ZN7S1436C43v64Ev();
extern void _ZN7S1436C43v65Ev();
extern void _ZN7S1436C43v66Ev();
extern void _ZN7S1436C43v67Ev();
extern void _ZN7S1436C33v68Ev();
extern void _ZN7S1436C33v69Ev();
extern void _ZN7S1436C33v70Ev();
extern void _ZN7S1436C33v71Ev();
extern void _ZN7S1436C33v72Ev();
extern void _ZN7S1436C33v73Ev();
extern void _ZN7S1436C33v74Ev();
extern void _ZN7S1436C33v75Ev();
extern void _ZN7S1436C33v76Ev();
extern void _ZN7S1436C33v77Ev();
extern void _ZN7S1436C33v78Ev();
extern void _ZN7S1436C33v79Ev();
extern void _ZN7S1436C33v80Ev();
extern void _ZN7S1436C33v81Ev();
extern void _ZN7S1436C33v82Ev();
extern void _ZN7S1436C33v83Ev();
extern void _ZN7S1436C33v84Ev();
extern void _ZN7S1436C33v85Ev();
extern void _ZN7S1436C33v86Ev();
extern void _ZN7S1436C33v87Ev();
extern void _ZN7S1436C33v88Ev();
extern void _ZN7S1436C33v89Ev();
extern void _ZN7S1436C23v90Ev();
extern void _ZN7S1436C23v91Ev();
extern void _ZN7S1436C23v92Ev();
extern void _ZN7S1436C12v1Ev();
extern void _ZN7S1436C12v2Ev();
extern void _ZN7S1436C12v3Ev();
static  VTBL_ENTRY vtc_S1436C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1436C1[0]),
  (VTBL_ENTRY)&_ZN7S1436C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1436C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1436C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1436C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1436C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1436C23v90Ev,
  (VTBL_ENTRY)&_ZN7S1436C23v91Ev,
  (VTBL_ENTRY)&_ZN7S1436C23v92Ev,
  (VTBL_ENTRY)&_ZN7S1436C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1436C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1436C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1436C1[];
extern  VTBL_ENTRY _ZTV7S1436C1[];
Class_Descriptor cd_S1436C1 = {  "S1436C1", // class name
  bases_S1436C1, 3,
  &(vtc_S1436C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,156), // object size
  NSPAIRA(_ZTI7S1436C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1436C1),96, //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  S7688C3_nt  {
  virtual void  v8(); // _ZN10S7688C3_nt2v8Ev
  virtual void  v9(); // _ZN10S7688C3_nt2v9Ev
  virtual void  v10(); // _ZN10S7688C3_nt3v10Ev
  virtual void  v11(); // _ZN10S7688C3_nt3v11Ev
  ~S7688C3_nt(); // tgen
  S7688C3_nt(); // tgen
};
//SIG(-1 S7688C3_nt) C1{ v1 v2 v3 v4}


void  S7688C3_nt ::v8(){vfunc_called(this, "_ZN10S7688C3_nt2v8Ev");}
void  S7688C3_nt ::v9(){vfunc_called(this, "_ZN10S7688C3_nt2v9Ev");}
void  S7688C3_nt ::v10(){vfunc_called(this, "_ZN10S7688C3_nt3v10Ev");}
void  S7688C3_nt ::v11(){vfunc_called(this, "_ZN10S7688C3_nt3v11Ev");}
S7688C3_nt ::~S7688C3_nt(){ note_dtor("S7688C3_nt", this);} // tgen
S7688C3_nt ::S7688C3_nt(){ note_ctor("S7688C3_nt", this);} // tgen

//skip512 S7688C3_nt

#else // __cplusplus

extern void _ZN10S7688C3_ntC1Ev();
extern void _ZN10S7688C3_ntD1Ev();
Name_Map name_map_S7688C3_nt[] = {
  NSPAIR(_ZN10S7688C3_ntC1Ev),
  NSPAIR(_ZN10S7688C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
static  VTBL_ENTRY vtc_S7688C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7688C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
VTBL_ENTRY *P__ZTI10S7688C3_nt = _ZTI10S7688C3_nt; 
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
Class_Descriptor cd_S7688C3_nt = {  "S7688C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7688C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7688C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7688C3_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  S7688C5  : virtual S7688C3_nt {
  virtual void  v12(); // _ZN7S7688C53v12Ev
  virtual void  v13(); // _ZN7S7688C53v13Ev
  virtual void  v14(); // _ZN7S7688C53v14Ev
  ~S7688C5(); // tgen
  S7688C5(); // tgen
};
//SIG(-1 S7688C5) C1{ VBC2{ v4 v5 v6 v7} v1 v2 v3}


void  S7688C5 ::v12(){vfunc_called(this, "_ZN7S7688C53v12Ev");}
void  S7688C5 ::v13(){vfunc_called(this, "_ZN7S7688C53v13Ev");}
void  S7688C5 ::v14(){vfunc_called(this, "_ZN7S7688C53v14Ev");}
S7688C5 ::~S7688C5(){ note_dtor("S7688C5", this);} // tgen
S7688C5 ::S7688C5(){ note_ctor("S7688C5", this);} // tgen

static void Test_S7688C5()
{
  extern Class_Descriptor cd_S7688C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7688C5, buf);
    S7688C5 *dp, &lv = *(dp=new (buf) S7688C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7688C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C5)");
    check_base_class_offset(lv, (S7688C3_nt*), 0, "S7688C5");
    test_class_info(&lv, &cd_S7688C5);
    dp->~S7688C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C5(Test_S7688C5, "S7688C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7688C5C1Ev();
extern void _ZN7S7688C5D1Ev();
Name_Map name_map_S7688C5[] = {
  NSPAIR(_ZN7S7688C5C1Ev),
  NSPAIR(_ZN7S7688C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
static Base_Class bases_S7688C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //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 _ZTI7S7688C5[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY vtc_S7688C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern VTBL_ENTRY _ZTV7S7688C5[];
static  VTT_ENTRY vtt_S7688C5[] = {
  {&(_ZTV7S7688C5[7]),  7,14},
  {&(_ZTV7S7688C5[7]),  7,14},
};
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
Class_Descriptor cd_S7688C5 = {  "S7688C5", // class name
  bases_S7688C5, 1,
  &(vtc_S7688C5[0]), // expected_vtbl_contents
  &(vtt_S7688C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7688C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7688C5),14, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7688C5),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  S7688C7_nt  {
  int s7688c7f0;
  virtual  ~S7688C7_nt(); // _ZN10S7688C7_ntD1Ev
  virtual void  v15(); // _ZN10S7688C7_nt3v15Ev
  virtual void  v16(); // _ZN10S7688C7_nt3v16Ev
  virtual void  v17(); // _ZN10S7688C7_nt3v17Ev
  virtual void  v18(); // _ZN10S7688C7_nt3v18Ev
  S7688C7_nt(); // tgen
};
//SIG(-1 S7688C7_nt) C1{ vd v1 v2 v3 v4 Fi}


 S7688C7_nt ::~S7688C7_nt(){ note_dtor("S7688C7_nt", this);}
void  S7688C7_nt ::v15(){vfunc_called(this, "_ZN10S7688C7_nt3v15Ev");}
void  S7688C7_nt ::v16(){vfunc_called(this, "_ZN10S7688C7_nt3v16Ev");}
void  S7688C7_nt ::v17(){vfunc_called(this, "_ZN10S7688C7_nt3v17Ev");}
void  S7688C7_nt ::v18(){vfunc_called(this, "_ZN10S7688C7_nt3v18Ev");}
S7688C7_nt ::S7688C7_nt(){ note_ctor("S7688C7_nt", this);} // tgen

//skip512 S7688C7_nt

#else // __cplusplus

extern void _ZN10S7688C7_ntC1Ev();
extern void _ZN10S7688C7_ntD1Ev();
Name_Map name_map_S7688C7_nt[] = {
  NSPAIR(_ZN10S7688C7_ntC1Ev),
  NSPAIR(_ZN10S7688C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern void _ZN10S7688C7_ntD1Ev();
extern void _ZN10S7688C7_ntD0Ev();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY vtc_S7688C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7688C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7688C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
VTBL_ENTRY *P__ZTI10S7688C7_nt = _ZTI10S7688C7_nt; 
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
Class_Descriptor cd_S7688C7_nt = {  "S7688C7_nt", // class name
  0,0,//no base classes
  &(vtc_S7688C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7688C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7688C7_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C6  : virtual S7688C7_nt {
  __tsi64 s7688c6f0;
  int s7688c6f1;
  virtual void  v19(); // _ZN7S7688C63v19Ev
  virtual void  v20(); // _ZN7S7688C63v20Ev
  virtual void  v21(); // _ZN7S7688C63v21Ev
  virtual void  v22(); // _ZN7S7688C63v22Ev
  virtual void  v23(); // _ZN7S7688C63v23Ev
  virtual void  v24(); // _ZN7S7688C63v24Ev
  virtual void  v25(); // _ZN7S7688C63v25Ev
  ~S7688C6(); // tgen
  S7688C6(); // tgen
};
//SIG(-1 S7688C6) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S7688C6 ::v19(){vfunc_called(this, "_ZN7S7688C63v19Ev");}
void  S7688C6 ::v20(){vfunc_called(this, "_ZN7S7688C63v20Ev");}
void  S7688C6 ::v21(){vfunc_called(this, "_ZN7S7688C63v21Ev");}
void  S7688C6 ::v22(){vfunc_called(this, "_ZN7S7688C63v22Ev");}
void  S7688C6 ::v23(){vfunc_called(this, "_ZN7S7688C63v23Ev");}
void  S7688C6 ::v24(){vfunc_called(this, "_ZN7S7688C63v24Ev");}
void  S7688C6 ::v25(){vfunc_called(this, "_ZN7S7688C63v25Ev");}
S7688C6 ::~S7688C6(){ note_dtor("S7688C6", this);} // tgen
S7688C6 ::S7688C6(){ note_ctor("S7688C6", this);} // tgen

static void Test_S7688C6()
{
  extern Class_Descriptor cd_S7688C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7688C6, buf);
    S7688C6 *dp, &lv = *(dp=new (buf) S7688C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7688C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C6)");
    check_base_class_offset(lv, (S7688C7_nt*), ABISELECT(24,16), "S7688C6");
    check_field_offset(lv, s7688c6f0, ABISELECT(8,4), "S7688C6.s7688c6f0");
    check_field_offset(lv, s7688c6f1, ABISELECT(16,12), "S7688C6.s7688c6f1");
    test_class_info(&lv, &cd_S7688C6);
    dp->~S7688C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C6(Test_S7688C6, "S7688C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7688C6C1Ev();
extern void _ZN7S7688C6D1Ev();
Name_Map name_map_S7688C6[] = {
  NSPAIR(_ZN7S7688C6C1Ev),
  NSPAIR(_ZN7S7688C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
static Base_Class bases_S7688C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C7_nt,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI7S7688C6[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY vtc_S7688C6[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV7S7688C6[];
static  VTT_ENTRY vtt_S7688C6[] = {
  {&(_ZTV7S7688C6[3]),  3,25},
  {&(_ZTV7S7688C6[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C6 = {  "S7688C6", // class name
  bases_S7688C6, 1,
  &(vtc_S7688C6[0]), // expected_vtbl_contents
  &(vtt_S7688C6[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7688C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7688C6),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7688C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C8  : S7688C3_nt {
  virtual  ~S7688C8(); // _ZN7S7688C8D1Ev
  virtual void  v26(); // _ZN7S7688C83v26Ev
  S7688C8(); // tgen
};
//SIG(-1 S7688C8) C1{ BC2{ v2 v3 v4 v5} vd v1}


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

static void Test_S7688C8()
{
  extern Class_Descriptor cd_S7688C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7688C8, buf);
    S7688C8 *dp, &lv = *(dp=new (buf) S7688C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7688C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C8)");
    check_base_class_offset(lv, (S7688C3_nt*), 0, "S7688C8");
    test_class_info(&lv, &cd_S7688C8);
    dp->~S7688C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C8(Test_S7688C8, "S7688C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7688C8C1Ev();
extern void _ZN7S7688C8D1Ev();
Name_Map name_map_S7688C8[] = {
  NSPAIR(_ZN7S7688C8C1Ev),
  NSPAIR(_ZN7S7688C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
static Base_Class bases_S7688C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7688C8[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C8D1Ev();
extern void _ZN7S7688C8D0Ev();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY vtc_S7688C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C8[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
Class_Descriptor cd_S7688C8 = {  "S7688C8", // class name
  bases_S7688C8, 1,
  &(vtc_S7688C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7688C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7688C8),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C10  {
  void *s7688c10f0[9];
  void  mf7688c10(); // _ZN8S7688C109mf7688c10Ev
  virtual  ~S7688C10(); // _ZN8S7688C10D1Ev
  S7688C10(); // tgen
};
//SIG(-1 S7688C10) C1{ vd m Fp[9]}


void  S7688C10 ::mf7688c10(){}
 S7688C10 ::~S7688C10(){ note_dtor("S7688C10", this);}
S7688C10 ::S7688C10(){ note_ctor("S7688C10", this);} // tgen

static void Test_S7688C10()
{
  extern Class_Descriptor cd_S7688C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7688C10, buf);
    S7688C10 *dp, &lv = *(dp=new (buf) S7688C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7688C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C10)");
    check_field_offset(lv, s7688c10f0, ABISELECT(8,4), "S7688C10.s7688c10f0");
    test_class_info(&lv, &cd_S7688C10);
    dp->~S7688C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C10(Test_S7688C10, "S7688C10", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S7688C10C1Ev();
extern void _ZN8S7688C10D1Ev();
Name_Map name_map_S7688C10[] = {
  NSPAIR(_ZN8S7688C10C1Ev),
  NSPAIR(_ZN8S7688C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7688C10[];
extern void _ZN8S7688C10D1Ev();
extern void _ZN8S7688C10D0Ev();
static  VTBL_ENTRY vtc_S7688C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C10[0]),
  (VTBL_ENTRY)&_ZN8S7688C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C10D0Ev,
};
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
Class_Descriptor cd_S7688C10 = {  "S7688C10", // class name
  0,0,//no base classes
  &(vtc_S7688C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S7688C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7688C10),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  S7688C9  : virtual S7688C6 {
  ::S7688C10 s7688c9f0;
  virtual  ~S7688C9(); // _ZN7S7688C9D2Ev
  virtual void  v27(); // _ZN7S7688C93v27Ev
  virtual void  v28(); // _ZN7S7688C93v28Ev
  virtual void  v29(); // _ZN7S7688C93v29Ev
  virtual void  v30(); // _ZN7S7688C93v30Ev
  virtual void  v31(); // _ZN7S7688C93v31Ev
  virtual void  v32(); // _ZN7S7688C93v32Ev
  virtual void  v33(); // _ZN7S7688C93v33Ev
  virtual void  v34(); // _ZN7S7688C93v34Ev
  virtual void  v35(); // _ZN7S7688C93v35Ev
  S7688C9(); // tgen
};
//SIG(-1 S7688C9) C1{ VBC2{ VBC3{ vd v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 FL Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ vd m Fp[9]}}


 S7688C9 ::~S7688C9(){ note_dtor("S7688C9", this);}
void  S7688C9 ::v27(){vfunc_called(this, "_ZN7S7688C93v27Ev");}
void  S7688C9 ::v28(){vfunc_called(this, "_ZN7S7688C93v28Ev");}
void  S7688C9 ::v29(){vfunc_called(this, "_ZN7S7688C93v29Ev");}
void  S7688C9 ::v30(){vfunc_called(this, "_ZN7S7688C93v30Ev");}
void  S7688C9 ::v31(){vfunc_called(this, "_ZN7S7688C93v31Ev");}
void  S7688C9 ::v32(){vfunc_called(this, "_ZN7S7688C93v32Ev");}
void  S7688C9 ::v33(){vfunc_called(this, "_ZN7S7688C93v33Ev");}
void  S7688C9 ::v34(){vfunc_called(this, "_ZN7S7688C93v34Ev");}
void  S7688C9 ::v35(){vfunc_called(this, "_ZN7S7688C93v35Ev");}
S7688C9 ::S7688C9(){ note_ctor("S7688C9", this);} // tgen

static void Test_S7688C9()
{
  extern Class_Descriptor cd_S7688C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7688C9, buf);
    S7688C9 *dp, &lv = *(dp=new (buf) S7688C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7688C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C9)");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(112,60), "S7688C9");
    check_base_class_offset(lv, (S7688C6*), ABISELECT(88,44), "S7688C9");
    check_field_offset(lv, s7688c9f0, ABISELECT(8,4), "S7688C9.s7688c9f0");
    test_class_info(&lv, &cd_S7688C9);
    dp->~S7688C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C9(Test_S7688C9, "S7688C9", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S7688C9C1Ev();
extern void _ZN7S7688C9D2Ev();
Name_Map name_map_S7688C9[] = {
  NSPAIR(_ZN7S7688C9C1Ev),
  NSPAIR(_ZN7S7688C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
static Base_Class bases_S7688C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C7_nt,    ABISELECT(112,60), //bcp->offset
    35, //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
    1, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(88,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //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 _ZTI7S7688C9[];
extern void _ZN7S7688C9D1Ev();
extern void _ZN7S7688C9D0Ev();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn88_N7S7688C9D1Ev,_ZThn44_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn88_N7S7688C9D0Ev,_ZThn44_N7S7688C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C9D1Ev,_ZThn60_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C9D0Ev,_ZThn60_N7S7688C9D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY vtc_S7688C9[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV7S7688C9[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__7S7688C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
static  VTT_ENTRY vtt_S7688C9[] = {
  {&(_ZTV7S7688C9[4]),  4,48},
  {&(_ZTV7S7688C9[26]),  26,48},
  {&(_ZTV7S7688C9[42]),  42,48},
  {&(_tg__ZTV7S7688C6__7S7688C9[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__7S7688C9[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7688C9[];
extern  VTBL_ENTRY _ZTV7S7688C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C9[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C9D0Ev,_ZThn60_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C9D1Ev,_ZThn60_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7688C9D0Ev,_ZThn44_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7688C9D1Ev,_ZThn44_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C9 = {  "S7688C9", // class name
  bases_S7688C9, 2,
  &(vtc_S7688C9[0]), // expected_vtbl_contents
  &(vtt_S7688C9[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S7688C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7688C9),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7688C9),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C4  : virtual S7688C3_nt , virtual S7688C5 , virtual S7688C6 , S7688C8 , S7688C9 {
  int s7688c4f0;
  virtual  ~S7688C4(); // _ZN7S7688C4D2Ev
  virtual void  v36(); // _ZN7S7688C43v36Ev
  virtual void  v37(); // _ZN7S7688C43v37Ev
  virtual void  v38(); // _ZN7S7688C43v38Ev
  virtual void  v39(); // _ZN7S7688C43v39Ev
  virtual void  v40(); // _ZN7S7688C43v40Ev
  virtual void  v41(); // _ZN7S7688C43v41Ev
  virtual void  v42(); // _ZN7S7688C43v42Ev
  S7688C4(); // tgen
};
//SIG(-1 S7688C4) C1{ VBC2{ v8 v9 v10 v11} VBC3{ VBC2 v12 v13 v14} VBC4{ VBC5{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC6{ BC2 vd v26} BC7{ VBC4 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC8{ vd m Fp[9]}} vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S7688C4 ::~S7688C4(){ note_dtor("S7688C4", this);}
void  S7688C4 ::v36(){vfunc_called(this, "_ZN7S7688C43v36Ev");}
void  S7688C4 ::v37(){vfunc_called(this, "_ZN7S7688C43v37Ev");}
void  S7688C4 ::v38(){vfunc_called(this, "_ZN7S7688C43v38Ev");}
void  S7688C4 ::v39(){vfunc_called(this, "_ZN7S7688C43v39Ev");}
void  S7688C4 ::v40(){vfunc_called(this, "_ZN7S7688C43v40Ev");}
void  S7688C4 ::v41(){vfunc_called(this, "_ZN7S7688C43v41Ev");}
void  S7688C4 ::v42(){vfunc_called(this, "_ZN7S7688C43v42Ev");}
S7688C4 ::S7688C4(){ note_ctor("S7688C4", this);} // tgen

static void Test_S7688C4()
{
  extern Class_Descriptor cd_S7688C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S7688C4, buf);
    S7688C4 *dp, &lv = *(dp=new (buf) S7688C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S7688C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C4)");
    /*is_ambiguous_... S7688C4::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*), ABISELECT(104,52), "S7688C4");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(104,52), "S7688C4");
    check_base_class_offset(lv, (S7688C5*), ABISELECT(104,52), "S7688C4");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(136,72), "S7688C4");
    check_base_class_offset(lv, (S7688C6*), ABISELECT(112,56), "S7688C4");
    check_base_class_offset(lv, (S7688C6*)(S7688C9*), ABISELECT(112,56), "S7688C4");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), 0, "S7688C4");
    check_base_class_offset(lv, (S7688C8*), 0, "S7688C4");
    check_base_class_offset(lv, (S7688C9*), ABISELECT(8,4), "S7688C4");
    check_field_offset(lv, s7688c4f0, ABISELECT(96,48), "S7688C4.s7688c4f0");
    test_class_info(&lv, &cd_S7688C4);
    dp->~S7688C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C4(Test_S7688C4, "S7688C4", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN7S7688C4C1Ev();
extern void _ZN7S7688C4D2Ev();
Name_Map name_map_S7688C4[] = {
  NSPAIR(_ZN7S7688C4C1Ev),
  NSPAIR(_ZN7S7688C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C9;
extern VTBL_ENTRY _ZTI7S7688C9[];
extern  VTBL_ENTRY _ZTV7S7688C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C9[];
static Base_Class bases_S7688C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    ABISELECT(104,52), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C5,    ABISELECT(104,52), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C7_nt,    ABISELECT(136,72), //bcp->offset
    72, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(112,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7688C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C9,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI7S7688C4[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C4D1Ev();
extern void _ZN7S7688C4D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
extern void ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY vtc_S7688C4[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV7S7688C4[];
extern void _ZN7S7688C9D1Ev();
extern void _ZN7S7688C9D0Ev();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C9__7S7688C4[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C9__7S7688C4[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C9__7S7688C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__7S7688C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
static  VTT_ENTRY vtt_S7688C4[] = {
  {&(_ZTV7S7688C4[6]),  6,85},
  {&(_tg__ZTV7S7688C9__7S7688C4[4]),  4,15},
  {&(_tg__ZTV7S7688C6__7S7688C9__7S7688C4[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C9__7S7688C4[7]),  7,13},
  {&(_ZTV7S7688C4[45]),  45,85},
  {&(_ZTV7S7688C4[45]),  45,85},
  {&(_ZTV7S7688C4[63]),  63,85},
  {&(_ZTV7S7688C4[79]),  79,85},
  {&(_ZTV7S7688C4[24]),  24,85},
  {&(_tg__ZTV7S7688C5__7S7688C4[7]),  7,14},
  {&(_tg__ZTV7S7688C5__7S7688C4[7]),  7,14},
  {&(_tg__ZTV7S7688C6__7S7688C4[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__7S7688C4[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7688C4[];
extern  VTBL_ENTRY _ZTV7S7688C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C4[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C4 = {  "S7688C4", // class name
  bases_S7688C4, 7,
  &(vtc_S7688C4[0]), // expected_vtbl_contents
  &(vtt_S7688C4[0]), // expected_vtt_contents
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI7S7688C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7688C4),85, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7688C4),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C12  : virtual S7688C8 , virtual S7688C10 , virtual S7688C6 , virtual S7688C5 {
  virtual  ~S7688C12(); // _ZN8S7688C12D2Ev
  virtual void  v43(); // _ZN8S7688C123v43Ev
  virtual void  v44(); // _ZN8S7688C123v44Ev
  S7688C12(); // tgen
};
//SIG(-1 S7688C12) C1{ VBC2{ BC3{ v3 v4 v5 v6} vd v7} VBC4{ vd m Fp[9]} VBC5{ VBC6{ vd v8 v9 v10 v11 Fi} v12 v13 v14 v15 v16 v17 v18 FL Fi} VBC7{ VBC3 v19 v20 v21} vd v1 v2}


 S7688C12 ::~S7688C12(){ note_dtor("S7688C12", this);}
void  S7688C12 ::v43(){vfunc_called(this, "_ZN8S7688C123v43Ev");}
void  S7688C12 ::v44(){vfunc_called(this, "_ZN8S7688C123v44Ev");}
S7688C12 ::S7688C12(){ note_ctor("S7688C12", this);} // tgen

static void Test_S7688C12()
{
  extern Class_Descriptor cd_S7688C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S7688C12, buf);
    S7688C12 *dp, &lv = *(dp=new (buf) S7688C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S7688C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C12)");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), 0, "S7688C12");
    check_base_class_offset(lv, (S7688C8*), 0, "S7688C12");
    check_base_class_offset(lv, (S7688C10*), ABISELECT(8,4), "S7688C12");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(112,60), "S7688C12");
    check_base_class_offset(lv, (S7688C6*), ABISELECT(88,44), "S7688C12");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(128,68), "S7688C12");
    check_base_class_offset(lv, (S7688C5*), ABISELECT(128,68), "S7688C12");
    test_class_info(&lv, &cd_S7688C12);
    dp->~S7688C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C12(Test_S7688C12, "S7688C12", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN8S7688C12C1Ev();
extern void _ZN8S7688C12D2Ev();
Name_Map name_map_S7688C12[] = {
  NSPAIR(_ZN8S7688C12C1Ev),
  NSPAIR(_ZN8S7688C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
static Base_Class bases_S7688C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7688C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C10,    ABISELECT(8,4), //bcp->offset
    23, //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_S7688C7_nt,    ABISELECT(112,60), //bcp->offset
    48, //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
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(88,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C3_nt,    ABISELECT(128,68), //bcp->offset
    -1, //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
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7688C5,    ABISELECT(128,68), //bcp->offset
    61, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7688C12[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C12D1Ev();
extern void _ZN8S7688C12D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C12D1Ev,_ZThn4_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S7688C12D0Ev,_ZThn4_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S7688C12D1Ev,_ZThn44_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S7688C12D0Ev,_ZThn44_N8S7688C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7688C12D1Ev,_ZThn60_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7688C12D0Ev,_ZThn60_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY vtc_S7688C12[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(112,60),
  ABISELECT(88,44),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C12D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S7688C12[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C12[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__8S7688C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
static  VTT_ENTRY vtt_S7688C12[] = {
  {&(_ZTV8S7688C12[14]),  14,78},
  {&(_ZTV8S7688C12[14]),  14,78},
  {&(_ZTV8S7688C12[26]),  26,78},
  {&(_ZTV8S7688C12[39]),  39,78},
  {&(_ZTV8S7688C12[55]),  55,78},
  {&(_ZTV8S7688C12[71]),  71,78},
  {&(_ZTV8S7688C12[71]),  71,78},
  {&(_tg__ZTV7S7688C6__8S7688C12[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__8S7688C12[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C12[7]),  7,14},
  {&(_tg__ZTV7S7688C5__8S7688C12[7]),  7,14},
};
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7688C12D0Ev,_ZThn44_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7688C12D1Ev,_ZThn44_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7688C12D0Ev,_ZThn60_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C12D0Ev,_ZThn4_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7688C12D1Ev,_ZThn60_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C12D1Ev,_ZThn4_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C12 = {  "S7688C12", // class name
  bases_S7688C12, 7,
  &(vtc_S7688C12[0]), // expected_vtbl_contents
  &(vtt_S7688C12[0]), // expected_vtt_contents
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI8S7688C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7688C12),78, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7688C12),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C11  : virtual S7688C4 , S7688C3_nt , S7688C12 {
  int s7688c11f0;
  virtual void  v45(); // _ZN8S7688C113v45Ev
  virtual void  v46(); // _ZN8S7688C113v46Ev
  virtual void  v47(); // _ZN8S7688C113v47Ev
  virtual void  v48(); // _ZN8S7688C113v48Ev
  virtual void  v49(); // _ZN8S7688C113v49Ev
  virtual void  v50(); // _ZN8S7688C113v50Ev
  virtual void  v51(); // _ZN8S7688C113v51Ev
  ~S7688C11(); // tgen
  S7688C11(); // tgen
};
//SIG(-1 S7688C11) C1{ VBC2{ VBC3{ v8 v9 v10 v11} VBC4{ VBC3 v12 v13 v14} VBC5{ VBC6{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC7{ BC3 vd v26} BC8{ VBC5 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC9{ vd m Fp[9]}} vd v36 v37 v38 v39 v40 v41 v42 Fi} BC3 BC10{ VBC7 VBC9 VBC5 VBC4 vd v43 v44} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7688C11 ::v45(){vfunc_called(this, "_ZN8S7688C113v45Ev");}
void  S7688C11 ::v46(){vfunc_called(this, "_ZN8S7688C113v46Ev");}
void  S7688C11 ::v47(){vfunc_called(this, "_ZN8S7688C113v47Ev");}
void  S7688C11 ::v48(){vfunc_called(this, "_ZN8S7688C113v48Ev");}
void  S7688C11 ::v49(){vfunc_called(this, "_ZN8S7688C113v49Ev");}
void  S7688C11 ::v50(){vfunc_called(this, "_ZN8S7688C113v50Ev");}
void  S7688C11 ::v51(){vfunc_called(this, "_ZN8S7688C113v51Ev");}
S7688C11 ::~S7688C11(){ note_dtor("S7688C11", this);} // tgen
S7688C11 ::S7688C11(){ note_ctor("S7688C11", this);} // tgen

static void Test_S7688C11()
{
  extern Class_Descriptor cd_S7688C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S7688C11, buf);
    S7688C11 *dp, &lv = *(dp=new (buf) S7688C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S7688C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C11)");
    /*is_ambiguous_... S7688C4::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C4*), ABISELECT(128,64), "S7688C11");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(128,64), "S7688C11");
    check_base_class_offset(lv, (S7688C5*)(S7688C4*), ABISELECT(128,64), "S7688C11");
    check_base_class_offset(lv, (S7688C5*)(S7688C12*), ABISELECT(128,64), "S7688C11");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(160,84), "S7688C11");
    check_base_class_offset(lv, (S7688C6*)(S7688C4*), ABISELECT(136,68), "S7688C11");
    check_base_class_offset(lv, (S7688C6*)(S7688C9*)(S7688C4*), ABISELECT(136,68), "S7688C11");
    check_base_class_offset(lv, (S7688C6*)(S7688C12*), ABISELECT(136,68), "S7688C11");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C4*), ABISELECT(24,12), "S7688C11");
    check_base_class_offset(lv, (S7688C8*)(S7688C4*), ABISELECT(24,12), "S7688C11");
    check_base_class_offset(lv, (S7688C9*)(S7688C4*), ABISELECT(32,16), "S7688C11");
    check_base_class_offset(lv, (S7688C4*), ABISELECT(24,12), "S7688C11");
    /*is_ambiguous_... S7688C11::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*), 0, "S7688C11");
    /*is_ambiguous_... S7688C11::S7688C8 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), ABISELECT(8,4), "S7688C11");
    check_base_class_offset(lv, (S7688C8*)(S7688C12*), ABISELECT(8,4), "S7688C11");
    check_base_class_offset(lv, (S7688C10*)(S7688C12*), ABISELECT(176,92), "S7688C11");
    check_base_class_offset(lv, (S7688C12*), ABISELECT(8,4), "S7688C11");
    check_field_offset(lv, s7688c11f0, ABISELECT(16,8), "S7688C11.s7688c11f0");
    test_class_info(&lv, &cd_S7688C11);
    dp->~S7688C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C11(Test_S7688C11, "S7688C11", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN8S7688C11C1Ev();
extern void _ZN8S7688C11D1Ev();
Name_Map name_map_S7688C11[] = {
  NSPAIR(_ZN8S7688C11C1Ev),
  NSPAIR(_ZN8S7688C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C9;
extern VTBL_ENTRY _ZTI7S7688C9[];
extern  VTBL_ENTRY _ZTV7S7688C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C9[];
extern Class_Descriptor cd_S7688C4;
extern VTBL_ENTRY _ZTI7S7688C4[];
extern  VTBL_ENTRY _ZTV7S7688C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C4[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
static Base_Class bases_S7688C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    ABISELECT(128,64), //bcp->offset
    -1, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7688C5,    ABISELECT(128,64), //bcp->offset
    102, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7688C7_nt,    ABISELECT(160,84), //bcp->offset
    139, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(136,68), //bcp->offset
    119, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7688C3_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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7688C8,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7688C9,    ABISELECT(32,16), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7688C4,    ABISELECT(24,12), //bcp->offset
    45, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(176,92), //bcp->offset
    152, //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
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C12,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7688C11[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN8S7688C11D1Ev();
extern void _ZN8S7688C11D0Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C11D1Ev,_ZThn12_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C11D0Ev,_ZThn12_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S7688C11D1Ev,_ZThn68_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S7688C11D0Ev,_ZThn68_N8S7688C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn160_N8S7688C11D1Ev,_ZThn84_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn160_N8S7688C11D0Ev,_ZThn84_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S7688C11D1Ev,_ZThn92_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S7688C11D0Ev,_ZThn92_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7688C11[] = {
  ABISELECT(176,92),
  ABISELECT(8,4),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D0Ev,
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(168,88),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-24,-12),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7688C11[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C11[] = {
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(168,88),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S7688C12D1Ev,_ZThn88_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S7688C12D0Ev,_ZThn88_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C12__8S7688C11[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7688C12D1Ev,_ZThn64_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7688C12D0Ev,_ZThn64_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C12__8S7688C11[] = {
  ABISELECT(-128,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7688C12D1Ev,_ZThn80_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7688C12D0Ev,_ZThn80_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C12__8S7688C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C12__8S7688C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C4D1Ev();
extern void _ZN7S7688C4D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__8S7688C11[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN7S7688C9D1Ev();
extern void _ZN7S7688C9D0Ev();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__8S7688C11[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C97S7688C4__8S7688C11[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C97S7688C4__8S7688C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C4__8S7688C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C4__8S7688C11[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C4__8S7688C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C9__7S7688C4__8S7688C11[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C11[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__8S7688C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
static  VTT_ENTRY vtt_S7688C11[] = {
  {&(_ZTV8S7688C11[9]),  9,157},
  {&(_tg__ZTV8S7688C12__8S7688C11[14]),  14,23},
  {&(_tg__ZTV8S7688C12__8S7688C11[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C12__8S7688C11[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C12__8S7688C11[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C12__8S7688C11[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C12__8S7688C11[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C12__8S7688C11[10]),  10,17},
  {&(_ZTV8S7688C11[73]),  73,157},
  {&(_ZTV8S7688C11[112]),  112,157},
  {&(_ZTV8S7688C11[112]),  112,157},
  {&(_ZTV8S7688C11[130]),  130,157},
  {&(_ZTV8S7688C11[146]),  146,157},
  {&(_ZTV8S7688C11[91]),  91,157},
  {&(_ZTV8S7688C11[36]),  36,157},
  {&(_ZTV8S7688C11[36]),  36,157},
  {&(_ZTV8S7688C11[155]),  155,157},
  {&(_tg__ZTV7S7688C4__8S7688C11[6]),  6,20},
  {&(_tg__ZTV7S7688C97S7688C4__8S7688C11[4]),  4,15},
  {&(_tg__ZTV7S7688C6__7S7688C97S7688C4__8S7688C11[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C97S7688C4__8S7688C11[7]),  7,13},
  {&(_tg__ZTV7S7688C5__7S7688C4__8S7688C11[10]),  10,17},
  {&(_tg__ZTV7S7688C5__7S7688C4__8S7688C11[10]),  10,17},
  {&(_tg__ZTV7S7688C6__7S7688C4__8S7688C11[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C4__8S7688C11[7]),  7,13},
  {&(_tg__ZTV7S7688C9__7S7688C4__8S7688C11[4]),  4,15},
  {&(_tg__ZTV7S7688C5__8S7688C11[7]),  7,14},
  {&(_tg__ZTV7S7688C5__8S7688C11[7]),  7,14},
  {&(_tg__ZTV7S7688C6__8S7688C11[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__8S7688C11[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S7688C11[];
extern  VTBL_ENTRY _ZTV8S7688C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C11[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7688C12D0Ev,_ZThn64_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7688C12D1Ev,_ZThn64_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7688C12D0Ev,_ZThn80_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C12D0Ev,_ZThn88_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7688C12D1Ev,_ZThn80_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C12D1Ev,_ZThn88_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7688C11D0Ev,_ZThn92_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C11D0Ev,_ZThn84_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7688C11D1Ev,_ZThn92_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C11D1Ev,_ZThn84_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7688C11D0Ev,_ZThn68_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C11D0Ev,_ZThn12_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7688C11D1Ev,_ZThn68_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C11D1Ev,_ZThn12_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C11 = {  "S7688C11", // class name
  bases_S7688C11, 13,
  &(vtc_S7688C11[0]), // expected_vtbl_contents
  &(vtt_S7688C11[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI8S7688C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7688C11),157, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7688C11),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C13  : virtual S7688C3_nt , virtual S7688C5 , S7688C8 , S7688C6 {
  int s7688c13f0[2];
  virtual void  v52(); // _ZN8S7688C133v52Ev
  virtual void  v53(); // _ZN8S7688C133v53Ev
  virtual void  v54(); // _ZN8S7688C133v54Ev
  virtual void  v55(); // _ZN8S7688C133v55Ev
  ~S7688C13(); // tgen
  S7688C13(); // tgen
};
//SIG(-1 S7688C13) C1{ VBC2{ v5 v6 v7 v8} VBC3{ VBC2 v9 v10 v11} BC4{ BC2 vd v12} BC5{ VBC6{ vd v13 v14 v15 v16 Fi} v17 v18 v19 v20 v21 v22 v23 FL Fi} v1 v2 v3 v4 Fi[2]}


void  S7688C13 ::v52(){vfunc_called(this, "_ZN8S7688C133v52Ev");}
void  S7688C13 ::v53(){vfunc_called(this, "_ZN8S7688C133v53Ev");}
void  S7688C13 ::v54(){vfunc_called(this, "_ZN8S7688C133v54Ev");}
void  S7688C13 ::v55(){vfunc_called(this, "_ZN8S7688C133v55Ev");}
S7688C13 ::~S7688C13(){ note_dtor("S7688C13", this);} // tgen
S7688C13 ::S7688C13(){ note_ctor("S7688C13", this);} // tgen

static void Test_S7688C13()
{
  extern Class_Descriptor cd_S7688C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S7688C13, buf);
    S7688C13 *dp, &lv = *(dp=new (buf) S7688C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7688C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C13)");
    /*is_ambiguous_... S7688C13::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*), ABISELECT(40,28), "S7688C13");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(40,28), "S7688C13");
    check_base_class_offset(lv, (S7688C5*), ABISELECT(40,28), "S7688C13");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), 0, "S7688C13");
    check_base_class_offset(lv, (S7688C8*), 0, "S7688C13");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(48,32), "S7688C13");
    check_base_class_offset(lv, (S7688C6*), ABISELECT(8,4), "S7688C13");
    check_field_offset(lv, s7688c13f0, ABISELECT(28,20), "S7688C13.s7688c13f0");
    test_class_info(&lv, &cd_S7688C13);
    dp->~S7688C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C13(Test_S7688C13, "S7688C13", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S7688C13C1Ev();
extern void _ZN8S7688C13D1Ev();
Name_Map name_map_S7688C13[] = {
  NSPAIR(_ZN8S7688C13C1Ev),
  NSPAIR(_ZN8S7688C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
static Base_Class bases_S7688C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    ABISELECT(40,28), //bcp->offset
    -1, //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
  1, 1},
  {&cd_S7688C5,    ABISELECT(40,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    10, //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_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7688C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C7_nt,    ABISELECT(48,32), //bcp->offset
    45, //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
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7688C13[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C13D1Ev();
extern void _ZN8S7688C13D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev)();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7688C13D1Ev,_ZThn32_N8S7688C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7688C13D0Ev,_ZThn32_N8S7688C13D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY vtc_S7688C13[] = {
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV8S7688C13[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C13[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7688C6D1Ev,_ZThn28_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S7688C6D0Ev,_ZThn28_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__8S7688C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
static  VTT_ENTRY vtt_S7688C13[] = {
  {&(_ZTV8S7688C13[5]),  5,58},
  {&(_tg__ZTV7S7688C6__8S7688C13[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__8S7688C13[7]),  7,13},
  {&(_ZTV8S7688C13[38]),  38,58},
  {&(_ZTV8S7688C13[38]),  38,58},
  {&(_ZTV8S7688C13[19]),  19,58},
  {&(_ZTV8S7688C13[52]),  52,58},
  {&(_tg__ZTV7S7688C5__8S7688C13[7]),  7,14},
  {&(_tg__ZTV7S7688C5__8S7688C13[7]),  7,14},
};
extern VTBL_ENTRY _ZTI8S7688C13[];
extern  VTBL_ENTRY _ZTV8S7688C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C13[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7688C6D0Ev,_ZThn28_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7688C6D1Ev,_ZThn28_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7688C13D0Ev,_ZThn32_N8S7688C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7688C13D1Ev,_ZThn32_N8S7688C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C13 = {  "S7688C13", // class name
  bases_S7688C13, 6,
  &(vtc_S7688C13[0]), // expected_vtbl_contents
  &(vtt_S7688C13[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S7688C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7688C13),58, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7688C13),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C2  : virtual S7688C3_nt , virtual S7688C4 , S7688C11 , virtual S7688C13 , S7688C12 {
  virtual  ~S7688C2(); // _ZN7S7688C2D2Ev
  virtual void  v56(); // _ZN7S7688C23v56Ev
  S7688C2(); // tgen
};
//SIG(-1 S7688C2) C1{ VBC2{ v2 v3 v4 v5} VBC3{ VBC2 VBC4{ VBC2 v6 v7 v8} VBC5{ VBC6{ vd v9 v10 v11 v12 Fi} v13 v14 v15 v16 v17 v18 v19 FL Fi} BC7{ BC2 vd v20} BC8{ VBC5 vd v21 v22 v23 v24 v25 v26 v27 v28 v29 FC9{ vd m Fp[9]}} vd v30 v31 v32 v33 v34 v35 v36 Fi} BC10{ VBC3 BC2 BC11{ VBC7 VBC9 VBC5 VBC4 vd v37 v38} v39 v40 v41 v42 v43 v44 v45 Fi} VBC12{ VBC2 VBC4 BC7 BC5 v46 v47 v48 v49 Fi[2]} BC11 vd v1}


 S7688C2 ::~S7688C2(){ note_dtor("S7688C2", this);}
void  S7688C2 ::v56(){vfunc_called(this, "_ZN7S7688C23v56Ev");}
S7688C2 ::S7688C2(){ note_ctor("S7688C2", this);} // tgen

static void Test_S7688C2()
{
  extern Class_Descriptor cd_S7688C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,42)];
    init_test(&cd_S7688C2, buf);
    S7688C2 *dp, &lv = *(dp=new (buf) S7688C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,164), "sizeof(S7688C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C2)");
    /*is_ambiguous_... S7688C2::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*), ABISELECT(136,68), "S7688C2");
    /*is_ambiguous_... S7688C4::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C4*), ABISELECT(136,68), "S7688C2");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(136,68), "S7688C2");
    /*is_ambiguous_... S7688C13::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C13*), ABISELECT(136,68), "S7688C2");
    check_base_class_offset(lv, (S7688C5*)(S7688C4*), ABISELECT(136,68), "S7688C2");
    check_base_class_offset(lv, (S7688C5*)(S7688C12*)(S7688C11*), ABISELECT(136,68), "S7688C2");
    check_base_class_offset(lv, (S7688C5*)(S7688C13*), ABISELECT(136,68), "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C5*)(S7688C12*), ABISELECT(136,68), "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(168,88), "S7688C2");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C13*), ABISELECT(168,88), "S7688C2");
    check_base_class_offset(lv, (S7688C6*)(S7688C4*), ABISELECT(144,72), "S7688C2");
    check_base_class_offset(lv, (S7688C6*)(S7688C9*)(S7688C4*), ABISELECT(144,72), "S7688C2");
    check_base_class_offset(lv, (S7688C6*)(S7688C12*)(S7688C11*), ABISELECT(144,72), "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C6*)(S7688C12*), ABISELECT(144,72), "S7688C2");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C4*), ABISELECT(32,16), "S7688C2");
    check_base_class_offset(lv, (S7688C8*)(S7688C4*), ABISELECT(32,16), "S7688C2");
    check_base_class_offset(lv, (S7688C9*)(S7688C4*), ABISELECT(40,20), "S7688C2");
    check_base_class_offset(lv, (S7688C4*), ABISELECT(32,16), "S7688C2");
    check_base_class_offset(lv, (S7688C4*)(S7688C11*), ABISELECT(32,16), "S7688C2");
    /*is_ambiguous_... S7688C11::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C11*), 0, "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C8 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), ABISELECT(8,4), "S7688C2");
    check_base_class_offset(lv, (S7688C8*)(S7688C12*)(S7688C11*), ABISELECT(8,4), "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C8*)(S7688C12*), ABISELECT(8,4), "S7688C2");
    check_base_class_offset(lv, (S7688C10*)(S7688C12*)(S7688C11*), ABISELECT(184,96), "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C10*)(S7688C12*), ABISELECT(184,96), "S7688C2");
    check_base_class_offset(lv, (S7688C12*)(S7688C11*), ABISELECT(8,4), "S7688C2");
    check_base_class_offset(lv, (S7688C11*), 0, "S7688C2");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C13*), ABISELECT(264,136), "S7688C2");
    check_base_class_offset(lv, (S7688C8*)(S7688C13*), ABISELECT(264,136), "S7688C2");
    check_base_class_offset(lv, (S7688C6*)(S7688C13*), ABISELECT(272,140), "S7688C2");
    check_base_class_offset(lv, (S7688C13*), ABISELECT(264,136), "S7688C2");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C12*), ABISELECT(24,12), "S7688C2");
    test_class_info(&lv, &cd_S7688C2);
    dp->~S7688C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C2(Test_S7688C2, "S7688C2", ABISELECT(304,164));

#else // __cplusplus

extern void _ZN7S7688C2C1Ev();
extern void _ZN7S7688C2D2Ev();
Name_Map name_map_S7688C2[] = {
  NSPAIR(_ZN7S7688C2C1Ev),
  NSPAIR(_ZN7S7688C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C9;
extern VTBL_ENTRY _ZTI7S7688C9[];
extern  VTBL_ENTRY _ZTV7S7688C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C9[];
extern Class_Descriptor cd_S7688C4;
extern VTBL_ENTRY _ZTI7S7688C4[];
extern  VTBL_ENTRY _ZTV7S7688C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C4[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
extern Class_Descriptor cd_S7688C11;
extern VTBL_ENTRY _ZTI8S7688C11[];
extern  VTBL_ENTRY _ZTV8S7688C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C11[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C13;
extern VTBL_ENTRY _ZTI8S7688C13[];
extern  VTBL_ENTRY _ZTV8S7688C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C13[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
static Base_Class bases_S7688C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C5,    ABISELECT(136,68), //bcp->offset
    127, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7688C7_nt,    ABISELECT(168,88), //bcp->offset
    164, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(144,72), //bcp->offset
    144, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7688C3_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7688C9,    ABISELECT(40,20), //bcp->offset
    112, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7688C4,    ABISELECT(32,16), //bcp->offset
    70, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7688C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(184,96), //bcp->offset
    177, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C12,    ABISELECT(8,4), //bcp->offset
    24, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7688C11,    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},
  {&cd_S7688C3_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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7688C8,    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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7688C6,    ABISELECT(272,140), //bcp->offset
    215, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7688C13,    ABISELECT(264,136), //bcp->offset
    182, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C12,    ABISELECT(24,12), //bcp->offset
    47, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7688C2[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN7S7688C2D1Ev();
extern void _ZN7S7688C2D0Ev();
extern void _ZN7S7688C23v56Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C2D1Ev,_ZThn4_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7688C2D0Ev,_ZThn4_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C2D1Ev,_ZThn12_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C2D0Ev,_ZThn12_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7688C2D1Ev,_ZThn16_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7688C2D0Ev,_ZThn16_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
extern void ABISELECT(_ZTvn8_n88_N7S7688C2D1Ev,_ZTvn4_n44_N7S7688C2D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N7S7688C2D0Ev,_ZTvn4_n44_N7S7688C2D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7688C2D1Ev,_ZThn72_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7688C2D0Ev,_ZThn72_N7S7688C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S7688C2D1Ev,_ZThn88_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S7688C2D0Ev,_ZThn88_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S7688C2D1Ev,_ZThn96_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S7688C2D0Ev,_ZThn96_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7688C2D1Ev,_ZTv0_n40_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7688C2D1Ev,_ZThn136_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7688C2D0Ev,_ZTv0_n40_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7688C2D0Ev,_ZThn136_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N7S7688C2D1Ev,_ZTvn4_n40_N7S7688C2D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N7S7688C2D0Ev,_ZTvn4_n40_N7S7688C2D0Ev)();
static  VTBL_ENTRY vtc_S7688C2[] = {
  ABISELECT(264,136),
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(168,88),
  ABISELECT(144,72),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN7S7688C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C23v56Ev,
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(176,92),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-32,-16),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7688C2D1Ev,_ZTvn4_n44_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7688C2D0Ev,_ZTvn4_n44_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-144,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7688C2D1Ev,_ZTv0_n40_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7688C2D0Ev,_ZTv0_n40_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
  ABISELECT(-104,-52),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7688C2D1Ev,_ZTvn4_n40_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7688C2D0Ev,_ZTvn4_n40_N7S7688C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7688C2[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN8S7688C11D1Ev();
extern void _ZN8S7688C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C11__7S7688C2[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(168,88),
  ABISELECT(144,72),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D0Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C11__7S7688C2[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(176,92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7688C12D1Ev,_ZThn92_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7688C12D0Ev,_ZThn92_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C128S7688C11__7S7688C2[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7688C12D1Ev,_ZThn68_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7688C12D0Ev,_ZThn68_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C128S7688C11__7S7688C2[] = {
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7688C12D1Ev,_ZThn84_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7688C12D0Ev,_ZThn84_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C128S7688C11__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C128S7688C11__7S7688C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S7688C11D1Ev,_ZThn16_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S7688C11D0Ev,_ZThn16_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__8S7688C11__7S7688C2[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-32,-16),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C11__7S7688C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn144_N8S7688C11D1Ev,_ZThn72_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn144_N8S7688C11D0Ev,_ZThn72_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C11__7S7688C2[] = {
  ABISELECT(-144,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn168_N8S7688C11D1Ev,_ZThn88_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn168_N8S7688C11D0Ev,_ZThn88_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C11__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__8S7688C11__7S7688C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C11__7S7688C2[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(176,92),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn184_N8S7688C11D1Ev,_ZThn96_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn184_N8S7688C11D0Ev,_ZThn96_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C11__7S7688C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__A1__7S7688C2[] = {
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__8S7688C12__A1__7S7688C2[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7688C12D1Ev,_ZThn84_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7688C12D0Ev,_ZThn84_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C12__A1__7S7688C2[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7688C12D1Ev,_ZThn60_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7688C12D0Ev,_ZThn60_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C12__A1__7S7688C2[] = {
  ABISELECT(-120,-60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S7688C12D1Ev,_ZThn76_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S7688C12D0Ev,_ZThn76_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C12__A1__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C12__A1__7S7688C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C4D1Ev();
extern void _ZN7S7688C4D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__7S7688C2[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN7S7688C9D1Ev();
extern void _ZN7S7688C9D0Ev();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__7S7688C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C97S7688C4__7S7688C2[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C97S7688C4__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C4__7S7688C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C4__7S7688C2[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C4__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C9__7S7688C4__7S7688C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C13D1Ev();
extern void _ZN8S7688C13D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__7S7688C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__A1__7S7688C2[] = {
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C13__A1__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(104,52),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C13__7S7688C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C13__7S7688C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C13__7S7688C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
static  VTT_ENTRY vtt_S7688C2[] = {
  {&(_ZTV7S7688C2[10]),  10,227},
  {&(_tg__ZTV8S7688C11__7S7688C2[9]),  9,22},
  {&(_tg__ZTV8S7688C128S7688C11__7S7688C2[14]),  14,23},
  {&(_tg__ZTV8S7688C128S7688C11__7S7688C2[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C128S7688C11__7S7688C2[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C128S7688C11__7S7688C2[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C128S7688C11__7S7688C2[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C11__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C11__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C4__8S7688C11__7S7688C2[28]),  28,42},
  {&(_tg__ZTV7S7688C5__8S7688C11__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C11__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C11__7S7688C2[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C11__7S7688C2[7]),  7,13},
  {&(_tg__ZTV7S7688C97S7688C4__8S7688C11__7S7688C2[4]),  4,15},
  {&(_tg__ZTV8S7688C12__8S7688C11__7S7688C2[14]),  14,23},
  {&(_tg__ZTV8S7688C12__8S7688C11__7S7688C2[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C11__7S7688C2[3]),  3,5},
  {&(_tg__ZTV8S7688C12__A1__7S7688C2[14]),  14,23},
  {&(_tg__ZTV7S7688C8__8S7688C12__A1__7S7688C2[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7688C12__A1__7S7688C2[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C12__A1__7S7688C2[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C12__A1__7S7688C2[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C12__A1__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C12__A1__7S7688C2[10]),  10,17},
  {&(_ZTV7S7688C2[137]),  137,227},
  {&(_ZTV7S7688C2[98]),  98,227},
  {&(_ZTV7S7688C2[137]),  137,227},
  {&(_ZTV7S7688C2[155]),  155,227},
  {&(_ZTV7S7688C2[171]),  171,227},
  {&(_ZTV7S7688C2[116]),  116,227},
  {&(_ZTV7S7688C2[38]),  38,227},
  {&(_ZTV7S7688C2[38]),  38,227},
  {&(_ZTV7S7688C2[180]),  180,227},
  {&(_ZTV7S7688C2[204]),  204,227},
  {&(_ZTV7S7688C2[218]),  218,227},
  {&(_ZTV7S7688C2[61]),  61,227},
  {&(_tg__ZTV7S7688C4__7S7688C2[6]),  6,20},
  {&(_tg__ZTV7S7688C97S7688C4__7S7688C2[4]),  4,15},
  {&(_tg__ZTV7S7688C6__7S7688C97S7688C4__7S7688C2[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C97S7688C4__7S7688C2[7]),  7,13},
  {&(_tg__ZTV7S7688C5__7S7688C4__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C5__7S7688C4__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C6__7S7688C4__7S7688C2[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C4__7S7688C2[7]),  7,13},
  {&(_tg__ZTV7S7688C9__7S7688C4__7S7688C2[4]),  4,15},
  {&(_tg__ZTV7S7688C5__7S7688C2[7]),  7,14},
  {&(_tg__ZTV7S7688C5__7S7688C2[7]),  7,14},
  {&(_tg__ZTV7S7688C6__7S7688C2[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__7S7688C2[7]),  7,13},
  {&(_tg__ZTV8S7688C13__7S7688C2[5]),  5,16},
  {&(_tg__ZTV7S7688C68S7688C13__A1__7S7688C2[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C13__A1__7S7688C2[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C13__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C13__7S7688C2[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C13__7S7688C2[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__8S7688C13__7S7688C2[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7688C2[];
extern  VTBL_ENTRY _ZTV7S7688C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C2[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7688C11D0Ev,_ZThn96_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C11D0Ev,_ZThn88_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7688C11D1Ev,_ZThn96_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C11D1Ev,_ZThn88_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C11D0Ev,_ZThn72_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7688C11D0Ev,_ZThn16_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C11D1Ev,_ZThn72_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7688C11D1Ev,_ZThn16_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7688C12D0Ev,_ZThn60_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7688C12D0Ev,_ZThn68_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7688C12D1Ev,_ZThn60_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7688C12D1Ev,_ZThn68_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C12D0Ev,_ZThn76_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C12D0Ev,_ZThn84_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C12D0Ev,_ZThn84_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7688C12D0Ev,_ZThn92_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C12D1Ev,_ZThn76_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C12D1Ev,_ZThn84_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C12D1Ev,_ZThn84_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7688C12D1Ev,_ZThn92_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7688C2D0Ev,_ZTv0_n40_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7688C2D0Ev,_ZThn136_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7688C2D1Ev,_ZTv0_n40_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7688C2D1Ev,_ZThn136_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7688C2D0Ev,_ZThn96_N7S7688C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7688C2D0Ev,_ZThn88_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7688C2D1Ev,_ZThn96_N7S7688C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7688C2D1Ev,_ZThn88_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7688C2D0Ev,_ZThn72_N7S7688C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7688C2D0Ev,_ZThn16_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7688C2D1Ev,_ZThn72_N7S7688C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7688C2D1Ev,_ZThn16_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C2D0Ev,_ZThn12_N7S7688C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7688C2D0Ev,_ZThn4_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C2D1Ev,_ZThn12_N7S7688C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7688C2D1Ev,_ZThn4_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C2 = {  "S7688C2", // class name
  bases_S7688C2, 19,
  &(vtc_S7688C2[0]), // expected_vtbl_contents
  &(vtt_S7688C2[0]), // expected_vtt_contents
  ABISELECT(304,164), // object size
  NSPAIRA(_ZTI7S7688C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7688C2),227, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7688C2),57, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C14  {
  __tsi64 s7688c14f0;
  virtual void  v57(); // _ZN8S7688C143v57Ev
  virtual void  v58(); // _ZN8S7688C143v58Ev
  virtual void  v59(); // _ZN8S7688C143v59Ev
  virtual void  v60(); // _ZN8S7688C143v60Ev
  virtual void  v61(); // _ZN8S7688C143v61Ev
  virtual void  v62(); // _ZN8S7688C143v62Ev
  ~S7688C14(); // tgen
  S7688C14(); // tgen
};
//SIG(-1 S7688C14) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S7688C14 ::v57(){vfunc_called(this, "_ZN8S7688C143v57Ev");}
void  S7688C14 ::v58(){vfunc_called(this, "_ZN8S7688C143v58Ev");}
void  S7688C14 ::v59(){vfunc_called(this, "_ZN8S7688C143v59Ev");}
void  S7688C14 ::v60(){vfunc_called(this, "_ZN8S7688C143v60Ev");}
void  S7688C14 ::v61(){vfunc_called(this, "_ZN8S7688C143v61Ev");}
void  S7688C14 ::v62(){vfunc_called(this, "_ZN8S7688C143v62Ev");}
S7688C14 ::~S7688C14(){ note_dtor("S7688C14", this);} // tgen
S7688C14 ::S7688C14(){ note_ctor("S7688C14", this);} // tgen

static void Test_S7688C14()
{
  extern Class_Descriptor cd_S7688C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7688C14, buf);
    S7688C14 *dp, &lv = *(dp=new (buf) S7688C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7688C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7688C14)");
    check_field_offset(lv, s7688c14f0, ABISELECT(8,4), "S7688C14.s7688c14f0");
    test_class_info(&lv, &cd_S7688C14);
    dp->~S7688C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C14(Test_S7688C14, "S7688C14", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7688C14C1Ev();
extern void _ZN8S7688C14D1Ev();
Name_Map name_map_S7688C14[] = {
  NSPAIR(_ZN8S7688C14C1Ev),
  NSPAIR(_ZN8S7688C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7688C14[];
extern void _ZN8S7688C143v57Ev();
extern void _ZN8S7688C143v58Ev();
extern void _ZN8S7688C143v59Ev();
extern void _ZN8S7688C143v60Ev();
extern void _ZN8S7688C143v61Ev();
extern void _ZN8S7688C143v62Ev();
static  VTBL_ENTRY vtc_S7688C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C14[0]),
  (VTBL_ENTRY)&_ZN8S7688C143v57Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v58Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v59Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v60Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v61Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v62Ev,
};
extern VTBL_ENTRY _ZTI8S7688C14[];
extern  VTBL_ENTRY _ZTV8S7688C14[];
Class_Descriptor cd_S7688C14 = {  "S7688C14", // class name
  0,0,//no base classes
  &(vtc_S7688C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7688C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7688C14),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  S7688C16  : virtual S7688C7_nt , virtual S7688C13 , S7688C6 , virtual S7688C10 , S7688C12 {
  long double s7688c16f0;
  __tsi64  :0;
  virtual  ~S7688C16(); // _ZN8S7688C16D2Ev
  virtual void  v63(); // _ZN8S7688C163v63Ev
  virtual void  v64(); // _ZN8S7688C163v64Ev
  virtual void  v65(); // _ZN8S7688C163v65Ev
  S7688C16(); // tgen
};
//SIG(-1 S7688C16) C1{ VBC2{ vd v4 v5 v6 v7 Fi} VBC3{ VBC4{ v8 v9 v10 v11} VBC5{ VBC4 v12 v13 v14} BC6{ BC4 vd v15} BC7{ VBC2 v16 v17 v18 v19 v20 v21 v22 FL Fi} v23 v24 v25 v26 Fi[2]} BC7 VBC8{ vd m Fp[9]} BC9{ VBC6 VBC8 VBC7 VBC5 vd v27 v28} vd v1 v2 v3 FD FL:0}


 S7688C16 ::~S7688C16(){ note_dtor("S7688C16", this);}
void  S7688C16 ::v63(){vfunc_called(this, "_ZN8S7688C163v63Ev");}
void  S7688C16 ::v64(){vfunc_called(this, "_ZN8S7688C163v64Ev");}
void  S7688C16 ::v65(){vfunc_called(this, "_ZN8S7688C163v65Ev");}
S7688C16 ::S7688C16(){ note_ctor("S7688C16", this);} // tgen

static void Test_S7688C16()
{
  extern Class_Descriptor cd_S7688C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,33)];
    init_test(&cd_S7688C16, buf);
    S7688C16 *dp, &lv = *(dp=new (buf) S7688C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,128), "sizeof(S7688C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7688C16)");
    check_base_class_offset(lv, (S7688C7_nt*), ABISELECT(48,32), "S7688C16");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C13*), ABISELECT(48,32), "S7688C16");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(48,32), "S7688C16");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(48,32), "S7688C16");
    /*is_ambiguous_... S7688C13::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C13*), ABISELECT(104,68), "S7688C16");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(104,68), "S7688C16");
    check_base_class_offset(lv, (S7688C5*)(S7688C13*), ABISELECT(104,68), "S7688C16");
    check_base_class_offset(lv, (S7688C5*)(S7688C12*), ABISELECT(104,68), "S7688C16");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C13*), ABISELECT(64,40), "S7688C16");
    check_base_class_offset(lv, (S7688C8*)(S7688C13*), ABISELECT(64,40), "S7688C16");
    check_base_class_offset(lv, (S7688C6*)(S7688C13*), ABISELECT(72,44), "S7688C16");
    check_base_class_offset(lv, (S7688C13*), ABISELECT(64,40), "S7688C16");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C6*), 0, "S7688C16");
    check_base_class_offset(lv, (S7688C10*), ABISELECT(112,72), "S7688C16");
    check_base_class_offset(lv, (S7688C10*)(S7688C12*), ABISELECT(112,72), "S7688C16");
    /*is_ambiguous_... S7688C16::S7688C8 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), ABISELECT(24,16), "S7688C16");
    check_base_class_offset(lv, (S7688C8*)(S7688C12*), ABISELECT(24,16), "S7688C16");
    check_base_class_offset(lv, (S7688C6*)(S7688C12*), ABISELECT(192,112), "S7688C16");
    check_base_class_offset(lv, (S7688C12*), ABISELECT(24,16), "S7688C16");
    check_field_offset(lv, s7688c16f0, ABISELECT(32,20), "S7688C16.s7688c16f0");
    test_class_info(&lv, &cd_S7688C16);
    dp->~S7688C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C16(Test_S7688C16, "S7688C16", ABISELECT(224,128));

#else // __cplusplus

extern void _ZN8S7688C16C1Ev();
extern void _ZN8S7688C16D2Ev();
Name_Map name_map_S7688C16[] = {
  NSPAIR(_ZN8S7688C16C1Ev),
  NSPAIR(_ZN8S7688C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C13;
extern VTBL_ENTRY _ZTI8S7688C13[];
extern  VTBL_ENTRY _ZTV8S7688C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C13[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
static Base_Class bases_S7688C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C7_nt,    ABISELECT(48,32), //bcp->offset
    44, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C3_nt,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    2, //immediately_derived
  0, 1},
  {&cd_S7688C5,    ABISELECT(104,68), //bcp->offset
    102, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7688C3_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7688C8,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7688C6,    ABISELECT(72,44), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7688C13,    ABISELECT(64,40), //bcp->offset
    57, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C6,    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_S7688C10,    ABISELECT(112,72), //bcp->offset
    119, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C3_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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(24,16), //bcp->offset
    -1, //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
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(192,112), //bcp->offset
    124, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C12,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7688C16[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN8S7688C16D1Ev();
extern void _ZN8S7688C16D0Ev();
extern void _ZN8S7688C163v63Ev();
extern void _ZN8S7688C163v64Ev();
extern void _ZN8S7688C163v65Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C16D1Ev,_ZThn16_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C16D0Ev,_ZThn16_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S7688C16D1Ev,_ZThn32_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S7688C16D0Ev,_ZThn32_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7688C16D1Ev,_ZThn40_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7688C16D0Ev,_ZThn40_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7688C16D1Ev,_ZTvn4_n40_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7688C16D0Ev,_ZTvn4_n40_N8S7688C16D0Ev)();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn112_N8S7688C16D1Ev,_ZThn72_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn112_N8S7688C16D0Ev,_ZThn72_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn192_N8S7688C16D1Ev,_ZThn112_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn192_N8S7688C16D0Ev,_ZThn112_N8S7688C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7688C16[] = {
  ABISELECT(192,112),
  ABISELECT(24,16),
  ABISELECT(112,72),
  ABISELECT(104,68),
  ABISELECT(104,68),
  ABISELECT(64,40),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7688C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v65Ev,
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(168,96),
  ABISELECT(88,56),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
  ABISELECT(-24,-12),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C16D1Ev,_ZTvn4_n40_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C16D0Ev,_ZTvn4_n40_N8S7688C16D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev),
  ABISELECT(-192,-112),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7688C16[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A__8S7688C16[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7688C6D1Ev,_ZThn32_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7688C6D0Ev,_ZThn32_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__A__8S7688C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C16[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(168,96),
  ABISELECT(88,56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S7688C12D1Ev,_ZThn56_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S7688C12D0Ev,_ZThn56_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C12__8S7688C16[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S7688C12D1Ev,_ZThn96_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S7688C12D0Ev,_ZThn96_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C12__8S7688C16[] = {
  ABISELECT(-168,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C12D1Ev,_ZThn16_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C12D0Ev,_ZThn16_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C12__8S7688C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C12__8S7688C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C13D1Ev();
extern void _ZN8S7688C13D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__8S7688C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__8S7688C16[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C13__8S7688C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C13__8S7688C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C13__8S7688C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C13__8S7688C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A2__8S7688C16[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__A2__8S7688C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,80),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
static  VTT_ENTRY vtt_S7688C16[] = {
  {&(_ZTV8S7688C16[9]),  9,144},
  {&(_tg__ZTV7S7688C6__A__8S7688C16[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__A__8S7688C16[7]),  7,13},
  {&(_tg__ZTV8S7688C12__8S7688C16[14]),  14,23},
  {&(_tg__ZTV8S7688C12__8S7688C16[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C12__8S7688C16[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C12__8S7688C16[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C12__8S7688C16[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C12__8S7688C16[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C12__8S7688C16[10]),  10,17},
  {&(_ZTV8S7688C16[51]),  51,144},
  {&(_ZTV8S7688C16[79]),  79,144},
  {&(_ZTV8S7688C16[112]),  112,144},
  {&(_ZTV8S7688C16[112]),  112,144},
  {&(_ZTV8S7688C16[93]),  93,144},
  {&(_ZTV8S7688C16[122]),  122,144},
  {&(_ZTV8S7688C16[35]),  35,144},
  {&(_ZTV8S7688C16[35]),  35,144},
  {&(_ZTV8S7688C16[135]),  135,144},
  {&(_tg__ZTV8S7688C13__8S7688C16[5]),  5,16},
  {&(_tg__ZTV7S7688C68S7688C13__8S7688C16[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C13__8S7688C16[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C13__8S7688C16[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C13__8S7688C16[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C13__8S7688C16[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__8S7688C13__8S7688C16[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C16[7]),  7,14},
  {&(_tg__ZTV7S7688C5__8S7688C16[7]),  7,14},
  {&(_tg__ZTV7S7688C6__A2__8S7688C16[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__A2__8S7688C16[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S7688C16[];
extern  VTBL_ENTRY _ZTV8S7688C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C16[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C12D0Ev,_ZThn96_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C12D1Ev,_ZThn96_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C12D0Ev,_ZThn16_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7688C12D0Ev,_ZThn56_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C12D1Ev,_ZThn16_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7688C12D1Ev,_ZThn56_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7688C6D0Ev,_ZThn32_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7688C6D1Ev,_ZThn32_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7688C16D0Ev,_ZThn112_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7688C16D1Ev,_ZThn112_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7688C16D0Ev,_ZThn40_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7688C16D1Ev,_ZThn40_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7688C16D0Ev,_ZThn72_N8S7688C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7688C16D0Ev,_ZThn32_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7688C16D1Ev,_ZThn72_N8S7688C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7688C16D1Ev,_ZThn32_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C16D0Ev,_ZThn16_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C16D1Ev,_ZThn16_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C16 = {  "S7688C16", // class name
  bases_S7688C16, 13,
  &(vtc_S7688C16[0]), // expected_vtbl_contents
  &(vtt_S7688C16[0]), // expected_vtt_contents
  ABISELECT(224,128), // object size
  NSPAIRA(_ZTI8S7688C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7688C16),144, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7688C16),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C15  : S7688C16 , S7688C6 {
  int s7688c15f0;
  __tsi64 s7688c15f1;
  virtual  ~S7688C15(); // _ZN8S7688C15D2Ev
  virtual void  v66(); // _ZN8S7688C153v66Ev
  virtual void  v67(); // _ZN8S7688C153v67Ev
  virtual void  v68(); // _ZN8S7688C153v68Ev
  S7688C15(); // tgen
};
//SIG(-1 S7688C15) C1{ BC2{ VBC3{ vd v4 v5 v6 v7 Fi} VBC4{ VBC5{ v8 v9 v10 v11} VBC6{ VBC5 v12 v13 v14} BC7{ BC5 vd v15} BC8{ VBC3 v16 v17 v18 v19 v20 v21 v22 FL Fi} v23 v24 v25 v26 Fi[2]} BC8 VBC9{ vd m Fp[9]} BC10{ VBC7 VBC9 VBC8 VBC6 vd v27 v28} vd v29 v30 v31 FD FL:0} BC8 vd v1 v2 v3 Fi FL}


 S7688C15 ::~S7688C15(){ note_dtor("S7688C15", this);}
void  S7688C15 ::v66(){vfunc_called(this, "_ZN8S7688C153v66Ev");}
void  S7688C15 ::v67(){vfunc_called(this, "_ZN8S7688C153v67Ev");}
void  S7688C15 ::v68(){vfunc_called(this, "_ZN8S7688C153v68Ev");}
S7688C15 ::S7688C15(){ note_ctor("S7688C15", this);} // tgen

static void Test_S7688C15()
{
  extern Class_Descriptor cd_S7688C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,40)];
    init_test(&cd_S7688C15, buf);
    S7688C15 *dp, &lv = *(dp=new (buf) S7688C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,156), "sizeof(S7688C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7688C15)");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C16*), ABISELECT(80,60), "S7688C15");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C13*), ABISELECT(80,60), "S7688C15");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C16*), ABISELECT(80,60), "S7688C15");
    /*is_ambiguous_... S7688C15::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(80,60), "S7688C15");
    /*is_ambiguous_... S7688C15::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(80,60), "S7688C15");
    /*is_ambiguous_... S7688C13::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C13*), ABISELECT(136,96), "S7688C15");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(136,96), "S7688C15");
    check_base_class_offset(lv, (S7688C5*)(S7688C13*), ABISELECT(136,96), "S7688C15");
    check_base_class_offset(lv, (S7688C5*)(S7688C12*)(S7688C16*), ABISELECT(136,96), "S7688C15");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C13*), ABISELECT(96,68), "S7688C15");
    check_base_class_offset(lv, (S7688C8*)(S7688C13*), ABISELECT(96,68), "S7688C15");
    check_base_class_offset(lv, (S7688C6*)(S7688C13*), ABISELECT(104,72), "S7688C15");
    check_base_class_offset(lv, (S7688C13*)(S7688C16*), ABISELECT(96,68), "S7688C15");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C6*)(S7688C16*), 0, "S7688C15");
    check_base_class_offset(lv, (S7688C10*)(S7688C16*), ABISELECT(144,100), "S7688C15");
    check_base_class_offset(lv, (S7688C10*)(S7688C12*)(S7688C16*), ABISELECT(144,100), "S7688C15");
    /*is_ambiguous_... S7688C15::S7688C8 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), ABISELECT(24,16), "S7688C15");
    check_base_class_offset(lv, (S7688C8*)(S7688C12*)(S7688C16*), ABISELECT(24,16), "S7688C15");
    check_base_class_offset(lv, (S7688C6*)(S7688C12*)(S7688C16*), ABISELECT(224,140), "S7688C15");
    check_base_class_offset(lv, (S7688C12*)(S7688C16*), ABISELECT(24,16), "S7688C15");
    check_base_class_offset(lv, (S7688C16*), 0, "S7688C15");
    /*is_ambiguous_... S7688C15::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C6*), ABISELECT(48,32), "S7688C15");
    check_field_offset(lv, s7688c15f0, ABISELECT(68,48), "S7688C15.s7688c15f0");
    check_field_offset(lv, s7688c15f1, ABISELECT(72,52), "S7688C15.s7688c15f1");
    test_class_info(&lv, &cd_S7688C15);
    dp->~S7688C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C15(Test_S7688C15, "S7688C15", ABISELECT(256,156));

#else // __cplusplus

extern void _ZN8S7688C15C1Ev();
extern void _ZN8S7688C15D2Ev();
Name_Map name_map_S7688C15[] = {
  NSPAIR(_ZN8S7688C15C1Ev),
  NSPAIR(_ZN8S7688C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C13;
extern VTBL_ENTRY _ZTI8S7688C13[];
extern  VTBL_ENTRY _ZTV8S7688C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C13[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
extern Class_Descriptor cd_S7688C16;
extern VTBL_ENTRY _ZTI8S7688C16[];
extern  VTBL_ENTRY _ZTV8S7688C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C16[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
static Base_Class bases_S7688C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C7_nt,    ABISELECT(80,60), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7688C3_nt,    ABISELECT(136,96), //bcp->offset
    -1, //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
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7688C5,    ABISELECT(136,96), //bcp->offset
    117, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7688C3_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7688C6,    ABISELECT(104,72), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7688C13,    ABISELECT(96,68), //bcp->offset
    72, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7688C6,    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
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7688C10,    ABISELECT(144,100), //bcp->offset
    134, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C3_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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(224,140), //bcp->offset
    139, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C12,    ABISELECT(24,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7688C16,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C6,    ABISELECT(48,32), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7688C15[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN8S7688C15D1Ev();
extern void _ZN8S7688C15D0Ev();
extern void _ZN8S7688C163v63Ev();
extern void _ZN8S7688C163v64Ev();
extern void _ZN8S7688C163v65Ev();
extern void _ZN8S7688C153v66Ev();
extern void _ZN8S7688C153v67Ev();
extern void _ZN8S7688C153v68Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C15D1Ev,_ZThn16_N8S7688C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C15D0Ev,_ZThn16_N8S7688C15D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn48_N8S7688C15D1Ev,_ZThn32_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S7688C15D0Ev,_ZThn32_N8S7688C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S7688C15D1Ev,_ZThn60_N8S7688C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S7688C15D0Ev,_ZThn60_N8S7688C15D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7688C15D1Ev,_ZTv0_n40_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S7688C15D1Ev,_ZThn68_N8S7688C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7688C15D0Ev,_ZTv0_n40_N8S7688C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S7688C15D0Ev,_ZThn68_N8S7688C15D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7688C15D1Ev,_ZTvn4_n40_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7688C15D0Ev,_ZTvn4_n40_N8S7688C15D0Ev)();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S7688C15D1Ev,_ZThn100_N8S7688C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S7688C15D0Ev,_ZThn100_N8S7688C15D0Ev)() __attribute__((weak));
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C15D1Ev,_ZTv0_n44_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn224_N8S7688C15D1Ev,_ZThn140_N8S7688C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C15D0Ev,_ZTv0_n44_N8S7688C15D0Ev)();
extern void ABISELECT(_ZThn224_N8S7688C15D0Ev,_ZThn140_N8S7688C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7688C15[] = {
  ABISELECT(224,140),
  ABISELECT(24,16),
  ABISELECT(144,100),
  ABISELECT(136,96),
  ABISELECT(136,96),
  ABISELECT(96,68),
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7688C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v65Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v66Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v67Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v68Ev,
  ABISELECT(112,80),
  ABISELECT(112,80),
  ABISELECT(56,44),
  ABISELECT(200,124),
  ABISELECT(120,84),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(32,28),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7688C15D1Ev,_ZThn32_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7688C15D0Ev,_ZThn32_N8S7688C15D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C15D1Ev,_ZTv0_n40_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C15D0Ev,_ZTv0_n40_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
  ABISELECT(-24,-12),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C15D1Ev,_ZTvn4_n40_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C15D0Ev,_ZTvn4_n40_N8S7688C15D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev),
  ABISELECT(-224,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C15D1Ev,_ZTv0_n44_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C15D0Ev,_ZTv0_n44_N8S7688C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7688C15[];
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN8S7688C16D1Ev();
extern void _ZN8S7688C16D0Ev();
extern void _ZN8S7688C163v63Ev();
extern void _ZN8S7688C163v64Ev();
extern void _ZN8S7688C163v65Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C16__8S7688C15[] = {
  ABISELECT(224,140),
  ABISELECT(24,16),
  ABISELECT(144,100),
  ABISELECT(136,96),
  ABISELECT(136,96),
  ABISELECT(96,68),
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7688C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v65Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C16__A1__8S7688C15[] = {
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7688C6D1Ev,_ZThn60_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7688C6D0Ev,_ZThn60_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C16__A1__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C16__8S7688C15[] = {
  ABISELECT(112,80),
  ABISELECT(112,80),
  ABISELECT(56,44),
  ABISELECT(200,124),
  ABISELECT(120,84),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7688C12D1Ev,_ZThn84_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7688C12D0Ev,_ZThn84_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C128S7688C16__8S7688C15[] = {
  ABISELECT(-120,-84),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S7688C12D1Ev,_ZThn124_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S7688C12D0Ev,_ZThn124_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C128S7688C16__8S7688C15[] = {
  ABISELECT(-200,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7688C12D1Ev,_ZThn44_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S7688C12D0Ev,_ZThn44_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C128S7688C16__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C128S7688C16__8S7688C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S7688C16D1Ev,_ZThn60_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S7688C16D0Ev,_ZThn60_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C16__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S7688C16D1Ev,_ZThn68_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S7688C16D0Ev,_ZThn68_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__8S7688C16__8S7688C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-68),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C16__8S7688C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7688C16D1Ev,_ZTvn4_n40_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7688C16D0Ev,_ZTvn4_n40_N8S7688C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__8S7688C16__8S7688C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C16D1Ev,_ZTvn4_n40_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C16D0Ev,_ZTvn4_n40_N8S7688C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S7688C16D1Ev,_ZThn100_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S7688C16D0Ev,_ZThn100_N8S7688C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C16__8S7688C15[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C16D1Ev,_ZThn16_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C16D0Ev,_ZThn16_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C16__8S7688C15[] = {
  ABISELECT(112,80),
  ABISELECT(112,80),
  ABISELECT(56,44),
  ABISELECT(200,124),
  ABISELECT(120,84),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn224_N8S7688C16D1Ev,_ZThn140_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn224_N8S7688C16D0Ev,_ZThn140_N8S7688C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__A2__8S7688C16__8S7688C15[] = {
  ABISELECT(-224,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A__8S7688C15[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7688C6D1Ev,_ZThn28_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7688C6D0Ev,_ZThn28_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__A__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C13D1Ev();
extern void _ZN8S7688C13D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__8S7688C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__8S7688C15[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C13__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C13__8S7688C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C13__8S7688C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C13__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A2__8S7688C15[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__A2__8S7688C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,80),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
static  VTT_ENTRY vtt_S7688C15[] = {
  {&(_ZTV8S7688C15[9]),  9,159},
  {&(_tg__ZTV8S7688C16__8S7688C15[9]),  9,21},
  {&(_tg__ZTV7S7688C68S7688C16__A1__8S7688C15[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C16__A1__8S7688C15[7]),  7,13},
  {&(_tg__ZTV8S7688C128S7688C16__8S7688C15[14]),  14,23},
  {&(_tg__ZTV8S7688C128S7688C16__8S7688C15[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C128S7688C16__8S7688C15[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C128S7688C16__8S7688C15[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C128S7688C16__8S7688C15[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C16__8S7688C15[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C16__8S7688C15[10]),  10,17},
  {&(_tg__ZTV10S7688C7_nt__8S7688C16__8S7688C15[7]),  7,13},
  {&(_tg__ZTV8S7688C13__8S7688C16__8S7688C15[22]),  22,33},
  {&(_tg__ZTV7S7688C5__8S7688C16__8S7688C15[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C16__8S7688C15[10]),  10,17},
  {&(_tg__ZTV7S7688C68S7688C13__8S7688C16__8S7688C15[3]),  3,12},
  {&(_tg__ZTV8S7688C10__8S7688C16__8S7688C15[3]),  3,5},
  {&(_tg__ZTV8S7688C12__8S7688C16__8S7688C15[14]),  14,23},
  {&(_tg__ZTV8S7688C12__8S7688C16__8S7688C15[14]),  14,23},
  {&(_tg__ZTV7S7688C6__A2__8S7688C16__8S7688C15[11]),  11,20},
  {&(_tg__ZTV7S7688C6__A__8S7688C15[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__A__8S7688C15[7]),  7,13},
  {&(_ZTV8S7688C15[66]),  66,159},
  {&(_ZTV8S7688C15[94]),  94,159},
  {&(_ZTV8S7688C15[127]),  127,159},
  {&(_ZTV8S7688C15[127]),  127,159},
  {&(_ZTV8S7688C15[108]),  108,159},
  {&(_ZTV8S7688C15[137]),  137,159},
  {&(_ZTV8S7688C15[38]),  38,159},
  {&(_ZTV8S7688C15[38]),  38,159},
  {&(_ZTV8S7688C15[150]),  150,159},
  {&(_ZTV8S7688C15[50]),  50,159},
  {&(_tg__ZTV8S7688C13__8S7688C15[5]),  5,16},
  {&(_tg__ZTV7S7688C68S7688C13__8S7688C15[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C13__8S7688C15[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C13__8S7688C15[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C13__8S7688C15[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C13__8S7688C15[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__8S7688C13__8S7688C15[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C15[7]),  7,14},
  {&(_tg__ZTV7S7688C5__8S7688C15[7]),  7,14},
  {&(_tg__ZTV7S7688C6__A2__8S7688C15[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__A2__8S7688C15[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S7688C15[];
extern  VTBL_ENTRY _ZTV8S7688C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C15[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C16D0Ev,_ZThn140_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C16D1Ev,_ZThn140_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C16D0Ev,_ZThn16_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C16D1Ev,_ZThn16_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7688C16D0Ev,_ZThn68_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7688C16D1Ev,_ZThn68_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C16D0Ev,_ZThn100_N8S7688C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7688C16D0Ev,_ZThn60_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C16D1Ev,_ZThn100_N8S7688C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7688C16D1Ev,_ZThn60_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7688C12D0Ev,_ZThn124_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7688C12D1Ev,_ZThn124_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7688C12D0Ev,_ZThn44_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7688C12D0Ev,_ZThn84_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7688C12D1Ev,_ZThn44_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7688C12D1Ev,_ZThn84_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7688C6D0Ev,_ZThn28_N7S7688C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7688C6D0Ev,_ZThn60_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7688C6D1Ev,_ZThn28_N7S7688C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7688C6D1Ev,_ZThn60_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C15D0Ev,_ZTv0_n44_N8S7688C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C15D0Ev,_ZThn140_N8S7688C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C15D1Ev,_ZTv0_n44_N8S7688C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C15D1Ev,_ZThn140_N8S7688C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7688C15D0Ev,_ZTv0_n40_N8S7688C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7688C15D0Ev,_ZThn68_N8S7688C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7688C15D1Ev,_ZTv0_n40_N8S7688C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7688C15D1Ev,_ZThn68_N8S7688C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C15D0Ev,_ZThn100_N8S7688C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7688C15D0Ev,_ZThn60_N8S7688C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7688C15D1Ev,_ZThn100_N8S7688C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7688C15D1Ev,_ZThn60_N8S7688C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C15D0Ev,_ZThn16_N8S7688C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C15D1Ev,_ZThn16_N8S7688C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C15 = {  "S7688C15", // class name
  bases_S7688C15, 15,
  &(vtc_S7688C15[0]), // expected_vtbl_contents
  &(vtt_S7688C15[0]), // expected_vtt_contents
  ABISELECT(256,156), // object size
  NSPAIRA(_ZTI8S7688C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7688C15),159, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7688C15),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7688C1  : S7688C2 , S7688C5 , S7688C14 , S7688C11 , virtual S7688C15 {
  short s7688c1f0:8;
  int s7688c1f1[8];
  virtual void  v1(); // _ZN7S7688C12v1Ev
  virtual void  v2(); // _ZN7S7688C12v2Ev
  virtual void  v3(); // _ZN7S7688C12v3Ev
  virtual void  v4(); // _ZN7S7688C12v4Ev
  virtual void  v5(); // _ZN7S7688C12v5Ev
  virtual void  v6(); // _ZN7S7688C12v6Ev
  virtual void  v7(); // _ZN7S7688C12v7Ev
  ~S7688C1(); // tgen
  S7688C1(); // tgen
};
//SIG(1 S7688C1) C1{ BC2{ VBC3{ v8 v9 v10 v11} VBC4{ VBC3 VBC5{ VBC3 v12 v13 v14} VBC6{ VBC7{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC8{ BC3 vd v26} BC9{ VBC6 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC10{ vd m Fp[9]}} vd v36 v37 v38 v39 v40 v41 v42 Fi} BC11{ VBC4 BC3 BC12{ VBC8 VBC10 VBC6 VBC5 vd v43 v44} v45 v46 v47 v48 v49 v50 v51 Fi} VBC13{ VBC3 VBC5 BC8 BC6 v52 v53 v54 v55 Fi[2]} BC12 vd v56} BC5 BC14{ v57 v58 v59 v60 v61 v62 FL} BC11 VBC15{ BC16{ VBC7 VBC13 BC6 VBC10 BC12 vd v63 v64 v65 FD FL:0} BC6 vd v66 v67 v68 Fi FL} v1 v2 v3 v4 v5 v6 v7 Fs:8 Fi[8]}


void  S7688C1 ::v1(){vfunc_called(this, "_ZN7S7688C12v1Ev");}
void  S7688C1 ::v2(){vfunc_called(this, "_ZN7S7688C12v2Ev");}
void  S7688C1 ::v3(){vfunc_called(this, "_ZN7S7688C12v3Ev");}
void  S7688C1 ::v4(){vfunc_called(this, "_ZN7S7688C12v4Ev");}
void  S7688C1 ::v5(){vfunc_called(this, "_ZN7S7688C12v5Ev");}
void  S7688C1 ::v6(){vfunc_called(this, "_ZN7S7688C12v6Ev");}
void  S7688C1 ::v7(){vfunc_called(this, "_ZN7S7688C12v7Ev");}
S7688C1 ::~S7688C1(){ note_dtor("S7688C1", this);} // tgen
S7688C1 ::S7688C1(){ note_ctor("S7688C1", this);} // tgen

static void Test_S7688C1()
{
  extern Class_Descriptor cd_S7688C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,73)];
    init_test(&cd_S7688C1, buf);
    S7688C1 *dp, &lv = *(dp=new (buf) S7688C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,288), "sizeof(S7688C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7688C1)");
    /*is_ambiguous_... S7688C2::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C2*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C4::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C4*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C5 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C13::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C13*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C5 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C5*), ABISELECT(216,132), "S7688C1");
    check_base_class_offset(lv, (S7688C5*)(S7688C4*), ABISELECT(216,132), "S7688C1");
    check_base_class_offset(lv, (S7688C5*)(S7688C12*)(S7688C11*)(S7688C2*), ABISELECT(216,132), "S7688C1");
    check_base_class_offset(lv, (S7688C5*)(S7688C13*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C5*)(S7688C12*)(S7688C2*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C5*)(S7688C12*)(S7688C11*), ABISELECT(216,132), "S7688C1");
    check_base_class_offset(lv, (S7688C5*)(S7688C12*)(S7688C16*)(S7688C15*), ABISELECT(216,132), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*), ABISELECT(248,152), "S7688C1");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C13*), ABISELECT(248,152), "S7688C1");
    check_base_class_offset(lv, (S7688C7_nt*)(S7688C16*)(S7688C15*), ABISELECT(248,152), "S7688C1");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C16*)(S7688C15*), ABISELECT(248,152), "S7688C1");
    /*is_ambiguous_... S7688C15::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C7_nt*)(S7688C6*)(S7688C15*), ABISELECT(248,152), "S7688C1");
    check_base_class_offset(lv, (S7688C6*)(S7688C4*), ABISELECT(224,136), "S7688C1");
    check_base_class_offset(lv, (S7688C6*)(S7688C9*)(S7688C4*), ABISELECT(224,136), "S7688C1");
    check_base_class_offset(lv, (S7688C6*)(S7688C12*)(S7688C11*)(S7688C2*), ABISELECT(224,136), "S7688C1");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C6*)(S7688C12*)(S7688C2*), ABISELECT(224,136), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C6*)(S7688C12*)(S7688C11*), ABISELECT(224,136), "S7688C1");
    check_base_class_offset(lv, (S7688C6*)(S7688C12*)(S7688C16*)(S7688C15*), ABISELECT(224,136), "S7688C1");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C4*), ABISELECT(112,80), "S7688C1");
    check_base_class_offset(lv, (S7688C8*)(S7688C4*), ABISELECT(112,80), "S7688C1");
    check_base_class_offset(lv, (S7688C9*)(S7688C4*), ABISELECT(120,84), "S7688C1");
    check_base_class_offset(lv, (S7688C4*)(S7688C2*), ABISELECT(112,80), "S7688C1");
    check_base_class_offset(lv, (S7688C4*)(S7688C11*)(S7688C2*), ABISELECT(112,80), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C4*)(S7688C11*), ABISELECT(112,80), "S7688C1");
    /*is_ambiguous_... S7688C11::S7688C3_nt */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C11*)(S7688C2*), 0, "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C8 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*), ABISELECT(8,4), "S7688C1");
    check_base_class_offset(lv, (S7688C8*)(S7688C12*)(S7688C11*)(S7688C2*), ABISELECT(8,4), "S7688C1");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C8*)(S7688C12*)(S7688C2*), ABISELECT(8,4), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C8*)(S7688C12*)(S7688C11*), ABISELECT(8,4), "S7688C1");
    check_base_class_offset(lv, (S7688C8*)(S7688C12*)(S7688C16*)(S7688C15*), ABISELECT(8,4), "S7688C1");
    check_base_class_offset(lv, (S7688C10*)(S7688C12*)(S7688C11*)(S7688C2*), ABISELECT(264,160), "S7688C1");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C10*)(S7688C12*)(S7688C2*), ABISELECT(264,160), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C10*)(S7688C12*)(S7688C11*), ABISELECT(264,160), "S7688C1");
    check_base_class_offset(lv, (S7688C10*)(S7688C16*)(S7688C15*), ABISELECT(264,160), "S7688C1");
    check_base_class_offset(lv, (S7688C10*)(S7688C12*)(S7688C16*)(S7688C15*), ABISELECT(264,160), "S7688C1");
    check_base_class_offset(lv, (S7688C12*)(S7688C11*)(S7688C2*), ABISELECT(8,4), "S7688C1");
    check_base_class_offset(lv, (S7688C11*)(S7688C2*), 0, "S7688C1");
    check_base_class_offset(lv, (S7688C3_nt*)(S7688C8*)(S7688C13*), ABISELECT(344,200), "S7688C1");
    check_base_class_offset(lv, (S7688C8*)(S7688C13*), ABISELECT(344,200), "S7688C1");
    check_base_class_offset(lv, (S7688C6*)(S7688C13*), ABISELECT(352,204), "S7688C1");
    check_base_class_offset(lv, (S7688C13*)(S7688C2*), ABISELECT(344,200), "S7688C1");
    check_base_class_offset(lv, (S7688C13*)(S7688C16*)(S7688C15*), ABISELECT(344,200), "S7688C1");
    /*is_ambiguous_... S7688C2::S7688C12 */ AMB_check_base_class_offset(lv, (S7688C12*)(S7688C2*), ABISELECT(24,12), "S7688C1");
    check_base_class_offset(lv, (S7688C2*), 0, "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C5 */ AMB_check_base_class_offset(lv, (S7688C5*), ABISELECT(32,16), "S7688C1");
    check_base_class_offset(lv, (S7688C14*), ABISELECT(40,20), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C3_nt*)(S7688C11*), ABISELECT(56,32), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C12*)(S7688C11*), ABISELECT(64,36), "S7688C1");
    /*is_ambiguous_... S7688C1::S7688C11 */ AMB_check_base_class_offset(lv, (S7688C11*), ABISELECT(56,32), "S7688C1");
    /*is_ambiguous_... S7688C16::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C6*)(S7688C16*)(S7688C15*), ABISELECT(384,228), "S7688C1");
    check_base_class_offset(lv, (S7688C12*)(S7688C16*)(S7688C15*), ABISELECT(408,244), "S7688C1");
    check_base_class_offset(lv, (S7688C16*)(S7688C15*), ABISELECT(384,228), "S7688C1");
    /*is_ambiguous_... S7688C15::S7688C6 */ AMB_check_base_class_offset(lv, (S7688C6*)(S7688C15*), ABISELECT(432,260), "S7688C1");
    check_base_class_offset(lv, (S7688C15*), ABISELECT(384,228), "S7688C1");
    set_bf_and_test(lv, s7688c1f0, ABISELECT(76,44), 0, 8, 1, "S7688C1");
    set_bf_and_test(lv, s7688c1f0, ABISELECT(76,44), 0, 8, hide_sll(1LL<<7), "S7688C1");
    check_field_offset(lv, s7688c1f1, ABISELECT(80,48), "S7688C1.s7688c1f1");
    test_class_info(&lv, &cd_S7688C1);
    dp->~S7688C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7688C1(Test_S7688C1, "S7688C1", ABISELECT(464,288));

#else // __cplusplus

extern void _ZN7S7688C1C1Ev();
extern void _ZN7S7688C1D1Ev();
Name_Map name_map_S7688C1[] = {
  NSPAIR(_ZN7S7688C1C1Ev),
  NSPAIR(_ZN7S7688C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C7_nt;
extern VTBL_ENTRY _ZTI10S7688C7_nt[];
extern  VTBL_ENTRY _ZTV10S7688C7_nt[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C9;
extern VTBL_ENTRY _ZTI7S7688C9[];
extern  VTBL_ENTRY _ZTV7S7688C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C9[];
extern Class_Descriptor cd_S7688C4;
extern VTBL_ENTRY _ZTI7S7688C4[];
extern  VTBL_ENTRY _ZTV7S7688C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C4[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
extern Class_Descriptor cd_S7688C11;
extern VTBL_ENTRY _ZTI8S7688C11[];
extern  VTBL_ENTRY _ZTV8S7688C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C11[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C8;
extern VTBL_ENTRY _ZTI7S7688C8[];
extern  VTBL_ENTRY _ZTV7S7688C8[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C13;
extern VTBL_ENTRY _ZTI8S7688C13[];
extern  VTBL_ENTRY _ZTV8S7688C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C13[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
extern Class_Descriptor cd_S7688C2;
extern VTBL_ENTRY _ZTI7S7688C2[];
extern  VTBL_ENTRY _ZTV7S7688C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C2[];
extern Class_Descriptor cd_S7688C5;
extern VTBL_ENTRY _ZTI7S7688C5[];
extern  VTBL_ENTRY _ZTV7S7688C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C5[];
extern Class_Descriptor cd_S7688C14;
extern VTBL_ENTRY _ZTI8S7688C14[];
extern  VTBL_ENTRY _ZTV8S7688C14[];
extern Class_Descriptor cd_S7688C3_nt;
extern VTBL_ENTRY _ZTI10S7688C3_nt[];
extern  VTBL_ENTRY _ZTV10S7688C3_nt[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
extern Class_Descriptor cd_S7688C11;
extern VTBL_ENTRY _ZTI8S7688C11[];
extern  VTBL_ENTRY _ZTV8S7688C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C11[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C12;
extern VTBL_ENTRY _ZTI8S7688C12[];
extern  VTBL_ENTRY _ZTV8S7688C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C12[];
extern Class_Descriptor cd_S7688C16;
extern VTBL_ENTRY _ZTI8S7688C16[];
extern  VTBL_ENTRY _ZTV8S7688C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C16[];
extern Class_Descriptor cd_S7688C6;
extern VTBL_ENTRY _ZTI7S7688C6[];
extern  VTBL_ENTRY _ZTV7S7688C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C6[];
extern Class_Descriptor cd_S7688C15;
extern VTBL_ENTRY _ZTI8S7688C15[];
extern  VTBL_ENTRY _ZTV8S7688C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7688C15[];
static Base_Class bases_S7688C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C3_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7688C5,    ABISELECT(216,132), //bcp->offset
    202, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7688C7_nt,    ABISELECT(248,152), //bcp->offset
    239, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7688C6,    ABISELECT(224,136), //bcp->offset
    219, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7688C3_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7688C9,    ABISELECT(120,84), //bcp->offset
    187, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7688C4,    ABISELECT(112,80), //bcp->offset
    145, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7688C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7688C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(264,160), //bcp->offset
    252, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C12,    ABISELECT(8,4), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7688C11,    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
    23, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7688C3_nt,    ABISELECT(344,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7688C8,    ABISELECT(344,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7688C6,    ABISELECT(352,204), //bcp->offset
    290, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7688C13,    ABISELECT(344,200), //bcp->offset
    257, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7688C12,    ABISELECT(24,12), //bcp->offset
    55, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7688C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C5,    ABISELECT(32,16), //bcp->offset
    78, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C14,    ABISELECT(40,20), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C3_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7688C12,    ABISELECT(64,36), //bcp->offset
    122, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7688C11,    ABISELECT(56,32), //bcp->offset
    100, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7688C6,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7688C12,    ABISELECT(408,244), //bcp->offset
    342, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7688C16,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7688C6,    ABISELECT(432,260), //bcp->offset
    365, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7688C15,    ABISELECT(384,228), //bcp->offset
    302, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7688C1[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN7S7688C1D1Ev();
extern void _ZN7S7688C1D0Ev();
extern void _ZN7S7688C23v56Ev();
extern void _ZN7S7688C12v1Ev();
extern void _ZN7S7688C12v2Ev();
extern void _ZN7S7688C12v3Ev();
extern void _ZN7S7688C12v4Ev();
extern void _ZN7S7688C12v5Ev();
extern void _ZN7S7688C12v6Ev();
extern void _ZN7S7688C12v7Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C1D1Ev,_ZThn4_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S7688C1D0Ev,_ZThn4_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C1D1Ev,_ZThn12_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C1D0Ev,_ZThn12_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void _ZN8S7688C143v57Ev();
extern void _ZN8S7688C143v58Ev();
extern void _ZN8S7688C143v59Ev();
extern void _ZN8S7688C143v60Ev();
extern void _ZN8S7688C143v61Ev();
extern void _ZN8S7688C143v62Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void ABISELECT(_ZThn56_N7S7688C1D1Ev,_ZThn32_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7688C1D0Ev,_ZThn32_N7S7688C1D0Ev)();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7688C1D1Ev,_ZThn36_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7688C1D0Ev,_ZThn36_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C1D1Ev,_ZTv0_n44_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C1D1Ev,_ZThn80_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C1D0Ev,_ZTv0_n44_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C1D0Ev,_ZThn80_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
extern void ABISELECT(_ZTvn8_n88_N7S7688C1D1Ev,_ZTvn4_n44_N7S7688C1D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N7S7688C1D0Ev,_ZTvn4_n44_N7S7688C1D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C1D1Ev,_ZTv0_n44_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S7688C1D1Ev,_ZThn136_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C1D0Ev,_ZTv0_n44_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S7688C1D0Ev,_ZThn136_N7S7688C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C1D1Ev,_ZTv0_n12_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7688C1D1Ev,_ZThn152_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C1D0Ev,_ZTv0_n12_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7688C1D0Ev,_ZThn152_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S7688C1D1Ev,_ZTv0_n12_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn264_N7S7688C1D1Ev,_ZThn160_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C1D0Ev,_ZTv0_n12_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn264_N7S7688C1D0Ev,_ZThn160_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7688C1D1Ev,_ZTv0_n40_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S7688C1D1Ev,_ZThn200_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7688C1D0Ev,_ZTv0_n40_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S7688C1D0Ev,_ZThn200_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N7S7688C1D1Ev,_ZTvn4_n40_N7S7688C1D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N7S7688C1D0Ev,_ZTvn4_n40_N7S7688C1D0Ev)();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n136_N7S7688C1D1Ev,_ZTv0_n68_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S7688C1D1Ev,_ZThn228_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7688C1D0Ev,_ZTv0_n68_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S7688C1D0Ev,_ZThn228_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN8S7688C163v63Ev();
extern void _ZN8S7688C163v64Ev();
extern void _ZN8S7688C163v65Ev();
extern void _ZN8S7688C153v66Ev();
extern void _ZN8S7688C153v67Ev();
extern void _ZN8S7688C153v68Ev();
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S7688C1D1Ev,_ZThn244_N7S7688C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S7688C1D0Ev,_ZThn244_N7S7688C1D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn48_n136_N7S7688C1D1Ev,_ZTvn32_n68_N7S7688C1D1Ev)();
extern void ABISELECT(_ZTvn48_n136_N7S7688C1D0Ev,_ZTvn32_n68_N7S7688C1D0Ev)();
static  VTBL_ENTRY vtc_S7688C1[] = {
  ABISELECT(384,228),
  ABISELECT(344,200),
  ABISELECT(264,160),
  ABISELECT(8,4),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(112,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN7S7688C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C23v56Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7688C12v7Ev,
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(240,148),
  ABISELECT(216,132),
  ABISELECT(256,156),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(192,120),
  ABISELECT(192,120),
  ABISELECT(224,140),
  ABISELECT(200,124),
  ABISELECT(240,148),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN8S7688C143v57Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v58Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v59Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v60Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v61Ev,
  (VTBL_ENTRY)&_ZN8S7688C143v62Ev,
  ABISELECT(208,128),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(168,104),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(56,48),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7688C1D1Ev,_ZThn32_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7688C1D0Ev,_ZThn32_N7S7688C1D0Ev),
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(200,124),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-112,-80),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C1D1Ev,_ZTv0_n44_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C1D0Ev,_ZTv0_n44_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7688C1D1Ev,_ZTvn4_n44_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7688C1D0Ev,_ZTvn4_n44_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
  ABISELECT(-224,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C1D1Ev,_ZTv0_n44_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C1D0Ev,_ZTv0_n44_N7S7688C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-248,-152),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C1D1Ev,_ZTv0_n12_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C1D0Ev,_ZTv0_n12_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
  ABISELECT(-264,-160),
  ABISELECT(-264,-160),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C1D1Ev,_ZTv0_n12_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C1D0Ev,_ZTv0_n12_N7S7688C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-200),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7688C1D1Ev,_ZTv0_n40_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7688C1D0Ev,_ZTv0_n40_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
  ABISELECT(-104,-52),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7688C1D1Ev,_ZTvn4_n40_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7688C1D0Ev,_ZTvn4_n40_N7S7688C1D0Ev),
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  ABISELECT(-384,-228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(-376,-224),
  ABISELECT(-120,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-40,-28),
  ABISELECT(-136,-76),
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7688C1D1Ev,_ZTv0_n68_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7688C1D0Ev,_ZTv0_n68_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7688C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v65Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v66Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v67Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v68Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-408,-244),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-408,-244),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
  ABISELECT(-184,-108),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI7S7688C1[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n136_N7S7688C1D1Ev,_ZTvn32_n68_N7S7688C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n136_N7S7688C1D0Ev,_ZTvn32_n68_N7S7688C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7688C1[];
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN7S7688C2D1Ev();
extern void _ZN7S7688C2D0Ev();
extern void _ZN7S7688C23v56Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C2__7S7688C1[] = {
  ABISELECT(344,200),
  ABISELECT(264,160),
  ABISELECT(8,4),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(112,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN7S7688C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C23v56Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN8S7688C11D1Ev();
extern void _ZN8S7688C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(264,160),
  ABISELECT(8,4),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(112,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D0Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(240,148),
  ABISELECT(216,132),
  ABISELECT(256,156),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn256_N8S7688C12D1Ev,_ZThn156_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn256_N8S7688C12D0Ev,_ZThn156_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C128S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn216_N8S7688C12D1Ev,_ZThn132_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn216_N8S7688C12D0Ev,_ZThn132_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C128S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(-216,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S7688C12D1Ev,_ZThn148_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S7688C12D0Ev,_ZThn148_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C128S7688C117S7688C2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C128S7688C117S7688C2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn112_N8S7688C11D1Ev,_ZThn80_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn112_N8S7688C11D0Ev,_ZThn80_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__8S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-112,-80),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C117S7688C2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn224_N8S7688C11D1Ev,_ZThn136_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn224_N8S7688C11D0Ev,_ZThn136_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(-224,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn248_N8S7688C11D1Ev,_ZThn152_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn248_N8S7688C11D0Ev,_ZThn152_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C117S7688C2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-248,-152),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__8S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(240,148),
  ABISELECT(216,132),
  ABISELECT(256,156),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7688C11D1Ev,_ZThn160_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7688C11D0Ev,_ZThn160_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C117S7688C2__7S7688C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-264,-160),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C127S7688C2__A1__7S7688C1[] = {
  ABISELECT(192,120),
  ABISELECT(192,120),
  ABISELECT(224,140),
  ABISELECT(200,124),
  ABISELECT(240,148),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__8S7688C127S7688C2__A1__7S7688C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S7688C12D1Ev,_ZThn148_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S7688C12D0Ev,_ZThn148_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C127S7688C2__A1__7S7688C1[] = {
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S7688C12D1Ev,_ZThn124_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S7688C12D0Ev,_ZThn124_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C127S7688C2__A1__7S7688C1[] = {
  ABISELECT(-200,-124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S7688C12D1Ev,_ZThn140_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S7688C12D0Ev,_ZThn140_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C127S7688C2__A1__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C127S7688C2__A1__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C2D1Ev,_ZThn80_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C2D0Ev,_ZThn80_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__7S7688C2__7S7688C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-112,-80),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S7688C2D1Ev,_ZThn136_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn224_N7S7688C2D0Ev,_ZThn136_N7S7688C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C2__7S7688C1[] = {
  ABISELECT(-224,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S7688C2D1Ev,_ZThn152_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S7688C2D0Ev,_ZThn152_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-248,-152),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N7S7688C2D1Ev,_ZTvn4_n44_N7S7688C2D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N7S7688C2D0Ev,_ZTvn4_n44_N7S7688C2D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__7S7688C2__7S7688C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7688C2D1Ev,_ZTvn4_n44_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7688C2D0Ev,_ZTvn4_n44_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C2D1Ev,_ZThn4_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7688C2D0Ev,_ZThn4_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C11__7S7688C2__7S7688C1[] = {
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(240,148),
  ABISELECT(216,132),
  ABISELECT(256,156),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7688C2D1Ev,_ZThn160_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7688C2D0Ev,_ZThn160_N7S7688C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__7S7688C2__7S7688C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-264,-160),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7688C2D1Ev,_ZTv0_n40_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn344_N7S7688C2D1Ev,_ZThn200_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7688C2D0Ev,_ZTv0_n40_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn344_N7S7688C2D0Ev,_ZThn200_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__7S7688C2__7S7688C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-200),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7688C2D1Ev,_ZTv0_n40_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7688C2D0Ev,_ZTv0_n40_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N7S7688C2D1Ev,_ZTvn4_n40_N7S7688C2D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N7S7688C2D0Ev,_ZTvn4_n40_N7S7688C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__A1__7S7688C2__7S7688C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7688C2D1Ev,_ZTvn4_n40_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7688C2D0Ev,_ZTvn4_n40_N7S7688C2D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C2D1Ev,_ZThn12_N7S7688C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C2D0Ev,_ZThn12_N7S7688C2D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__A1__7S7688C2__7S7688C1[] = {
  ABISELECT(192,120),
  ABISELECT(192,120),
  ABISELECT(224,140),
  ABISELECT(200,124),
  ABISELECT(240,148),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7688C2[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__A__7S7688C1[] = {
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(184,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C3_nt__7S7688C5__A__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C113v45Ev();
extern void _ZN8S7688C113v46Ev();
extern void _ZN8S7688C113v47Ev();
extern void _ZN8S7688C113v48Ev();
extern void _ZN8S7688C113v49Ev();
extern void _ZN8S7688C113v50Ev();
extern void _ZN8S7688C113v51Ev();
extern void _ZN8S7688C11D1Ev();
extern void _ZN8S7688C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C11__A1__7S7688C1[] = {
  ABISELECT(208,128),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(168,104),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7688C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C11D0Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C11__A2__7S7688C1[] = {
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(200,124),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__8S7688C128S7688C11__A2__7S7688C1[] = {
  0,
  ABISELECT(56,32),
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S7688C12D1Ev,_ZThn124_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S7688C12D0Ev,_ZThn124_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C128S7688C11__A2__7S7688C1[] = {
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7688C12D1Ev,_ZThn100_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7688C12D0Ev,_ZThn100_N8S7688C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C128S7688C11__A2__7S7688C1[] = {
  ABISELECT(-160,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZThn184_N8S7688C12D1Ev,_ZThn116_N8S7688C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void ABISELECT(_ZThn184_N8S7688C12D0Ev,_ZThn116_N8S7688C12D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C128S7688C11__A2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C128S7688C11__A2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7688C11D1Ev,_ZThn48_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7688C11D0Ev,_ZThn48_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__8S7688C11__A1__7S7688C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-56,-48),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C11__A1__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn168_N8S7688C11D1Ev,_ZThn104_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn168_N8S7688C11D0Ev,_ZThn104_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C11__A1__7S7688C1[] = {
  ABISELECT(-168,-104),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn192_N8S7688C11D1Ev,_ZThn120_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn192_N8S7688C11D0Ev,_ZThn120_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C11__A1__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__8S7688C11__A1__7S7688C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D1Ev,_ZTvn4_n44_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7688C11D0Ev,_ZTvn4_n44_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C11__A1__7S7688C1[] = {
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(200,124),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__A1__8S7688C11__A1__7S7688C1[] = {
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S7688C11D1Ev,_ZThn128_N8S7688C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S7688C11D0Ev,_ZThn128_N8S7688C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C11__A1__7S7688C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7688C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C4D1Ev();
extern void _ZN7S7688C4D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN7S7688C43v36Ev();
extern void _ZN7S7688C43v37Ev();
extern void _ZN7S7688C43v38Ev();
extern void _ZN7S7688C43v39Ev();
extern void _ZN7S7688C43v40Ev();
extern void _ZN7S7688C43v41Ev();
extern void _ZN7S7688C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C4__7S7688C1[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7688C43v42Ev,
};
extern void _ZN7S7688C9D1Ev();
extern void _ZN7S7688C9D0Ev();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C97S7688C4__7S7688C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C97S7688C4__7S7688C1[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C97S7688C4__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7688C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C4__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C4__7S7688C1[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C4__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev)();
extern void _ZN7S7688C93v27Ev();
extern void _ZN7S7688C93v28Ev();
extern void _ZN7S7688C93v29Ev();
extern void _ZN7S7688C93v30Ev();
extern void _ZN7S7688C93v31Ev();
extern void _ZN7S7688C93v32Ev();
extern void _ZN7S7688C93v33Ev();
extern void _ZN7S7688C93v34Ev();
extern void _ZN7S7688C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C9__7S7688C4__7S7688C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7688C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D1Ev,_ZThn4_N7S7688C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7688C4D0Ev,_ZThn4_N7S7688C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7688C93v35Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C5[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C6__7S7688C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev)() __attribute__((weak));
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C6__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN8S7688C13D1Ev();
extern void _ZN8S7688C13D0Ev();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__7S7688C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__A1__7S7688C1[] = {
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C13__A1__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(104,52),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C13__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C13__7S7688C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D1Ev,_ZThn4_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7688C13D0Ev,_ZThn4_N8S7688C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C13__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7688C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D1Ev,_ZTv0_n12_N8S7688C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C13D0Ev,_ZTv0_n12_N8S7688C13D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN8S7688C15D1Ev();
extern void _ZN8S7688C15D0Ev();
extern void _ZN8S7688C163v63Ev();
extern void _ZN8S7688C163v64Ev();
extern void _ZN8S7688C163v65Ev();
extern void _ZN8S7688C153v66Ev();
extern void _ZN8S7688C153v67Ev();
extern void _ZN8S7688C153v68Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C15__7S7688C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-376,-224),
  ABISELECT(-120,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-40,-28),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7688C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v65Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v66Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v67Ev,
  (VTBL_ENTRY)&_ZN8S7688C153v68Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN8S7688C16D1Ev();
extern void _ZN8S7688C16D0Ev();
extern void _ZN8S7688C163v63Ev();
extern void _ZN8S7688C163v64Ev();
extern void _ZN8S7688C163v65Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C168S7688C15__7S7688C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-376,-224),
  ABISELECT(-120,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-40,-28),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7688C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7688C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7688C163v65Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C168S7688C15__A2__7S7688C1[] = {
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C168S7688C15__A2__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void _ZN8S7688C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN8S7688C12D0Ev() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C168S7688C15__A3__7S7688C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  0,
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__8S7688C128S7688C168S7688C15__A3__7S7688C1[] = {
  0,
  ABISELECT(400,240),
  0,
  0,
  0,
  0,
  ABISELECT(400,240),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C128S7688C168S7688C15__A3__7S7688C1[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__8S7688C128S7688C168S7688C15__A3__7S7688C1[] = {
  ABISELECT(184,108),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(184,108),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C128S7688C168S7688C15__A3__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C128S7688C168S7688C15__A3__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S7688C12[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C168S7688C15__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev)();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__8S7688C168S7688C15__7S7688C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,28),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C16D1Ev,_ZTv0_n40_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C16D0Ev,_ZTv0_n40_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C168S7688C15__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7688C16D1Ev,_ZTvn4_n40_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7688C16D0Ev,_ZTvn4_n40_N8S7688C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__8S7688C168S7688C15__7S7688C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C16D1Ev,_ZTvn4_n40_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C16D0Ev,_ZTvn4_n40_N8S7688C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C168S7688C15__7S7688C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D1Ev,_ZTv0_n12_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C16D0Ev,_ZTv0_n12_N8S7688C16D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C16D1Ev,_ZThn16_N8S7688C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C16D0Ev,_ZThn16_N8S7688C16D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C12__8S7688C168S7688C15__7S7688C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-24,-16),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__A1__8S7688C168S7688C15__7S7688C1[] = {
  0,
  ABISELECT(376,224),
  0,
  0,
  0,
  0,
  ABISELECT(376,224),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A2__8S7688C168S7688C15__7S7688C1[] = {
  ABISELECT(160,92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7688C16[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C16D1Ev,_ZTv0_n44_N8S7688C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C16D0Ev,_ZTv0_n44_N8S7688C16D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void _ZN7S7688C6D1Ev();
extern void _ZN7S7688C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C15__A3__7S7688C1[] = {
  ABISELECT(-184,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7688C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__7S7688C68S7688C15__A3__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(184,108),
  ABISELECT(184,108),
  (VTBL_ENTRY)&(_ZTI7S7688C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev)();
extern void _ZN10S7688C7_nt3v15Ev();
extern void _ZN10S7688C7_nt3v16Ev();
extern void _ZN10S7688C7_nt3v17Ev();
extern void _ZN10S7688C7_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7688C7_nt__8S7688C15__7S7688C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7688C7_nt3v18Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7688C15D1Ev,_ZTv0_n40_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S7688C15D0Ev,_ZTv0_n40_N8S7688C15D0Ev)();
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C133v52Ev();
extern void _ZN8S7688C133v53Ev();
extern void _ZN8S7688C133v54Ev();
extern void _ZN8S7688C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C13__8S7688C15__7S7688C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,28),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C15D1Ev,_ZTv0_n40_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7688C15D0Ev,_ZTv0_n40_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7688C133v55Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void _ZN7S7688C53v12Ev();
extern void _ZN7S7688C53v13Ev();
extern void _ZN7S7688C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C5__8S7688C15__7S7688C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7688C53v14Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7688C15D1Ev,_ZTvn4_n40_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7688C15D0Ev,_ZTvn4_n40_N8S7688C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C68S7688C13__8S7688C15__7S7688C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C15D1Ev,_ZTvn4_n40_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7688C15D0Ev,_ZTvn4_n40_N8S7688C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7688C15__7S7688C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D1Ev,_ZTv0_n12_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7688C15D0Ev,_ZTv0_n12_N8S7688C15D0Ev),
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7688C15D1Ev,_ZThn16_N8S7688C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7688C15D0Ev,_ZThn16_N8S7688C15D0Ev)() __attribute__((weak));
extern void _ZN7S7688C83v26Ev();
extern void _ZN8S7688C123v43Ev();
extern void _ZN8S7688C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7688C128S7688C16__8S7688C15__7S7688C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-24,-16),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-400,-240),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7688C123v44Ev,
};
extern void _ZN10S7688C3_nt2v8Ev();
extern void _ZN10S7688C3_nt2v9Ev();
extern void _ZN10S7688C3_nt3v10Ev();
extern void _ZN10S7688C3_nt3v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev)();
extern void _ZN7S7688C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7688C8__A1__8S7688C15__7S7688C1[] = {
  0,
  ABISELECT(376,224),
  0,
  0,
  0,
  0,
  ABISELECT(376,224),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7688C3_nt3v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7688C83v26Ev,
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7688C15D1Ev,_ZTv0_n44_N8S7688C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7688C15D0Ev,_ZTv0_n44_N8S7688C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A2__8S7688C15__7S7688C1[] = {
  ABISELECT(160,92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C15D1Ev,_ZTv0_n44_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7688C15D0Ev,_ZTv0_n44_N8S7688C15D0Ev),
};
extern void _ZN7S7688C63v19Ev();
extern void _ZN7S7688C63v20Ev();
extern void _ZN7S7688C63v21Ev();
extern void _ZN7S7688C63v22Ev();
extern void _ZN7S7688C63v23Ev();
extern void _ZN7S7688C63v24Ev();
extern void _ZN7S7688C63v25Ev();
extern void ABISELECT(_ZThn48_N8S7688C15D1Ev,_ZThn32_N8S7688C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S7688C15D0Ev,_ZThn32_N8S7688C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7688C6__A__8S7688C15__7S7688C1[] = {
  ABISELECT(-184,-108),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7688C15[0]),
  (VTBL_ENTRY)&_ZN7S7688C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7688C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7688C15D1Ev,_ZThn32_N8S7688C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7688C15D0Ev,_ZThn32_N8S7688C15D0Ev),
};
static  VTT_ENTRY vtt_S7688C1[] = {
  {&(_ZTV7S7688C1[11]),  11,377},
  {&(_tg__ZTV7S7688C2__7S7688C1[10]),  10,24},
  {&(_tg__ZTV8S7688C117S7688C2__7S7688C1[9]),  9,22},
  {&(_tg__ZTV8S7688C128S7688C117S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV8S7688C128S7688C117S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C128S7688C117S7688C2__7S7688C1[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C128S7688C117S7688C2__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C128S7688C117S7688C2__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C117S7688C2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C117S7688C2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C4__8S7688C117S7688C2__7S7688C1[28]),  28,42},
  {&(_tg__ZTV7S7688C5__8S7688C117S7688C2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C117S7688C2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C117S7688C2__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C117S7688C2__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C97S7688C4__8S7688C117S7688C2__7S7688C1[4]),  4,15},
  {&(_tg__ZTV8S7688C12__8S7688C117S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV8S7688C12__8S7688C117S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7688C117S7688C2__7S7688C1[3]),  3,5},
  {&(_tg__ZTV8S7688C127S7688C2__A1__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C8__8S7688C127S7688C2__A1__7S7688C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7688C127S7688C2__A1__7S7688C1[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C127S7688C2__A1__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C127S7688C2__A1__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C127S7688C2__A1__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C127S7688C2__A1__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__7S7688C2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C4__7S7688C2__7S7688C1[28]),  28,42},
  {&(_tg__ZTV7S7688C5__7S7688C2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C6__7S7688C2__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C2__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C97S7688C4__7S7688C2__7S7688C1[4]),  4,15},
  {&(_tg__ZTV8S7688C128S7688C11__7S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV8S7688C128S7688C11__7S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__7S7688C2__7S7688C1[3]),  3,5},
  {&(_tg__ZTV8S7688C13__7S7688C2__7S7688C1[22]),  22,33},
  {&(_tg__ZTV7S7688C68S7688C13__A1__7S7688C2__7S7688C1[3]),  3,12},
  {&(_tg__ZTV8S7688C12__A1__7S7688C2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C5__A__7S7688C1[7]),  7,14},
  {&(_tg__ZTV10S7688C3_nt__7S7688C5__A__7S7688C1[6]),  6,10},
  {&(_tg__ZTV8S7688C11__A1__7S7688C1[9]),  9,22},
  {&(_tg__ZTV8S7688C128S7688C11__A2__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C8__8S7688C128S7688C11__A2__7S7688C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7688C128S7688C11__A2__7S7688C1[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C128S7688C11__A2__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C128S7688C11__A2__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C11__A2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C11__A2__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C4__8S7688C11__A1__7S7688C1[28]),  28,42},
  {&(_tg__ZTV7S7688C5__8S7688C11__A1__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C11__A1__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C11__A1__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C11__A1__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C97S7688C4__8S7688C11__A1__7S7688C1[4]),  4,15},
  {&(_tg__ZTV8S7688C12__8S7688C11__A1__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C8__A1__8S7688C11__A1__7S7688C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7688C11__A1__7S7688C1[3]),  3,5},
  {&(_ZTV7S7688C1[212]),  212,377},
  {&(_ZTV7S7688C1[173]),  173,377},
  {&(_ZTV7S7688C1[212]),  212,377},
  {&(_ZTV7S7688C1[230]),  230,377},
  {&(_ZTV7S7688C1[246]),  246,377},
  {&(_ZTV7S7688C1[191]),  191,377},
  {&(_ZTV7S7688C1[46]),  46,377},
  {&(_ZTV7S7688C1[46]),  46,377},
  {&(_ZTV7S7688C1[255]),  255,377},
  {&(_ZTV7S7688C1[279]),  279,377},
  {&(_ZTV7S7688C1[293]),  293,377},
  {&(_ZTV7S7688C1[69]),  69,377},
  {&(_ZTV7S7688C1[85]),  85,377},
  {&(_ZTV7S7688C1[109]),  109,377},
  {&(_ZTV7S7688C1[136]),  136,377},
  {&(_ZTV7S7688C1[327]),  327,377},
  {&(_ZTV7S7688C1[356]),  356,377},
  {&(_ZTV7S7688C1[368]),  368,377},
  {&(_tg__ZTV7S7688C4__7S7688C1[6]),  6,20},
  {&(_tg__ZTV7S7688C97S7688C4__7S7688C1[4]),  4,15},
  {&(_tg__ZTV7S7688C6__7S7688C97S7688C4__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C97S7688C4__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C5__7S7688C4__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__7S7688C4__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C6__7S7688C4__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__7S7688C4__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C9__7S7688C4__7S7688C1[4]),  4,15},
  {&(_tg__ZTV7S7688C5__7S7688C1[7]),  7,14},
  {&(_tg__ZTV7S7688C5__7S7688C1[7]),  7,14},
  {&(_tg__ZTV7S7688C6__7S7688C1[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C6__7S7688C1[7]),  7,13},
  {&(_tg__ZTV8S7688C13__7S7688C1[5]),  5,16},
  {&(_tg__ZTV7S7688C68S7688C13__A1__7S7688C1[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C13__A1__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C13__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C13__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C6__8S7688C13__7S7688C1[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__8S7688C13__7S7688C1[7]),  7,13},
  {&(_tg__ZTV8S7688C15__7S7688C1[9]),  9,24},
  {&(_tg__ZTV8S7688C168S7688C15__7S7688C1[9]),  9,21},
  {&(_tg__ZTV7S7688C68S7688C168S7688C15__A2__7S7688C1[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C168S7688C15__A2__7S7688C1[7]),  7,13},
  {&(_tg__ZTV8S7688C128S7688C168S7688C15__A3__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C8__8S7688C128S7688C168S7688C15__A3__7S7688C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7688C128S7688C168S7688C15__A3__7S7688C1[3]),  3,5},
  {&(_tg__ZTV7S7688C6__8S7688C128S7688C168S7688C15__A3__7S7688C1[11]),  11,20},
  {&(_tg__ZTV10S7688C7_nt__8S7688C128S7688C168S7688C15__A3__7S7688C1[7]),  7,13},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C168S7688C15__A3__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C128S7688C168S7688C15__A3__7S7688C1[10]),  10,17},
  {&(_tg__ZTV10S7688C7_nt__8S7688C168S7688C15__7S7688C1[7]),  7,13},
  {&(_tg__ZTV8S7688C13__8S7688C168S7688C15__7S7688C1[22]),  22,33},
  {&(_tg__ZTV7S7688C5__8S7688C168S7688C15__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C168S7688C15__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C68S7688C13__8S7688C168S7688C15__7S7688C1[3]),  3,12},
  {&(_tg__ZTV8S7688C10__8S7688C168S7688C15__7S7688C1[3]),  3,5},
  {&(_tg__ZTV8S7688C12__8S7688C168S7688C15__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C8__A1__8S7688C168S7688C15__7S7688C1[8]),  8,15},
  {&(_tg__ZTV7S7688C6__A2__8S7688C168S7688C15__7S7688C1[11]),  11,20},
  {&(_tg__ZTV7S7688C68S7688C15__A3__7S7688C1[3]),  3,12},
  {&(_tg__ZTV10S7688C7_nt__7S7688C68S7688C15__A3__7S7688C1[7]),  7,13},
  {&(_tg__ZTV10S7688C7_nt__8S7688C15__7S7688C1[7]),  7,13},
  {&(_tg__ZTV8S7688C13__8S7688C15__7S7688C1[22]),  22,33},
  {&(_tg__ZTV7S7688C5__8S7688C15__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C5__8S7688C15__7S7688C1[10]),  10,17},
  {&(_tg__ZTV7S7688C68S7688C13__8S7688C15__7S7688C1[3]),  3,12},
  {&(_tg__ZTV8S7688C10__8S7688C15__7S7688C1[3]),  3,5},
  {&(_tg__ZTV8S7688C128S7688C16__8S7688C15__7S7688C1[14]),  14,23},
  {&(_tg__ZTV7S7688C8__A1__8S7688C15__7S7688C1[8]),  8,15},
  {&(_tg__ZTV7S7688C6__A2__8S7688C15__7S7688C1[11]),  11,20},
  {&(_tg__ZTV7S7688C6__A__8S7688C15__7S7688C1[3]),  3,12},
};
extern VTBL_ENTRY _ZTI7S7688C1[];
extern  VTBL_ENTRY _ZTV7S7688C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7688C1[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C15D0Ev,_ZTv0_n28_N8S7688C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C15D0Ev,_ZThn16_N8S7688C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C15D1Ev,_ZTv0_n28_N8S7688C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C15D1Ev,_ZThn16_N8S7688C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C16D0Ev,_ZTv0_n28_N8S7688C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C16D0Ev,_ZThn16_N8S7688C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C16D1Ev,_ZTv0_n28_N8S7688C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7688C16D1Ev,_ZThn16_N8S7688C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D0Ev,_ZTv0_n12_N7S7688C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D0Ev,_ZThn16_N7S7688C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C6D1Ev,_ZTv0_n12_N7S7688C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C6D1Ev,_ZThn16_N7S7688C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D0Ev,_ZTv0_n12_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D0Ev,_ZThn72_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C4D1Ev,_ZTv0_n12_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7688C4D1Ev,_ZThn72_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D0Ev,_ZTv0_n44_N7S7688C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D0Ev,_ZThn56_N7S7688C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C4D1Ev,_ZTv0_n44_N7S7688C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C4D1Ev,_ZThn56_N7S7688C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D0Ev,_ZTv0_n12_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D0Ev,_ZThn68_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C9D1Ev,_ZTv0_n12_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7688C9D1Ev,_ZThn68_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D0Ev,_ZTv0_n44_N7S7688C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D0Ev,_ZThn52_N7S7688C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C9D1Ev,_ZTv0_n44_N7S7688C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7688C9D1Ev,_ZThn52_N7S7688C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7688C2D0Ev,_ZTv0_n40_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7688C2D0Ev,_ZThn200_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7688C2D1Ev,_ZTv0_n40_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7688C2D1Ev,_ZThn200_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7688C2D0Ev,_ZTv0_n28_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C2D0Ev,_ZThn12_N7S7688C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7688C2D0Ev,_ZThn4_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7688C2D1Ev,_ZTv0_n28_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C2D1Ev,_ZThn12_N7S7688C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7688C2D1Ev,_ZThn4_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C2D0Ev,_ZTv0_n12_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7688C2D0Ev,_ZThn160_N7S7688C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7688C2D0Ev,_ZThn152_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C2D1Ev,_ZTv0_n12_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7688C2D1Ev,_ZThn160_N7S7688C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7688C2D1Ev,_ZThn152_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C2D0Ev,_ZTv0_n44_N7S7688C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7688C2D0Ev,_ZThn136_N7S7688C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C2D0Ev,_ZThn80_N7S7688C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C2D1Ev,_ZTv0_n44_N7S7688C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7688C2D1Ev,_ZThn136_N7S7688C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C2D1Ev,_ZThn80_N7S7688C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C11D0Ev,_ZTv0_n28_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D0Ev,_ZThn4_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C11D1Ev,_ZTv0_n28_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7688C11D1Ev,_ZThn4_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C11D0Ev,_ZTv0_n12_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7688C11D0Ev,_ZThn128_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7688C11D0Ev,_ZThn120_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7688C11D0Ev,_ZThn160_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7688C11D0Ev,_ZThn152_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C11D1Ev,_ZTv0_n12_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7688C11D1Ev,_ZThn128_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7688C11D1Ev,_ZThn120_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7688C11D1Ev,_ZThn160_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7688C11D1Ev,_ZThn152_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C11D0Ev,_ZTv0_n44_N8S7688C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C11D0Ev,_ZThn104_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7688C11D0Ev,_ZThn48_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C11D0Ev,_ZThn136_N8S7688C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7688C11D0Ev,_ZThn80_N8S7688C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C11D1Ev,_ZTv0_n44_N8S7688C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7688C11D1Ev,_ZThn104_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7688C11D1Ev,_ZThn48_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C11D1Ev,_ZThn136_N8S7688C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7688C11D1Ev,_ZThn80_N8S7688C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D0Ev,_ZTv0_n44_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C12D0Ev,_ZThn100_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7688C12D0Ev,_ZThn124_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7688C12D0Ev,_ZThn132_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7688C12D1Ev,_ZTv0_n44_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7688C12D1Ev,_ZThn100_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7688C12D1Ev,_ZThn124_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7688C12D1Ev,_ZThn132_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D0Ev,_ZTv0_n12_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7688C12D0Ev,_ZThn116_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7688C12D0Ev,_ZThn124_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C12D0Ev,_ZThn140_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7688C12D0Ev,_ZThn148_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7688C12D0Ev,_ZThn148_N8S7688C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7688C12D0Ev,_ZThn156_N8S7688C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7688C12D1Ev,_ZTv0_n12_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7688C12D1Ev,_ZThn116_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7688C12D1Ev,_ZThn124_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7688C12D1Ev,_ZThn140_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7688C12D1Ev,_ZThn148_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7688C12D1Ev,_ZThn148_N8S7688C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7688C12D1Ev,_ZThn156_N8S7688C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D0Ev,_ZTv0_n28_N8S7688C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  (VTBL_ENTRY)_ZN8S7688C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7688C12D1Ev,_ZTv0_n28_N8S7688C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  (VTBL_ENTRY)_ZN8S7688C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7688C1D0Ev,_ZTv0_n68_N7S7688C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7688C1D0Ev,_ZThn228_N7S7688C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7688C1D1Ev,_ZTv0_n68_N7S7688C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7688C1D1Ev,_ZThn228_N7S7688C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7688C1D0Ev,_ZTv0_n40_N7S7688C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7688C1D0Ev,_ZThn200_N7S7688C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7688C1D1Ev,_ZTv0_n40_N7S7688C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7688C1D1Ev,_ZThn200_N7S7688C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C1D0Ev,_ZTv0_n12_N7S7688C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7688C1D0Ev,_ZThn160_N7S7688C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7688C1D0Ev,_ZThn152_N7S7688C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7688C1D1Ev,_ZTv0_n12_N7S7688C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7688C1D1Ev,_ZThn160_N7S7688C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7688C1D1Ev,_ZThn152_N7S7688C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C1D0Ev,_ZTv0_n44_N7S7688C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7688C1D0Ev,_ZThn136_N7S7688C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C1D0Ev,_ZThn80_N7S7688C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7688C1D1Ev,_ZTv0_n44_N7S7688C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7688C1D1Ev,_ZThn136_N7S7688C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7688C1D1Ev,_ZThn80_N7S7688C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7688C1D0Ev,_ZTv0_n28_N7S7688C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7688C1D0Ev,_ZThn244_N7S7688C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7688C1D0Ev,_ZThn36_N7S7688C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C1D0Ev,_ZThn12_N7S7688C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7688C1D0Ev,_ZThn4_N7S7688C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7688C1D1Ev,_ZTv0_n28_N7S7688C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7688C1D1Ev,_ZThn244_N7S7688C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7688C1D1Ev,_ZThn36_N7S7688C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7688C1D1Ev,_ZThn12_N7S7688C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7688C1D1Ev,_ZThn4_N7S7688C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7688C1 = {  "S7688C1", // class name
  bases_S7688C1, 30,
  &(vtc_S7688C1[0]), // expected_vtbl_contents
  &(vtt_S7688C1[0]), // expected_vtt_contents
  ABISELECT(464,288), // object size
  NSPAIRA(_ZTI7S7688C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7688C1),377, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7688C1),127, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C3  {
  virtual void  v8(); // _ZN7S7687C32v8Ev
  virtual void  v9(); // _ZN7S7687C32v9Ev
  virtual void  v10(); // _ZN7S7687C33v10Ev
  virtual void  v11(); // _ZN7S7687C33v11Ev
  ~S7687C3(); // tgen
  S7687C3(); // tgen
};
//SIG(-1 S7687C3) C1{ v1 v2 v3 v4}


void  S7687C3 ::v8(){vfunc_called(this, "_ZN7S7687C32v8Ev");}
void  S7687C3 ::v9(){vfunc_called(this, "_ZN7S7687C32v9Ev");}
void  S7687C3 ::v10(){vfunc_called(this, "_ZN7S7687C33v10Ev");}
void  S7687C3 ::v11(){vfunc_called(this, "_ZN7S7687C33v11Ev");}
S7687C3 ::~S7687C3(){ note_dtor("S7687C3", this);} // tgen
S7687C3 ::S7687C3(){ note_ctor("S7687C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7687C3C1Ev();
extern void _ZN7S7687C3D1Ev();
Name_Map name_map_S7687C3[] = {
  NSPAIR(_ZN7S7687C3C1Ev),
  NSPAIR(_ZN7S7687C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7687C3[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
static  VTBL_ENTRY vtc_S7687C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C3[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
Class_Descriptor cd_S7687C3 = {  "S7687C3", // class name
  0,0,//no base classes
  &(vtc_S7687C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7687C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7687C3),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  S7687C5  : virtual S7687C3 {
  virtual void  v12(); // _ZN7S7687C53v12Ev
  virtual void  v13(); // _ZN7S7687C53v13Ev
  virtual void  v14(); // _ZN7S7687C53v14Ev
  ~S7687C5(); // tgen
  S7687C5(); // tgen
};
//SIG(-1 S7687C5) C1{ VBC2{ v4 v5 v6 v7} v1 v2 v3}


void  S7687C5 ::v12(){vfunc_called(this, "_ZN7S7687C53v12Ev");}
void  S7687C5 ::v13(){vfunc_called(this, "_ZN7S7687C53v13Ev");}
void  S7687C5 ::v14(){vfunc_called(this, "_ZN7S7687C53v14Ev");}
S7687C5 ::~S7687C5(){ note_dtor("S7687C5", this);} // tgen
S7687C5 ::S7687C5(){ note_ctor("S7687C5", this);} // tgen

static void Test_S7687C5()
{
  extern Class_Descriptor cd_S7687C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7687C5, buf);
    S7687C5 *dp, &lv = *(dp=new (buf) S7687C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7687C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C5)");
    check_base_class_offset(lv, (S7687C3*), 0, "S7687C5");
    test_class_info(&lv, &cd_S7687C5);
    dp->~S7687C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C5(Test_S7687C5, "S7687C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7687C5C1Ev();
extern void _ZN7S7687C5D1Ev();
Name_Map name_map_S7687C5[] = {
  NSPAIR(_ZN7S7687C5C1Ev),
  NSPAIR(_ZN7S7687C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
static Base_Class bases_S7687C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    0, //bcp->offset
    -1, //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 _ZTI7S7687C5[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY vtc_S7687C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern VTBL_ENTRY _ZTV7S7687C5[];
static  VTT_ENTRY vtt_S7687C5[] = {
  {&(_ZTV7S7687C5[7]),  7,14},
  {&(_ZTV7S7687C5[7]),  7,14},
};
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
Class_Descriptor cd_S7687C5 = {  "S7687C5", // class name
  bases_S7687C5, 1,
  &(vtc_S7687C5[0]), // expected_vtbl_contents
  &(vtt_S7687C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7687C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7687C5),14, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7687C5),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  S7687C7  {
  int s7687c7f0;
  virtual  ~S7687C7(); // _ZN7S7687C7D1Ev
  virtual void  v15(); // _ZN7S7687C73v15Ev
  virtual void  v16(); // _ZN7S7687C73v16Ev
  virtual void  v17(); // _ZN7S7687C73v17Ev
  virtual void  v18(); // _ZN7S7687C73v18Ev
  S7687C7(); // tgen
};
//SIG(-1 S7687C7) C1{ vd v1 v2 v3 v4 Fi}


 S7687C7 ::~S7687C7(){ note_dtor("S7687C7", this);}
void  S7687C7 ::v15(){vfunc_called(this, "_ZN7S7687C73v15Ev");}
void  S7687C7 ::v16(){vfunc_called(this, "_ZN7S7687C73v16Ev");}
void  S7687C7 ::v17(){vfunc_called(this, "_ZN7S7687C73v17Ev");}
void  S7687C7 ::v18(){vfunc_called(this, "_ZN7S7687C73v18Ev");}
S7687C7 ::S7687C7(){ note_ctor("S7687C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7687C7C1Ev();
extern void _ZN7S7687C7D1Ev();
Name_Map name_map_S7687C7[] = {
  NSPAIR(_ZN7S7687C7C1Ev),
  NSPAIR(_ZN7S7687C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7687C7[];
extern void _ZN7S7687C7D1Ev();
extern void _ZN7S7687C7D0Ev();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY vtc_S7687C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C7[0]),
  (VTBL_ENTRY)&_ZN7S7687C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
Class_Descriptor cd_S7687C7 = {  "S7687C7", // class name
  0,0,//no base classes
  &(vtc_S7687C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7687C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7687C7),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  S7687C6  : virtual S7687C7 {
  __tsi64 s7687c6f0;
  int s7687c6f1;
  virtual void  v19(); // _ZN7S7687C63v19Ev
  virtual void  v20(); // _ZN7S7687C63v20Ev
  virtual void  v21(); // _ZN7S7687C63v21Ev
  virtual void  v22(); // _ZN7S7687C63v22Ev
  virtual void  v23(); // _ZN7S7687C63v23Ev
  virtual void  v24(); // _ZN7S7687C63v24Ev
  virtual void  v25(); // _ZN7S7687C63v25Ev
  ~S7687C6(); // tgen
  S7687C6(); // tgen
};
//SIG(-1 S7687C6) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S7687C6 ::v19(){vfunc_called(this, "_ZN7S7687C63v19Ev");}
void  S7687C6 ::v20(){vfunc_called(this, "_ZN7S7687C63v20Ev");}
void  S7687C6 ::v21(){vfunc_called(this, "_ZN7S7687C63v21Ev");}
void  S7687C6 ::v22(){vfunc_called(this, "_ZN7S7687C63v22Ev");}
void  S7687C6 ::v23(){vfunc_called(this, "_ZN7S7687C63v23Ev");}
void  S7687C6 ::v24(){vfunc_called(this, "_ZN7S7687C63v24Ev");}
void  S7687C6 ::v25(){vfunc_called(this, "_ZN7S7687C63v25Ev");}
S7687C6 ::~S7687C6(){ note_dtor("S7687C6", this);} // tgen
S7687C6 ::S7687C6(){ note_ctor("S7687C6", this);} // tgen

static void Test_S7687C6()
{
  extern Class_Descriptor cd_S7687C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7687C6, buf);
    S7687C6 *dp, &lv = *(dp=new (buf) S7687C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7687C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C6)");
    check_base_class_offset(lv, (S7687C7*), ABISELECT(24,16), "S7687C6");
    check_field_offset(lv, s7687c6f0, ABISELECT(8,4), "S7687C6.s7687c6f0");
    check_field_offset(lv, s7687c6f1, ABISELECT(16,12), "S7687C6.s7687c6f1");
    test_class_info(&lv, &cd_S7687C6);
    dp->~S7687C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C6(Test_S7687C6, "S7687C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7687C6C1Ev();
extern void _ZN7S7687C6D1Ev();
Name_Map name_map_S7687C6[] = {
  NSPAIR(_ZN7S7687C6C1Ev),
  NSPAIR(_ZN7S7687C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
static Base_Class bases_S7687C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C7,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI7S7687C6[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY vtc_S7687C6[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern VTBL_ENTRY _ZTV7S7687C6[];
static  VTT_ENTRY vtt_S7687C6[] = {
  {&(_ZTV7S7687C6[3]),  3,25},
  {&(_ZTV7S7687C6[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C6 = {  "S7687C6", // class name
  bases_S7687C6, 1,
  &(vtc_S7687C6[0]), // expected_vtbl_contents
  &(vtt_S7687C6[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7687C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7687C6),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7687C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C8  : S7687C3 {
  virtual  ~S7687C8(); // _ZN7S7687C8D1Ev
  virtual void  v26(); // _ZN7S7687C83v26Ev
  S7687C8(); // tgen
};
//SIG(-1 S7687C8) C1{ BC2{ v2 v3 v4 v5} vd v1}


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

static void Test_S7687C8()
{
  extern Class_Descriptor cd_S7687C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7687C8, buf);
    S7687C8 *dp, &lv = *(dp=new (buf) S7687C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7687C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C8)");
    check_base_class_offset(lv, (S7687C3*), 0, "S7687C8");
    test_class_info(&lv, &cd_S7687C8);
    dp->~S7687C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C8(Test_S7687C8, "S7687C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7687C8C1Ev();
extern void _ZN7S7687C8D1Ev();
Name_Map name_map_S7687C8[] = {
  NSPAIR(_ZN7S7687C8C1Ev),
  NSPAIR(_ZN7S7687C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
static Base_Class bases_S7687C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7687C8[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C8D1Ev();
extern void _ZN7S7687C8D0Ev();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY vtc_S7687C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C8[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
Class_Descriptor cd_S7687C8 = {  "S7687C8", // class name
  bases_S7687C8, 1,
  &(vtc_S7687C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7687C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7687C8),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C9  : virtual S7687C6 {
  ::S7688C10 s7687c9f0;
  virtual  ~S7687C9(); // _ZN7S7687C9D2Ev
  virtual void  v27(); // _ZN7S7687C93v27Ev
  virtual void  v28(); // _ZN7S7687C93v28Ev
  virtual void  v29(); // _ZN7S7687C93v29Ev
  virtual void  v30(); // _ZN7S7687C93v30Ev
  virtual void  v31(); // _ZN7S7687C93v31Ev
  virtual void  v32(); // _ZN7S7687C93v32Ev
  virtual void  v33(); // _ZN7S7687C93v33Ev
  virtual void  v34(); // _ZN7S7687C93v34Ev
  virtual void  v35(); // _ZN7S7687C93v35Ev
  S7687C9(); // tgen
};
//SIG(-1 S7687C9) C1{ VBC2{ VBC3{ vd v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 FL Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ vd m Fp[9]}}


 S7687C9 ::~S7687C9(){ note_dtor("S7687C9", this);}
void  S7687C9 ::v27(){vfunc_called(this, "_ZN7S7687C93v27Ev");}
void  S7687C9 ::v28(){vfunc_called(this, "_ZN7S7687C93v28Ev");}
void  S7687C9 ::v29(){vfunc_called(this, "_ZN7S7687C93v29Ev");}
void  S7687C9 ::v30(){vfunc_called(this, "_ZN7S7687C93v30Ev");}
void  S7687C9 ::v31(){vfunc_called(this, "_ZN7S7687C93v31Ev");}
void  S7687C9 ::v32(){vfunc_called(this, "_ZN7S7687C93v32Ev");}
void  S7687C9 ::v33(){vfunc_called(this, "_ZN7S7687C93v33Ev");}
void  S7687C9 ::v34(){vfunc_called(this, "_ZN7S7687C93v34Ev");}
void  S7687C9 ::v35(){vfunc_called(this, "_ZN7S7687C93v35Ev");}
S7687C9 ::S7687C9(){ note_ctor("S7687C9", this);} // tgen

static void Test_S7687C9()
{
  extern Class_Descriptor cd_S7687C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7687C9, buf);
    S7687C9 *dp, &lv = *(dp=new (buf) S7687C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7687C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C9)");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(112,60), "S7687C9");
    check_base_class_offset(lv, (S7687C6*), ABISELECT(88,44), "S7687C9");
    check_field_offset(lv, s7687c9f0, ABISELECT(8,4), "S7687C9.s7687c9f0");
    test_class_info(&lv, &cd_S7687C9);
    dp->~S7687C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C9(Test_S7687C9, "S7687C9", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S7687C9C1Ev();
extern void _ZN7S7687C9D2Ev();
Name_Map name_map_S7687C9[] = {
  NSPAIR(_ZN7S7687C9C1Ev),
  NSPAIR(_ZN7S7687C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
static Base_Class bases_S7687C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C7,    ABISELECT(112,60), //bcp->offset
    35, //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
    1, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(88,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //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 _ZTI7S7687C9[];
extern void _ZN7S7687C9D1Ev();
extern void _ZN7S7687C9D0Ev();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn88_N7S7687C9D1Ev,_ZThn44_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn88_N7S7687C9D0Ev,_ZThn44_N7S7687C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C9D1Ev,_ZThn60_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C9D0Ev,_ZThn60_N7S7687C9D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY vtc_S7687C9[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern VTBL_ENTRY _ZTV7S7687C9[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__7S7687C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
static  VTT_ENTRY vtt_S7687C9[] = {
  {&(_ZTV7S7687C9[4]),  4,48},
  {&(_ZTV7S7687C9[26]),  26,48},
  {&(_ZTV7S7687C9[42]),  42,48},
  {&(_tg__ZTV7S7687C6__7S7687C9[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__7S7687C9[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7687C9[];
extern  VTBL_ENTRY _ZTV7S7687C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C9[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C9D0Ev,_ZThn60_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C9D1Ev,_ZThn60_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7687C9D0Ev,_ZThn44_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7687C9D1Ev,_ZThn44_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C9 = {  "S7687C9", // class name
  bases_S7687C9, 2,
  &(vtc_S7687C9[0]), // expected_vtbl_contents
  &(vtt_S7687C9[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S7687C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7687C9),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7687C9),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C4  : virtual S7687C3 , virtual S7687C5 , virtual S7687C6 , S7687C8 , S7687C9 {
  int s7687c4f0;
  virtual  ~S7687C4(); // _ZN7S7687C4D2Ev
  virtual void  v36(); // _ZN7S7687C43v36Ev
  virtual void  v37(); // _ZN7S7687C43v37Ev
  virtual void  v38(); // _ZN7S7687C43v38Ev
  virtual void  v39(); // _ZN7S7687C43v39Ev
  virtual void  v40(); // _ZN7S7687C43v40Ev
  virtual void  v41(); // _ZN7S7687C43v41Ev
  virtual void  v42(); // _ZN7S7687C43v42Ev
  S7687C4(); // tgen
};
//SIG(-1 S7687C4) C1{ VBC2{ v8 v9 v10 v11} VBC3{ VBC2 v12 v13 v14} VBC4{ VBC5{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC6{ BC2 vd v26} BC7{ VBC4 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC8{ vd m Fp[9]}} vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S7687C4 ::~S7687C4(){ note_dtor("S7687C4", this);}
void  S7687C4 ::v36(){vfunc_called(this, "_ZN7S7687C43v36Ev");}
void  S7687C4 ::v37(){vfunc_called(this, "_ZN7S7687C43v37Ev");}
void  S7687C4 ::v38(){vfunc_called(this, "_ZN7S7687C43v38Ev");}
void  S7687C4 ::v39(){vfunc_called(this, "_ZN7S7687C43v39Ev");}
void  S7687C4 ::v40(){vfunc_called(this, "_ZN7S7687C43v40Ev");}
void  S7687C4 ::v41(){vfunc_called(this, "_ZN7S7687C43v41Ev");}
void  S7687C4 ::v42(){vfunc_called(this, "_ZN7S7687C43v42Ev");}
S7687C4 ::S7687C4(){ note_ctor("S7687C4", this);} // tgen

static void Test_S7687C4()
{
  extern Class_Descriptor cd_S7687C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S7687C4, buf);
    S7687C4 *dp, &lv = *(dp=new (buf) S7687C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S7687C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C4)");
    /*is_ambiguous_... S7687C4::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*), ABISELECT(104,52), "S7687C4");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(104,52), "S7687C4");
    check_base_class_offset(lv, (S7687C5*), ABISELECT(104,52), "S7687C4");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(136,72), "S7687C4");
    check_base_class_offset(lv, (S7687C6*), ABISELECT(112,56), "S7687C4");
    check_base_class_offset(lv, (S7687C6*)(S7687C9*), ABISELECT(112,56), "S7687C4");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*), 0, "S7687C4");
    check_base_class_offset(lv, (S7687C8*), 0, "S7687C4");
    check_base_class_offset(lv, (S7687C9*), ABISELECT(8,4), "S7687C4");
    check_field_offset(lv, s7687c4f0, ABISELECT(96,48), "S7687C4.s7687c4f0");
    test_class_info(&lv, &cd_S7687C4);
    dp->~S7687C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C4(Test_S7687C4, "S7687C4", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN7S7687C4C1Ev();
extern void _ZN7S7687C4D2Ev();
Name_Map name_map_S7687C4[] = {
  NSPAIR(_ZN7S7687C4C1Ev),
  NSPAIR(_ZN7S7687C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C9;
extern VTBL_ENTRY _ZTI7S7687C9[];
extern  VTBL_ENTRY _ZTV7S7687C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C9[];
static Base_Class bases_S7687C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    ABISELECT(104,52), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C5,    ABISELECT(104,52), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C7,    ABISELECT(136,72), //bcp->offset
    72, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(112,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7687C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C9,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI7S7687C4[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C4D1Ev();
extern void _ZN7S7687C4D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
extern void ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY vtc_S7687C4[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern VTBL_ENTRY _ZTV7S7687C4[];
extern void _ZN7S7687C9D1Ev();
extern void _ZN7S7687C9D0Ev();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C9__7S7687C4[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C9__7S7687C4[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C9__7S7687C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__7S7687C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
static  VTT_ENTRY vtt_S7687C4[] = {
  {&(_ZTV7S7687C4[6]),  6,85},
  {&(_tg__ZTV7S7687C9__7S7687C4[4]),  4,15},
  {&(_tg__ZTV7S7687C6__7S7687C9__7S7687C4[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C9__7S7687C4[7]),  7,13},
  {&(_ZTV7S7687C4[45]),  45,85},
  {&(_ZTV7S7687C4[45]),  45,85},
  {&(_ZTV7S7687C4[63]),  63,85},
  {&(_ZTV7S7687C4[79]),  79,85},
  {&(_ZTV7S7687C4[24]),  24,85},
  {&(_tg__ZTV7S7687C5__7S7687C4[7]),  7,14},
  {&(_tg__ZTV7S7687C5__7S7687C4[7]),  7,14},
  {&(_tg__ZTV7S7687C6__7S7687C4[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__7S7687C4[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7687C4[];
extern  VTBL_ENTRY _ZTV7S7687C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C4[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C4 = {  "S7687C4", // class name
  bases_S7687C4, 7,
  &(vtc_S7687C4[0]), // expected_vtbl_contents
  &(vtt_S7687C4[0]), // expected_vtt_contents
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI7S7687C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7687C4),85, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7687C4),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C12  : virtual S7687C8 , virtual S7688C10 , virtual S7687C6 , virtual S7687C5 {
  virtual  ~S7687C12(); // _ZN8S7687C12D2Ev
  virtual void  v43(); // _ZN8S7687C123v43Ev
  virtual void  v44(); // _ZN8S7687C123v44Ev
  S7687C12(); // tgen
};
//SIG(-1 S7687C12) C1{ VBC2{ BC3{ v3 v4 v5 v6} vd v7} VBC4{ vd m Fp[9]} VBC5{ VBC6{ vd v8 v9 v10 v11 Fi} v12 v13 v14 v15 v16 v17 v18 FL Fi} VBC7{ VBC3 v19 v20 v21} vd v1 v2}


 S7687C12 ::~S7687C12(){ note_dtor("S7687C12", this);}
void  S7687C12 ::v43(){vfunc_called(this, "_ZN8S7687C123v43Ev");}
void  S7687C12 ::v44(){vfunc_called(this, "_ZN8S7687C123v44Ev");}
S7687C12 ::S7687C12(){ note_ctor("S7687C12", this);} // tgen

static void Test_S7687C12()
{
  extern Class_Descriptor cd_S7687C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S7687C12, buf);
    S7687C12 *dp, &lv = *(dp=new (buf) S7687C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S7687C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C12)");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*), 0, "S7687C12");
    check_base_class_offset(lv, (S7687C8*), 0, "S7687C12");
    check_base_class_offset(lv, (S7688C10*), ABISELECT(8,4), "S7687C12");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(112,60), "S7687C12");
    check_base_class_offset(lv, (S7687C6*), ABISELECT(88,44), "S7687C12");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(128,68), "S7687C12");
    check_base_class_offset(lv, (S7687C5*), ABISELECT(128,68), "S7687C12");
    test_class_info(&lv, &cd_S7687C12);
    dp->~S7687C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C12(Test_S7687C12, "S7687C12", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN8S7687C12C1Ev();
extern void _ZN8S7687C12D2Ev();
Name_Map name_map_S7687C12[] = {
  NSPAIR(_ZN8S7687C12C1Ev),
  NSPAIR(_ZN8S7687C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
static Base_Class bases_S7687C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7687C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C10,    ABISELECT(8,4), //bcp->offset
    23, //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_S7687C7,    ABISELECT(112,60), //bcp->offset
    48, //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
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(88,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C3,    ABISELECT(128,68), //bcp->offset
    -1, //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
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7687C5,    ABISELECT(128,68), //bcp->offset
    61, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7687C12[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C12D1Ev();
extern void _ZN8S7687C12D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C12D1Ev,_ZThn4_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S7687C12D0Ev,_ZThn4_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S7687C12D1Ev,_ZThn44_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S7687C12D0Ev,_ZThn44_N8S7687C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7687C12D1Ev,_ZThn60_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7687C12D0Ev,_ZThn60_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY vtc_S7687C12[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(112,60),
  ABISELECT(88,44),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C12D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S7687C12[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C12[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__8S7687C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
static  VTT_ENTRY vtt_S7687C12[] = {
  {&(_ZTV8S7687C12[14]),  14,78},
  {&(_ZTV8S7687C12[14]),  14,78},
  {&(_ZTV8S7687C12[26]),  26,78},
  {&(_ZTV8S7687C12[39]),  39,78},
  {&(_ZTV8S7687C12[55]),  55,78},
  {&(_ZTV8S7687C12[71]),  71,78},
  {&(_ZTV8S7687C12[71]),  71,78},
  {&(_tg__ZTV7S7687C6__8S7687C12[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__8S7687C12[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C12[7]),  7,14},
  {&(_tg__ZTV7S7687C5__8S7687C12[7]),  7,14},
};
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7687C12D0Ev,_ZThn44_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7687C12D1Ev,_ZThn44_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7687C12D0Ev,_ZThn60_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C12D0Ev,_ZThn4_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7687C12D1Ev,_ZThn60_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C12D1Ev,_ZThn4_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C12 = {  "S7687C12", // class name
  bases_S7687C12, 7,
  &(vtc_S7687C12[0]), // expected_vtbl_contents
  &(vtt_S7687C12[0]), // expected_vtt_contents
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI8S7687C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7687C12),78, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7687C12),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C11  : virtual S7687C4 , S7687C3 , S7687C12 {
  int s7687c11f0;
  virtual void  v45(); // _ZN8S7687C113v45Ev
  virtual void  v46(); // _ZN8S7687C113v46Ev
  virtual void  v47(); // _ZN8S7687C113v47Ev
  virtual void  v48(); // _ZN8S7687C113v48Ev
  virtual void  v49(); // _ZN8S7687C113v49Ev
  virtual void  v50(); // _ZN8S7687C113v50Ev
  virtual void  v51(); // _ZN8S7687C113v51Ev
  ~S7687C11(); // tgen
  S7687C11(); // tgen
};
//SIG(-1 S7687C11) C1{ VBC2{ VBC3{ v8 v9 v10 v11} VBC4{ VBC3 v12 v13 v14} VBC5{ VBC6{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC7{ BC3 vd v26} BC8{ VBC5 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC9{ vd m Fp[9]}} vd v36 v37 v38 v39 v40 v41 v42 Fi} BC3 BC10{ VBC7 VBC9 VBC5 VBC4 vd v43 v44} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7687C11 ::v45(){vfunc_called(this, "_ZN8S7687C113v45Ev");}
void  S7687C11 ::v46(){vfunc_called(this, "_ZN8S7687C113v46Ev");}
void  S7687C11 ::v47(){vfunc_called(this, "_ZN8S7687C113v47Ev");}
void  S7687C11 ::v48(){vfunc_called(this, "_ZN8S7687C113v48Ev");}
void  S7687C11 ::v49(){vfunc_called(this, "_ZN8S7687C113v49Ev");}
void  S7687C11 ::v50(){vfunc_called(this, "_ZN8S7687C113v50Ev");}
void  S7687C11 ::v51(){vfunc_called(this, "_ZN8S7687C113v51Ev");}
S7687C11 ::~S7687C11(){ note_dtor("S7687C11", this);} // tgen
S7687C11 ::S7687C11(){ note_ctor("S7687C11", this);} // tgen

static void Test_S7687C11()
{
  extern Class_Descriptor cd_S7687C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S7687C11, buf);
    S7687C11 *dp, &lv = *(dp=new (buf) S7687C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S7687C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C11)");
    /*is_ambiguous_... S7687C4::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C4*), ABISELECT(128,64), "S7687C11");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(128,64), "S7687C11");
    check_base_class_offset(lv, (S7687C5*)(S7687C4*), ABISELECT(128,64), "S7687C11");
    check_base_class_offset(lv, (S7687C5*)(S7687C12*), ABISELECT(128,64), "S7687C11");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(160,84), "S7687C11");
    check_base_class_offset(lv, (S7687C6*)(S7687C4*), ABISELECT(136,68), "S7687C11");
    check_base_class_offset(lv, (S7687C6*)(S7687C9*)(S7687C4*), ABISELECT(136,68), "S7687C11");
    check_base_class_offset(lv, (S7687C6*)(S7687C12*), ABISELECT(136,68), "S7687C11");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C4*), ABISELECT(24,12), "S7687C11");
    check_base_class_offset(lv, (S7687C8*)(S7687C4*), ABISELECT(24,12), "S7687C11");
    check_base_class_offset(lv, (S7687C9*)(S7687C4*), ABISELECT(32,16), "S7687C11");
    check_base_class_offset(lv, (S7687C4*), ABISELECT(24,12), "S7687C11");
    /*is_ambiguous_... S7687C11::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*), 0, "S7687C11");
    /*is_ambiguous_... S7687C11::S7687C8 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C8*), ABISELECT(8,4), "S7687C11");
    check_base_class_offset(lv, (S7687C8*)(S7687C12*), ABISELECT(8,4), "S7687C11");
    check_base_class_offset(lv, (S7688C10*)(S7687C12*), ABISELECT(176,92), "S7687C11");
    check_base_class_offset(lv, (S7687C12*), ABISELECT(8,4), "S7687C11");
    check_field_offset(lv, s7687c11f0, ABISELECT(16,8), "S7687C11.s7687c11f0");
    test_class_info(&lv, &cd_S7687C11);
    dp->~S7687C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C11(Test_S7687C11, "S7687C11", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN8S7687C11C1Ev();
extern void _ZN8S7687C11D1Ev();
Name_Map name_map_S7687C11[] = {
  NSPAIR(_ZN8S7687C11C1Ev),
  NSPAIR(_ZN8S7687C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C9;
extern VTBL_ENTRY _ZTI7S7687C9[];
extern  VTBL_ENTRY _ZTV7S7687C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C9[];
extern Class_Descriptor cd_S7687C4;
extern VTBL_ENTRY _ZTI7S7687C4[];
extern  VTBL_ENTRY _ZTV7S7687C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C4[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
static Base_Class bases_S7687C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    ABISELECT(128,64), //bcp->offset
    -1, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7687C5,    ABISELECT(128,64), //bcp->offset
    102, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7687C7,    ABISELECT(160,84), //bcp->offset
    139, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(136,68), //bcp->offset
    119, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7687C3,    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_S7687C8,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7687C9,    ABISELECT(32,16), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7687C4,    ABISELECT(24,12), //bcp->offset
    45, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(176,92), //bcp->offset
    152, //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
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C12,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7687C11[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN8S7687C11D1Ev();
extern void _ZN8S7687C11D0Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C11D1Ev,_ZThn12_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C11D0Ev,_ZThn12_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S7687C11D1Ev,_ZThn68_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S7687C11D0Ev,_ZThn68_N8S7687C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn160_N8S7687C11D1Ev,_ZThn84_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn160_N8S7687C11D0Ev,_ZThn84_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S7687C11D1Ev,_ZThn92_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S7687C11D0Ev,_ZThn92_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7687C11[] = {
  ABISELECT(176,92),
  ABISELECT(8,4),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D0Ev,
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(168,88),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-24,-12),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7687C11[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C11[] = {
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(168,88),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S7687C12D1Ev,_ZThn88_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S7687C12D0Ev,_ZThn88_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C12__8S7687C11[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7687C12D1Ev,_ZThn64_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7687C12D0Ev,_ZThn64_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C12__8S7687C11[] = {
  ABISELECT(-128,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7687C12D1Ev,_ZThn80_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7687C12D0Ev,_ZThn80_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C12__8S7687C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C12__8S7687C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C4D1Ev();
extern void _ZN7S7687C4D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__8S7687C11[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C9D1Ev();
extern void _ZN7S7687C9D0Ev();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__8S7687C11[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C97S7687C4__8S7687C11[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C97S7687C4__8S7687C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C4__8S7687C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C4__8S7687C11[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C4__8S7687C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C9__7S7687C4__8S7687C11[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C11[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__8S7687C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
static  VTT_ENTRY vtt_S7687C11[] = {
  {&(_ZTV8S7687C11[9]),  9,157},
  {&(_tg__ZTV8S7687C12__8S7687C11[14]),  14,23},
  {&(_tg__ZTV8S7687C12__8S7687C11[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C12__8S7687C11[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C12__8S7687C11[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C12__8S7687C11[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C12__8S7687C11[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C12__8S7687C11[10]),  10,17},
  {&(_ZTV8S7687C11[73]),  73,157},
  {&(_ZTV8S7687C11[112]),  112,157},
  {&(_ZTV8S7687C11[112]),  112,157},
  {&(_ZTV8S7687C11[130]),  130,157},
  {&(_ZTV8S7687C11[146]),  146,157},
  {&(_ZTV8S7687C11[91]),  91,157},
  {&(_ZTV8S7687C11[36]),  36,157},
  {&(_ZTV8S7687C11[36]),  36,157},
  {&(_ZTV8S7687C11[155]),  155,157},
  {&(_tg__ZTV7S7687C4__8S7687C11[6]),  6,20},
  {&(_tg__ZTV7S7687C97S7687C4__8S7687C11[4]),  4,15},
  {&(_tg__ZTV7S7687C6__7S7687C97S7687C4__8S7687C11[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C97S7687C4__8S7687C11[7]),  7,13},
  {&(_tg__ZTV7S7687C5__7S7687C4__8S7687C11[10]),  10,17},
  {&(_tg__ZTV7S7687C5__7S7687C4__8S7687C11[10]),  10,17},
  {&(_tg__ZTV7S7687C6__7S7687C4__8S7687C11[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C4__8S7687C11[7]),  7,13},
  {&(_tg__ZTV7S7687C9__7S7687C4__8S7687C11[4]),  4,15},
  {&(_tg__ZTV7S7687C5__8S7687C11[7]),  7,14},
  {&(_tg__ZTV7S7687C5__8S7687C11[7]),  7,14},
  {&(_tg__ZTV7S7687C6__8S7687C11[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__8S7687C11[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S7687C11[];
extern  VTBL_ENTRY _ZTV8S7687C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C11[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7687C12D0Ev,_ZThn64_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7687C12D1Ev,_ZThn64_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7687C12D0Ev,_ZThn80_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C12D0Ev,_ZThn88_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7687C12D1Ev,_ZThn80_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C12D1Ev,_ZThn88_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7687C11D0Ev,_ZThn92_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C11D0Ev,_ZThn84_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7687C11D1Ev,_ZThn92_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C11D1Ev,_ZThn84_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7687C11D0Ev,_ZThn68_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C11D0Ev,_ZThn12_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7687C11D1Ev,_ZThn68_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C11D1Ev,_ZThn12_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C11 = {  "S7687C11", // class name
  bases_S7687C11, 13,
  &(vtc_S7687C11[0]), // expected_vtbl_contents
  &(vtt_S7687C11[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI8S7687C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7687C11),157, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7687C11),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C13  : virtual S7687C3 , virtual S7687C5 , S7687C8 , S7687C6 {
  int s7687c13f0[2];
  virtual void  v52(); // _ZN8S7687C133v52Ev
  virtual void  v53(); // _ZN8S7687C133v53Ev
  virtual void  v54(); // _ZN8S7687C133v54Ev
  virtual void  v55(); // _ZN8S7687C133v55Ev
  ~S7687C13(); // tgen
  S7687C13(); // tgen
};
//SIG(-1 S7687C13) C1{ VBC2{ v5 v6 v7 v8} VBC3{ VBC2 v9 v10 v11} BC4{ BC2 vd v12} BC5{ VBC6{ vd v13 v14 v15 v16 Fi} v17 v18 v19 v20 v21 v22 v23 FL Fi} v1 v2 v3 v4 Fi[2]}


void  S7687C13 ::v52(){vfunc_called(this, "_ZN8S7687C133v52Ev");}
void  S7687C13 ::v53(){vfunc_called(this, "_ZN8S7687C133v53Ev");}
void  S7687C13 ::v54(){vfunc_called(this, "_ZN8S7687C133v54Ev");}
void  S7687C13 ::v55(){vfunc_called(this, "_ZN8S7687C133v55Ev");}
S7687C13 ::~S7687C13(){ note_dtor("S7687C13", this);} // tgen
S7687C13 ::S7687C13(){ note_ctor("S7687C13", this);} // tgen

static void Test_S7687C13()
{
  extern Class_Descriptor cd_S7687C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S7687C13, buf);
    S7687C13 *dp, &lv = *(dp=new (buf) S7687C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7687C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C13)");
    /*is_ambiguous_... S7687C13::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*), ABISELECT(40,28), "S7687C13");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(40,28), "S7687C13");
    check_base_class_offset(lv, (S7687C5*), ABISELECT(40,28), "S7687C13");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*), 0, "S7687C13");
    check_base_class_offset(lv, (S7687C8*), 0, "S7687C13");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(48,32), "S7687C13");
    check_base_class_offset(lv, (S7687C6*), ABISELECT(8,4), "S7687C13");
    check_field_offset(lv, s7687c13f0, ABISELECT(28,20), "S7687C13.s7687c13f0");
    test_class_info(&lv, &cd_S7687C13);
    dp->~S7687C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C13(Test_S7687C13, "S7687C13", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S7687C13C1Ev();
extern void _ZN8S7687C13D1Ev();
Name_Map name_map_S7687C13[] = {
  NSPAIR(_ZN8S7687C13C1Ev),
  NSPAIR(_ZN8S7687C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
static Base_Class bases_S7687C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    ABISELECT(40,28), //bcp->offset
    -1, //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
  1, 1},
  {&cd_S7687C5,    ABISELECT(40,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    10, //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_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7687C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C7,    ABISELECT(48,32), //bcp->offset
    45, //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
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7687C13[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C13D1Ev();
extern void _ZN8S7687C13D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev)();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7687C13D1Ev,_ZThn32_N8S7687C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7687C13D0Ev,_ZThn32_N8S7687C13D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY vtc_S7687C13[] = {
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern VTBL_ENTRY _ZTV8S7687C13[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C13[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7687C6D1Ev,_ZThn28_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S7687C6D0Ev,_ZThn28_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__8S7687C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
static  VTT_ENTRY vtt_S7687C13[] = {
  {&(_ZTV8S7687C13[5]),  5,58},
  {&(_tg__ZTV7S7687C6__8S7687C13[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__8S7687C13[7]),  7,13},
  {&(_ZTV8S7687C13[38]),  38,58},
  {&(_ZTV8S7687C13[38]),  38,58},
  {&(_ZTV8S7687C13[19]),  19,58},
  {&(_ZTV8S7687C13[52]),  52,58},
  {&(_tg__ZTV7S7687C5__8S7687C13[7]),  7,14},
  {&(_tg__ZTV7S7687C5__8S7687C13[7]),  7,14},
};
extern VTBL_ENTRY _ZTI8S7687C13[];
extern  VTBL_ENTRY _ZTV8S7687C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C13[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7687C6D0Ev,_ZThn28_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7687C6D1Ev,_ZThn28_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7687C13D0Ev,_ZThn32_N8S7687C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7687C13D1Ev,_ZThn32_N8S7687C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C13 = {  "S7687C13", // class name
  bases_S7687C13, 6,
  &(vtc_S7687C13[0]), // expected_vtbl_contents
  &(vtt_S7687C13[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S7687C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7687C13),58, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7687C13),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C2  : virtual S7687C3 , virtual S7687C4 , S7687C11 , virtual S7687C13 , S7687C12 {
  virtual  ~S7687C2(); // _ZN7S7687C2D2Ev
  virtual void  v56(); // _ZN7S7687C23v56Ev
  S7687C2(); // tgen
};
//SIG(-1 S7687C2) C1{ VBC2{ v2 v3 v4 v5} VBC3{ VBC2 VBC4{ VBC2 v6 v7 v8} VBC5{ VBC6{ vd v9 v10 v11 v12 Fi} v13 v14 v15 v16 v17 v18 v19 FL Fi} BC7{ BC2 vd v20} BC8{ VBC5 vd v21 v22 v23 v24 v25 v26 v27 v28 v29 FC9{ vd m Fp[9]}} vd v30 v31 v32 v33 v34 v35 v36 Fi} BC10{ VBC3 BC2 BC11{ VBC7 VBC9 VBC5 VBC4 vd v37 v38} v39 v40 v41 v42 v43 v44 v45 Fi} VBC12{ VBC2 VBC4 BC7 BC5 v46 v47 v48 v49 Fi[2]} BC11 vd v1}


 S7687C2 ::~S7687C2(){ note_dtor("S7687C2", this);}
void  S7687C2 ::v56(){vfunc_called(this, "_ZN7S7687C23v56Ev");}
S7687C2 ::S7687C2(){ note_ctor("S7687C2", this);} // tgen

static void Test_S7687C2()
{
  extern Class_Descriptor cd_S7687C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,42)];
    init_test(&cd_S7687C2, buf);
    S7687C2 *dp, &lv = *(dp=new (buf) S7687C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,164), "sizeof(S7687C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7687C2)");
    /*is_ambiguous_... S7687C2::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*), ABISELECT(136,68), "S7687C2");
    /*is_ambiguous_... S7687C4::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C4*), ABISELECT(136,68), "S7687C2");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(136,68), "S7687C2");
    /*is_ambiguous_... S7687C13::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C13*), ABISELECT(136,68), "S7687C2");
    check_base_class_offset(lv, (S7687C5*)(S7687C4*), ABISELECT(136,68), "S7687C2");
    check_base_class_offset(lv, (S7687C5*)(S7687C12*)(S7687C11*), ABISELECT(136,68), "S7687C2");
    check_base_class_offset(lv, (S7687C5*)(S7687C13*), ABISELECT(136,68), "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C5*)(S7687C12*), ABISELECT(136,68), "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(168,88), "S7687C2");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C13*), ABISELECT(168,88), "S7687C2");
    check_base_class_offset(lv, (S7687C6*)(S7687C4*), ABISELECT(144,72), "S7687C2");
    check_base_class_offset(lv, (S7687C6*)(S7687C9*)(S7687C4*), ABISELECT(144,72), "S7687C2");
    check_base_class_offset(lv, (S7687C6*)(S7687C12*)(S7687C11*), ABISELECT(144,72), "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C6*)(S7687C12*), ABISELECT(144,72), "S7687C2");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C4*), ABISELECT(32,16), "S7687C2");
    check_base_class_offset(lv, (S7687C8*)(S7687C4*), ABISELECT(32,16), "S7687C2");
    check_base_class_offset(lv, (S7687C9*)(S7687C4*), ABISELECT(40,20), "S7687C2");
    check_base_class_offset(lv, (S7687C4*), ABISELECT(32,16), "S7687C2");
    check_base_class_offset(lv, (S7687C4*)(S7687C11*), ABISELECT(32,16), "S7687C2");
    /*is_ambiguous_... S7687C11::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C11*), 0, "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C8 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C8*), ABISELECT(8,4), "S7687C2");
    check_base_class_offset(lv, (S7687C8*)(S7687C12*)(S7687C11*), ABISELECT(8,4), "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C8*)(S7687C12*), ABISELECT(8,4), "S7687C2");
    check_base_class_offset(lv, (S7688C10*)(S7687C12*)(S7687C11*), ABISELECT(184,96), "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7688C10*)(S7687C12*), ABISELECT(184,96), "S7687C2");
    check_base_class_offset(lv, (S7687C12*)(S7687C11*), ABISELECT(8,4), "S7687C2");
    check_base_class_offset(lv, (S7687C11*), 0, "S7687C2");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C13*), ABISELECT(264,136), "S7687C2");
    check_base_class_offset(lv, (S7687C8*)(S7687C13*), ABISELECT(264,136), "S7687C2");
    check_base_class_offset(lv, (S7687C6*)(S7687C13*), ABISELECT(272,140), "S7687C2");
    check_base_class_offset(lv, (S7687C13*), ABISELECT(264,136), "S7687C2");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C12*), ABISELECT(24,12), "S7687C2");
    test_class_info(&lv, &cd_S7687C2);
    dp->~S7687C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C2(Test_S7687C2, "S7687C2", ABISELECT(304,164));

#else // __cplusplus

extern void _ZN7S7687C2C1Ev();
extern void _ZN7S7687C2D2Ev();
Name_Map name_map_S7687C2[] = {
  NSPAIR(_ZN7S7687C2C1Ev),
  NSPAIR(_ZN7S7687C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C9;
extern VTBL_ENTRY _ZTI7S7687C9[];
extern  VTBL_ENTRY _ZTV7S7687C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C9[];
extern Class_Descriptor cd_S7687C4;
extern VTBL_ENTRY _ZTI7S7687C4[];
extern  VTBL_ENTRY _ZTV7S7687C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C4[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
extern Class_Descriptor cd_S7687C11;
extern VTBL_ENTRY _ZTI8S7687C11[];
extern  VTBL_ENTRY _ZTV8S7687C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C11[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C13;
extern VTBL_ENTRY _ZTI8S7687C13[];
extern  VTBL_ENTRY _ZTV8S7687C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C13[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
static Base_Class bases_S7687C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C5,    ABISELECT(136,68), //bcp->offset
    127, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7687C7,    ABISELECT(168,88), //bcp->offset
    164, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(144,72), //bcp->offset
    144, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7687C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7687C9,    ABISELECT(40,20), //bcp->offset
    112, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7687C4,    ABISELECT(32,16), //bcp->offset
    70, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7687C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(184,96), //bcp->offset
    177, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C12,    ABISELECT(8,4), //bcp->offset
    24, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7687C11,    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},
  {&cd_S7687C3,    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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7687C8,    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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7687C6,    ABISELECT(272,140), //bcp->offset
    215, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7687C13,    ABISELECT(264,136), //bcp->offset
    182, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C12,    ABISELECT(24,12), //bcp->offset
    47, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7687C2[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN7S7687C2D1Ev();
extern void _ZN7S7687C2D0Ev();
extern void _ZN7S7687C23v56Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C2D1Ev,_ZThn4_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7687C2D0Ev,_ZThn4_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C2D1Ev,_ZThn12_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C2D0Ev,_ZThn12_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7687C2D1Ev,_ZThn16_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7687C2D0Ev,_ZThn16_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
extern void ABISELECT(_ZTvn8_n88_N7S7687C2D1Ev,_ZTvn4_n44_N7S7687C2D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N7S7687C2D0Ev,_ZTvn4_n44_N7S7687C2D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7687C2D1Ev,_ZThn72_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7687C2D0Ev,_ZThn72_N7S7687C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S7687C2D1Ev,_ZThn88_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S7687C2D0Ev,_ZThn88_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S7687C2D1Ev,_ZThn96_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S7687C2D0Ev,_ZThn96_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7687C2D1Ev,_ZTv0_n40_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7687C2D1Ev,_ZThn136_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7687C2D0Ev,_ZTv0_n40_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7687C2D0Ev,_ZThn136_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N7S7687C2D1Ev,_ZTvn4_n40_N7S7687C2D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N7S7687C2D0Ev,_ZTvn4_n40_N7S7687C2D0Ev)();
static  VTBL_ENTRY vtc_S7687C2[] = {
  ABISELECT(264,136),
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(168,88),
  ABISELECT(144,72),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN7S7687C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C23v56Ev,
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(176,92),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-32,-16),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7687C2D1Ev,_ZTvn4_n44_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7687C2D0Ev,_ZTvn4_n44_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-144,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-136),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7687C2D1Ev,_ZTv0_n40_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7687C2D0Ev,_ZTv0_n40_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
  ABISELECT(-104,-52),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7687C2D1Ev,_ZTvn4_n40_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7687C2D0Ev,_ZTvn4_n40_N7S7687C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7687C2[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN8S7687C11D1Ev();
extern void _ZN8S7687C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C11__7S7687C2[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(168,88),
  ABISELECT(144,72),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D0Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C11__7S7687C2[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(176,92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7687C12D1Ev,_ZThn92_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7687C12D0Ev,_ZThn92_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C128S7687C11__7S7687C2[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7687C12D1Ev,_ZThn68_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7687C12D0Ev,_ZThn68_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C128S7687C11__7S7687C2[] = {
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7687C12D1Ev,_ZThn84_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7687C12D0Ev,_ZThn84_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C128S7687C11__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C128S7687C11__7S7687C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S7687C11D1Ev,_ZThn16_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S7687C11D0Ev,_ZThn16_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__8S7687C11__7S7687C2[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-32,-16),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C11__7S7687C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn144_N8S7687C11D1Ev,_ZThn72_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn144_N8S7687C11D0Ev,_ZThn72_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C11__7S7687C2[] = {
  ABISELECT(-144,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn168_N8S7687C11D1Ev,_ZThn88_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn168_N8S7687C11D0Ev,_ZThn88_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C11__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__8S7687C11__7S7687C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C11__7S7687C2[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(176,92),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn184_N8S7687C11D1Ev,_ZThn96_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn184_N8S7687C11D0Ev,_ZThn96_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C11__7S7687C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__A1__7S7687C2[] = {
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__8S7687C12__A1__7S7687C2[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7687C12D1Ev,_ZThn84_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7687C12D0Ev,_ZThn84_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C12__A1__7S7687C2[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7687C12D1Ev,_ZThn60_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7687C12D0Ev,_ZThn60_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C12__A1__7S7687C2[] = {
  ABISELECT(-120,-60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S7687C12D1Ev,_ZThn76_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S7687C12D0Ev,_ZThn76_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C12__A1__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C12__A1__7S7687C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C4D1Ev();
extern void _ZN7S7687C4D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__7S7687C2[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C9D1Ev();
extern void _ZN7S7687C9D0Ev();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__7S7687C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C97S7687C4__7S7687C2[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C97S7687C4__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C4__7S7687C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C4__7S7687C2[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C4__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C9__7S7687C4__7S7687C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C13D1Ev();
extern void _ZN8S7687C13D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__7S7687C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__A1__7S7687C2[] = {
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C13__A1__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(104,52),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C13__7S7687C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C13__7S7687C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C13__7S7687C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
static  VTT_ENTRY vtt_S7687C2[] = {
  {&(_ZTV7S7687C2[10]),  10,227},
  {&(_tg__ZTV8S7687C11__7S7687C2[9]),  9,22},
  {&(_tg__ZTV8S7687C128S7687C11__7S7687C2[14]),  14,23},
  {&(_tg__ZTV8S7687C128S7687C11__7S7687C2[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C128S7687C11__7S7687C2[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C128S7687C11__7S7687C2[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C128S7687C11__7S7687C2[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C11__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C11__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C4__8S7687C11__7S7687C2[28]),  28,42},
  {&(_tg__ZTV7S7687C5__8S7687C11__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C11__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C11__7S7687C2[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C11__7S7687C2[7]),  7,13},
  {&(_tg__ZTV7S7687C97S7687C4__8S7687C11__7S7687C2[4]),  4,15},
  {&(_tg__ZTV8S7687C12__8S7687C11__7S7687C2[14]),  14,23},
  {&(_tg__ZTV8S7687C12__8S7687C11__7S7687C2[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C11__7S7687C2[3]),  3,5},
  {&(_tg__ZTV8S7687C12__A1__7S7687C2[14]),  14,23},
  {&(_tg__ZTV7S7687C8__8S7687C12__A1__7S7687C2[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7687C12__A1__7S7687C2[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C12__A1__7S7687C2[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C12__A1__7S7687C2[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C12__A1__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C12__A1__7S7687C2[10]),  10,17},
  {&(_ZTV7S7687C2[137]),  137,227},
  {&(_ZTV7S7687C2[98]),  98,227},
  {&(_ZTV7S7687C2[137]),  137,227},
  {&(_ZTV7S7687C2[155]),  155,227},
  {&(_ZTV7S7687C2[171]),  171,227},
  {&(_ZTV7S7687C2[116]),  116,227},
  {&(_ZTV7S7687C2[38]),  38,227},
  {&(_ZTV7S7687C2[38]),  38,227},
  {&(_ZTV7S7687C2[180]),  180,227},
  {&(_ZTV7S7687C2[204]),  204,227},
  {&(_ZTV7S7687C2[218]),  218,227},
  {&(_ZTV7S7687C2[61]),  61,227},
  {&(_tg__ZTV7S7687C4__7S7687C2[6]),  6,20},
  {&(_tg__ZTV7S7687C97S7687C4__7S7687C2[4]),  4,15},
  {&(_tg__ZTV7S7687C6__7S7687C97S7687C4__7S7687C2[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C97S7687C4__7S7687C2[7]),  7,13},
  {&(_tg__ZTV7S7687C5__7S7687C4__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C5__7S7687C4__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C6__7S7687C4__7S7687C2[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C4__7S7687C2[7]),  7,13},
  {&(_tg__ZTV7S7687C9__7S7687C4__7S7687C2[4]),  4,15},
  {&(_tg__ZTV7S7687C5__7S7687C2[7]),  7,14},
  {&(_tg__ZTV7S7687C5__7S7687C2[7]),  7,14},
  {&(_tg__ZTV7S7687C6__7S7687C2[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__7S7687C2[7]),  7,13},
  {&(_tg__ZTV8S7687C13__7S7687C2[5]),  5,16},
  {&(_tg__ZTV7S7687C68S7687C13__A1__7S7687C2[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C13__A1__7S7687C2[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C13__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C13__7S7687C2[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C13__7S7687C2[3]),  3,12},
  {&(_tg__ZTV7S7687C7__8S7687C13__7S7687C2[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7687C2[];
extern  VTBL_ENTRY _ZTV7S7687C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C2[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7687C11D0Ev,_ZThn96_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C11D0Ev,_ZThn88_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7687C11D1Ev,_ZThn96_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C11D1Ev,_ZThn88_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C11D0Ev,_ZThn72_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7687C11D0Ev,_ZThn16_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C11D1Ev,_ZThn72_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7687C11D1Ev,_ZThn16_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7687C12D0Ev,_ZThn60_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7687C12D0Ev,_ZThn68_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7687C12D1Ev,_ZThn60_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7687C12D1Ev,_ZThn68_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C12D0Ev,_ZThn76_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C12D0Ev,_ZThn84_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C12D0Ev,_ZThn84_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7687C12D0Ev,_ZThn92_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C12D1Ev,_ZThn76_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C12D1Ev,_ZThn84_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C12D1Ev,_ZThn84_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7687C12D1Ev,_ZThn92_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7687C2D0Ev,_ZTv0_n40_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7687C2D0Ev,_ZThn136_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7687C2D1Ev,_ZTv0_n40_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7687C2D1Ev,_ZThn136_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7687C2D0Ev,_ZThn96_N7S7687C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7687C2D0Ev,_ZThn88_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7687C2D1Ev,_ZThn96_N7S7687C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7687C2D1Ev,_ZThn88_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7687C2D0Ev,_ZThn72_N7S7687C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7687C2D0Ev,_ZThn16_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7687C2D1Ev,_ZThn72_N7S7687C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7687C2D1Ev,_ZThn16_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C2D0Ev,_ZThn12_N7S7687C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7687C2D0Ev,_ZThn4_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C2D1Ev,_ZThn12_N7S7687C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7687C2D1Ev,_ZThn4_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C2 = {  "S7687C2", // class name
  bases_S7687C2, 19,
  &(vtc_S7687C2[0]), // expected_vtbl_contents
  &(vtt_S7687C2[0]), // expected_vtt_contents
  ABISELECT(304,164), // object size
  NSPAIRA(_ZTI7S7687C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7687C2),227, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7687C2),57, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C14  {
  long s7687c14f0;
  virtual void  v57(); // _ZN8S7687C143v57Ev
  virtual void  v58(); // _ZN8S7687C143v58Ev
  virtual void  v59(); // _ZN8S7687C143v59Ev
  virtual void  v60(); // _ZN8S7687C143v60Ev
  virtual void  v61(); // _ZN8S7687C143v61Ev
  virtual void  v62(); // _ZN8S7687C143v62Ev
  ~S7687C14(); // tgen
  S7687C14(); // tgen
};
//SIG(-1 S7687C14) C1{ v1 v2 v3 v4 v5 v6 Fl}


void  S7687C14 ::v57(){vfunc_called(this, "_ZN8S7687C143v57Ev");}
void  S7687C14 ::v58(){vfunc_called(this, "_ZN8S7687C143v58Ev");}
void  S7687C14 ::v59(){vfunc_called(this, "_ZN8S7687C143v59Ev");}
void  S7687C14 ::v60(){vfunc_called(this, "_ZN8S7687C143v60Ev");}
void  S7687C14 ::v61(){vfunc_called(this, "_ZN8S7687C143v61Ev");}
void  S7687C14 ::v62(){vfunc_called(this, "_ZN8S7687C143v62Ev");}
S7687C14 ::~S7687C14(){ note_dtor("S7687C14", this);} // tgen
S7687C14 ::S7687C14(){ note_ctor("S7687C14", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S7687C14C1Ev();
extern void _ZN8S7687C14D1Ev();
Name_Map name_map_S7687C14[] = {
  NSPAIR(_ZN8S7687C14C1Ev),
  NSPAIR(_ZN8S7687C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7687C14[];
extern void _ZN8S7687C143v57Ev();
extern void _ZN8S7687C143v58Ev();
extern void _ZN8S7687C143v59Ev();
extern void _ZN8S7687C143v60Ev();
extern void _ZN8S7687C143v61Ev();
extern void _ZN8S7687C143v62Ev();
static  VTBL_ENTRY vtc_S7687C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C14[0]),
  (VTBL_ENTRY)&_ZN8S7687C143v57Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v58Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v59Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v60Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v61Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v62Ev,
};
extern VTBL_ENTRY _ZTI8S7687C14[];
extern  VTBL_ENTRY _ZTV8S7687C14[];
Class_Descriptor cd_S7687C14 = {  "S7687C14", // class name
  0,0,//no base classes
  &(vtc_S7687C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7687C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7687C14),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  S7687C16  : virtual S7687C7 , virtual S7687C13 , S7687C6 , virtual S7688C10 , S7687C12 {
  long double s7687c16f0;
  __tsi64  :0;
  virtual  ~S7687C16(); // _ZN8S7687C16D2Ev
  virtual void  v63(); // _ZN8S7687C163v63Ev
  virtual void  v64(); // _ZN8S7687C163v64Ev
  virtual void  v65(); // _ZN8S7687C163v65Ev
  S7687C16(); // tgen
};
//SIG(-1 S7687C16) C1{ VBC2{ vd v4 v5 v6 v7 Fi} VBC3{ VBC4{ v8 v9 v10 v11} VBC5{ VBC4 v12 v13 v14} BC6{ BC4 vd v15} BC7{ VBC2 v16 v17 v18 v19 v20 v21 v22 FL Fi} v23 v24 v25 v26 Fi[2]} BC7 VBC8{ vd m Fp[9]} BC9{ VBC6 VBC8 VBC7 VBC5 vd v27 v28} vd v1 v2 v3 FD FL:0}


 S7687C16 ::~S7687C16(){ note_dtor("S7687C16", this);}
void  S7687C16 ::v63(){vfunc_called(this, "_ZN8S7687C163v63Ev");}
void  S7687C16 ::v64(){vfunc_called(this, "_ZN8S7687C163v64Ev");}
void  S7687C16 ::v65(){vfunc_called(this, "_ZN8S7687C163v65Ev");}
S7687C16 ::S7687C16(){ note_ctor("S7687C16", this);} // tgen

static void Test_S7687C16()
{
  extern Class_Descriptor cd_S7687C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,33)];
    init_test(&cd_S7687C16, buf);
    S7687C16 *dp, &lv = *(dp=new (buf) S7687C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,128), "sizeof(S7687C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7687C16)");
    check_base_class_offset(lv, (S7687C7*), ABISELECT(48,32), "S7687C16");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C13*), ABISELECT(48,32), "S7687C16");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(48,32), "S7687C16");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(48,32), "S7687C16");
    /*is_ambiguous_... S7687C13::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C13*), ABISELECT(104,68), "S7687C16");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(104,68), "S7687C16");
    check_base_class_offset(lv, (S7687C5*)(S7687C13*), ABISELECT(104,68), "S7687C16");
    check_base_class_offset(lv, (S7687C5*)(S7687C12*), ABISELECT(104,68), "S7687C16");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C13*), ABISELECT(64,40), "S7687C16");
    check_base_class_offset(lv, (S7687C8*)(S7687C13*), ABISELECT(64,40), "S7687C16");
    check_base_class_offset(lv, (S7687C6*)(S7687C13*), ABISELECT(72,44), "S7687C16");
    check_base_class_offset(lv, (S7687C13*), ABISELECT(64,40), "S7687C16");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C6*), 0, "S7687C16");
    check_base_class_offset(lv, (S7688C10*), ABISELECT(112,72), "S7687C16");
    check_base_class_offset(lv, (S7688C10*)(S7687C12*), ABISELECT(112,72), "S7687C16");
    /*is_ambiguous_... S7687C16::S7687C8 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C8*), ABISELECT(24,16), "S7687C16");
    check_base_class_offset(lv, (S7687C8*)(S7687C12*), ABISELECT(24,16), "S7687C16");
    check_base_class_offset(lv, (S7687C6*)(S7687C12*), ABISELECT(192,112), "S7687C16");
    check_base_class_offset(lv, (S7687C12*), ABISELECT(24,16), "S7687C16");
    check_field_offset(lv, s7687c16f0, ABISELECT(32,20), "S7687C16.s7687c16f0");
    test_class_info(&lv, &cd_S7687C16);
    dp->~S7687C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C16(Test_S7687C16, "S7687C16", ABISELECT(224,128));

#else // __cplusplus

extern void _ZN8S7687C16C1Ev();
extern void _ZN8S7687C16D2Ev();
Name_Map name_map_S7687C16[] = {
  NSPAIR(_ZN8S7687C16C1Ev),
  NSPAIR(_ZN8S7687C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C13;
extern VTBL_ENTRY _ZTI8S7687C13[];
extern  VTBL_ENTRY _ZTV8S7687C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C13[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
static Base_Class bases_S7687C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C7,    ABISELECT(48,32), //bcp->offset
    44, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C3,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    2, //immediately_derived
  0, 1},
  {&cd_S7687C5,    ABISELECT(104,68), //bcp->offset
    102, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7687C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7687C8,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7687C6,    ABISELECT(72,44), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7687C13,    ABISELECT(64,40), //bcp->offset
    57, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C6,    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_S7688C10,    ABISELECT(112,72), //bcp->offset
    119, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7687C3,    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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(24,16), //bcp->offset
    -1, //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
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(192,112), //bcp->offset
    124, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C12,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7687C16[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN8S7687C16D1Ev();
extern void _ZN8S7687C16D0Ev();
extern void _ZN8S7687C163v63Ev();
extern void _ZN8S7687C163v64Ev();
extern void _ZN8S7687C163v65Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C16D1Ev,_ZThn16_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C16D0Ev,_ZThn16_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S7687C16D1Ev,_ZThn32_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S7687C16D0Ev,_ZThn32_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7687C16D1Ev,_ZThn40_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7687C16D0Ev,_ZThn40_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7687C16D1Ev,_ZTvn4_n40_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7687C16D0Ev,_ZTvn4_n40_N8S7687C16D0Ev)();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn112_N8S7687C16D1Ev,_ZThn72_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn112_N8S7687C16D0Ev,_ZThn72_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn192_N8S7687C16D1Ev,_ZThn112_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn192_N8S7687C16D0Ev,_ZThn112_N8S7687C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7687C16[] = {
  ABISELECT(192,112),
  ABISELECT(24,16),
  ABISELECT(112,72),
  ABISELECT(104,68),
  ABISELECT(104,68),
  ABISELECT(64,40),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7687C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v65Ev,
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(168,96),
  ABISELECT(88,56),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
  ABISELECT(-24,-12),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C16D1Ev,_ZTvn4_n40_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C16D0Ev,_ZTvn4_n40_N8S7687C16D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev),
  ABISELECT(-192,-112),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7687C16[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A__8S7687C16[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7687C6D1Ev,_ZThn32_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7687C6D0Ev,_ZThn32_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__A__8S7687C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C16[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(168,96),
  ABISELECT(88,56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S7687C12D1Ev,_ZThn56_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S7687C12D0Ev,_ZThn56_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C12__8S7687C16[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S7687C12D1Ev,_ZThn96_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S7687C12D0Ev,_ZThn96_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C12__8S7687C16[] = {
  ABISELECT(-168,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C12D1Ev,_ZThn16_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C12D0Ev,_ZThn16_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C12__8S7687C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C12__8S7687C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C13D1Ev();
extern void _ZN8S7687C13D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__8S7687C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__8S7687C16[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C13__8S7687C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C13__8S7687C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C13__8S7687C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C13__8S7687C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A2__8S7687C16[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__A2__8S7687C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,80),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
static  VTT_ENTRY vtt_S7687C16[] = {
  {&(_ZTV8S7687C16[9]),  9,144},
  {&(_tg__ZTV7S7687C6__A__8S7687C16[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__A__8S7687C16[7]),  7,13},
  {&(_tg__ZTV8S7687C12__8S7687C16[14]),  14,23},
  {&(_tg__ZTV8S7687C12__8S7687C16[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C12__8S7687C16[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C12__8S7687C16[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C12__8S7687C16[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C12__8S7687C16[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C12__8S7687C16[10]),  10,17},
  {&(_ZTV8S7687C16[51]),  51,144},
  {&(_ZTV8S7687C16[79]),  79,144},
  {&(_ZTV8S7687C16[112]),  112,144},
  {&(_ZTV8S7687C16[112]),  112,144},
  {&(_ZTV8S7687C16[93]),  93,144},
  {&(_ZTV8S7687C16[122]),  122,144},
  {&(_ZTV8S7687C16[35]),  35,144},
  {&(_ZTV8S7687C16[35]),  35,144},
  {&(_ZTV8S7687C16[135]),  135,144},
  {&(_tg__ZTV8S7687C13__8S7687C16[5]),  5,16},
  {&(_tg__ZTV7S7687C68S7687C13__8S7687C16[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C13__8S7687C16[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C13__8S7687C16[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C13__8S7687C16[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C13__8S7687C16[3]),  3,12},
  {&(_tg__ZTV7S7687C7__8S7687C13__8S7687C16[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C16[7]),  7,14},
  {&(_tg__ZTV7S7687C5__8S7687C16[7]),  7,14},
  {&(_tg__ZTV7S7687C6__A2__8S7687C16[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__A2__8S7687C16[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S7687C16[];
extern  VTBL_ENTRY _ZTV8S7687C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C16[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C12D0Ev,_ZThn96_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C12D1Ev,_ZThn96_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C12D0Ev,_ZThn16_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7687C12D0Ev,_ZThn56_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C12D1Ev,_ZThn16_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7687C12D1Ev,_ZThn56_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7687C6D0Ev,_ZThn32_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7687C6D1Ev,_ZThn32_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7687C16D0Ev,_ZThn112_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7687C16D1Ev,_ZThn112_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7687C16D0Ev,_ZThn40_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7687C16D1Ev,_ZThn40_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7687C16D0Ev,_ZThn72_N8S7687C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7687C16D0Ev,_ZThn32_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7687C16D1Ev,_ZThn72_N8S7687C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7687C16D1Ev,_ZThn32_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C16D0Ev,_ZThn16_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C16D1Ev,_ZThn16_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C16 = {  "S7687C16", // class name
  bases_S7687C16, 13,
  &(vtc_S7687C16[0]), // expected_vtbl_contents
  &(vtt_S7687C16[0]), // expected_vtt_contents
  ABISELECT(224,128), // object size
  NSPAIRA(_ZTI8S7687C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7687C16),144, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7687C16),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C15  : S7687C16 , S7687C6 {
  int s7687c15f0;
  long s7687c15f1;
  virtual  ~S7687C15(); // _ZN8S7687C15D2Ev
  virtual void  v66(); // _ZN8S7687C153v66Ev
  virtual void  v67(); // _ZN8S7687C153v67Ev
  virtual void  v68(); // _ZN8S7687C153v68Ev
  S7687C15(); // tgen
};
//SIG(-1 S7687C15) C1{ BC2{ VBC3{ vd v4 v5 v6 v7 Fi} VBC4{ VBC5{ v8 v9 v10 v11} VBC6{ VBC5 v12 v13 v14} BC7{ BC5 vd v15} BC8{ VBC3 v16 v17 v18 v19 v20 v21 v22 FL Fi} v23 v24 v25 v26 Fi[2]} BC8 VBC9{ vd m Fp[9]} BC10{ VBC7 VBC9 VBC8 VBC6 vd v27 v28} vd v29 v30 v31 FD FL:0} BC8 vd v1 v2 v3 Fi Fl}


 S7687C15 ::~S7687C15(){ note_dtor("S7687C15", this);}
void  S7687C15 ::v66(){vfunc_called(this, "_ZN8S7687C153v66Ev");}
void  S7687C15 ::v67(){vfunc_called(this, "_ZN8S7687C153v67Ev");}
void  S7687C15 ::v68(){vfunc_called(this, "_ZN8S7687C153v68Ev");}
S7687C15 ::S7687C15(){ note_ctor("S7687C15", this);} // tgen

static void Test_S7687C15()
{
  extern Class_Descriptor cd_S7687C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,39)];
    init_test(&cd_S7687C15, buf);
    S7687C15 *dp, &lv = *(dp=new (buf) S7687C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,152), "sizeof(S7687C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7687C15)");
    check_base_class_offset(lv, (S7687C7*)(S7687C16*), ABISELECT(80,56), "S7687C15");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C13*), ABISELECT(80,56), "S7687C15");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C16*), ABISELECT(80,56), "S7687C15");
    /*is_ambiguous_... S7687C15::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(80,56), "S7687C15");
    /*is_ambiguous_... S7687C15::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(80,56), "S7687C15");
    /*is_ambiguous_... S7687C13::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C13*), ABISELECT(136,92), "S7687C15");
    check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(136,92), "S7687C15");
    check_base_class_offset(lv, (S7687C5*)(S7687C13*), ABISELECT(136,92), "S7687C15");
    check_base_class_offset(lv, (S7687C5*)(S7687C12*)(S7687C16*), ABISELECT(136,92), "S7687C15");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C13*), ABISELECT(96,64), "S7687C15");
    check_base_class_offset(lv, (S7687C8*)(S7687C13*), ABISELECT(96,64), "S7687C15");
    check_base_class_offset(lv, (S7687C6*)(S7687C13*), ABISELECT(104,68), "S7687C15");
    check_base_class_offset(lv, (S7687C13*)(S7687C16*), ABISELECT(96,64), "S7687C15");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C6*)(S7687C16*), 0, "S7687C15");
    check_base_class_offset(lv, (S7688C10*)(S7687C16*), ABISELECT(144,96), "S7687C15");
    check_base_class_offset(lv, (S7688C10*)(S7687C12*)(S7687C16*), ABISELECT(144,96), "S7687C15");
    /*is_ambiguous_... S7687C15::S7687C8 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C8*), ABISELECT(24,16), "S7687C15");
    check_base_class_offset(lv, (S7687C8*)(S7687C12*)(S7687C16*), ABISELECT(24,16), "S7687C15");
    check_base_class_offset(lv, (S7687C6*)(S7687C12*)(S7687C16*), ABISELECT(224,136), "S7687C15");
    check_base_class_offset(lv, (S7687C12*)(S7687C16*), ABISELECT(24,16), "S7687C15");
    check_base_class_offset(lv, (S7687C16*), 0, "S7687C15");
    /*is_ambiguous_... S7687C15::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C6*), ABISELECT(48,32), "S7687C15");
    check_field_offset(lv, s7687c15f0, ABISELECT(68,48), "S7687C15.s7687c15f0");
    check_field_offset(lv, s7687c15f1, ABISELECT(72,52), "S7687C15.s7687c15f1");
    test_class_info(&lv, &cd_S7687C15);
    dp->~S7687C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C15(Test_S7687C15, "S7687C15", ABISELECT(256,152));

#else // __cplusplus

extern void _ZN8S7687C15C1Ev();
extern void _ZN8S7687C15D2Ev();
Name_Map name_map_S7687C15[] = {
  NSPAIR(_ZN8S7687C15C1Ev),
  NSPAIR(_ZN8S7687C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C13;
extern VTBL_ENTRY _ZTI8S7687C13[];
extern  VTBL_ENTRY _ZTV8S7687C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C13[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
extern Class_Descriptor cd_S7687C16;
extern VTBL_ENTRY _ZTI8S7687C16[];
extern  VTBL_ENTRY _ZTV8S7687C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C16[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
static Base_Class bases_S7687C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C7,    ABISELECT(80,56), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7687C3,    ABISELECT(136,92), //bcp->offset
    -1, //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
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7687C5,    ABISELECT(136,92), //bcp->offset
    117, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7687C3,    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
    4, //immediately_derived
  0, 0},
  {&cd_S7687C8,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7687C6,    ABISELECT(104,68), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7687C13,    ABISELECT(96,64), //bcp->offset
    72, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7687C6,    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
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7688C10,    ABISELECT(144,96), //bcp->offset
    134, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C3,    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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(224,136), //bcp->offset
    139, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C12,    ABISELECT(24,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7687C16,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C6,    ABISELECT(48,32), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7687C15[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN8S7687C15D1Ev();
extern void _ZN8S7687C15D0Ev();
extern void _ZN8S7687C163v63Ev();
extern void _ZN8S7687C163v64Ev();
extern void _ZN8S7687C163v65Ev();
extern void _ZN8S7687C153v66Ev();
extern void _ZN8S7687C153v67Ev();
extern void _ZN8S7687C153v68Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C15D1Ev,_ZThn16_N8S7687C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C15D0Ev,_ZThn16_N8S7687C15D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn48_N8S7687C15D1Ev,_ZThn32_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S7687C15D0Ev,_ZThn32_N8S7687C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S7687C15D1Ev,_ZThn56_N8S7687C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S7687C15D0Ev,_ZThn56_N8S7687C15D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7687C15D1Ev,_ZTv0_n40_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S7687C15D1Ev,_ZThn64_N8S7687C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7687C15D0Ev,_ZTv0_n40_N8S7687C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S7687C15D0Ev,_ZThn64_N8S7687C15D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7687C15D1Ev,_ZTvn4_n40_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7687C15D0Ev,_ZTvn4_n40_N8S7687C15D0Ev)();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S7687C15D1Ev,_ZThn96_N8S7687C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S7687C15D0Ev,_ZThn96_N8S7687C15D0Ev)() __attribute__((weak));
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C15D1Ev,_ZTv0_n44_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn224_N8S7687C15D1Ev,_ZThn136_N8S7687C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C15D0Ev,_ZTv0_n44_N8S7687C15D0Ev)();
extern void ABISELECT(_ZThn224_N8S7687C15D0Ev,_ZThn136_N8S7687C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7687C15[] = {
  ABISELECT(224,136),
  ABISELECT(24,16),
  ABISELECT(144,96),
  ABISELECT(136,92),
  ABISELECT(136,92),
  ABISELECT(96,64),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7687C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v65Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v66Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v67Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v68Ev,
  ABISELECT(112,76),
  ABISELECT(112,76),
  ABISELECT(56,40),
  ABISELECT(200,120),
  ABISELECT(120,80),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(32,24),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7687C15D1Ev,_ZThn32_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7687C15D0Ev,_ZThn32_N8S7687C15D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C15D1Ev,_ZTv0_n40_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C15D0Ev,_ZTv0_n40_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
  ABISELECT(-24,-12),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C15D1Ev,_ZTvn4_n40_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C15D0Ev,_ZTvn4_n40_N8S7687C15D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev),
  ABISELECT(-224,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C15D1Ev,_ZTv0_n44_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C15D0Ev,_ZTv0_n44_N8S7687C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7687C15[];
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN8S7687C16D1Ev();
extern void _ZN8S7687C16D0Ev();
extern void _ZN8S7687C163v63Ev();
extern void _ZN8S7687C163v64Ev();
extern void _ZN8S7687C163v65Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C16__8S7687C15[] = {
  ABISELECT(224,136),
  ABISELECT(24,16),
  ABISELECT(144,96),
  ABISELECT(136,92),
  ABISELECT(136,92),
  ABISELECT(96,64),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7687C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v65Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C16__A1__8S7687C15[] = {
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7687C6D1Ev,_ZThn56_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7687C6D0Ev,_ZThn56_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C16__A1__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C16__8S7687C15[] = {
  ABISELECT(112,76),
  ABISELECT(112,76),
  ABISELECT(56,40),
  ABISELECT(200,120),
  ABISELECT(120,80),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7687C12D1Ev,_ZThn80_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7687C12D0Ev,_ZThn80_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C128S7687C16__8S7687C15[] = {
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S7687C12D1Ev,_ZThn120_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S7687C12D0Ev,_ZThn120_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C128S7687C16__8S7687C15[] = {
  ABISELECT(-200,-120),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7687C12D1Ev,_ZThn40_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S7687C12D0Ev,_ZThn40_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C128S7687C16__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C128S7687C16__8S7687C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S7687C16D1Ev,_ZThn56_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S7687C16D0Ev,_ZThn56_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C16__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S7687C16D1Ev,_ZThn64_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S7687C16D0Ev,_ZThn64_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__8S7687C16__8S7687C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-64),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C16__8S7687C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7687C16D1Ev,_ZTvn4_n40_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7687C16D0Ev,_ZTvn4_n40_N8S7687C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__8S7687C16__8S7687C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C16D1Ev,_ZTvn4_n40_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C16D0Ev,_ZTvn4_n40_N8S7687C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S7687C16D1Ev,_ZThn96_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S7687C16D0Ev,_ZThn96_N8S7687C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C16__8S7687C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C16D1Ev,_ZThn16_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C16D0Ev,_ZThn16_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C16__8S7687C15[] = {
  ABISELECT(112,76),
  ABISELECT(112,76),
  ABISELECT(56,40),
  ABISELECT(200,120),
  ABISELECT(120,80),
  0,
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn224_N8S7687C16D1Ev,_ZThn136_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn224_N8S7687C16D0Ev,_ZThn136_N8S7687C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__A2__8S7687C16__8S7687C15[] = {
  ABISELECT(-224,-136),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A__8S7687C15[] = {
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7687C6D1Ev,_ZThn24_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7687C6D0Ev,_ZThn24_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__A__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C13D1Ev();
extern void _ZN8S7687C13D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__8S7687C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__8S7687C15[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C13__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C13__8S7687C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C13__8S7687C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C13__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A2__8S7687C15[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__A2__8S7687C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,80),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
static  VTT_ENTRY vtt_S7687C15[] = {
  {&(_ZTV8S7687C15[9]),  9,159},
  {&(_tg__ZTV8S7687C16__8S7687C15[9]),  9,21},
  {&(_tg__ZTV7S7687C68S7687C16__A1__8S7687C15[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C16__A1__8S7687C15[7]),  7,13},
  {&(_tg__ZTV8S7687C128S7687C16__8S7687C15[14]),  14,23},
  {&(_tg__ZTV8S7687C128S7687C16__8S7687C15[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C128S7687C16__8S7687C15[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C128S7687C16__8S7687C15[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C128S7687C16__8S7687C15[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C16__8S7687C15[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C16__8S7687C15[10]),  10,17},
  {&(_tg__ZTV7S7687C7__8S7687C16__8S7687C15[7]),  7,13},
  {&(_tg__ZTV8S7687C13__8S7687C16__8S7687C15[22]),  22,33},
  {&(_tg__ZTV7S7687C5__8S7687C16__8S7687C15[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C16__8S7687C15[10]),  10,17},
  {&(_tg__ZTV7S7687C68S7687C13__8S7687C16__8S7687C15[3]),  3,12},
  {&(_tg__ZTV8S7688C10__8S7687C16__8S7687C15[3]),  3,5},
  {&(_tg__ZTV8S7687C12__8S7687C16__8S7687C15[14]),  14,23},
  {&(_tg__ZTV8S7687C12__8S7687C16__8S7687C15[14]),  14,23},
  {&(_tg__ZTV7S7687C6__A2__8S7687C16__8S7687C15[11]),  11,20},
  {&(_tg__ZTV7S7687C6__A__8S7687C15[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__A__8S7687C15[7]),  7,13},
  {&(_ZTV8S7687C15[66]),  66,159},
  {&(_ZTV8S7687C15[94]),  94,159},
  {&(_ZTV8S7687C15[127]),  127,159},
  {&(_ZTV8S7687C15[127]),  127,159},
  {&(_ZTV8S7687C15[108]),  108,159},
  {&(_ZTV8S7687C15[137]),  137,159},
  {&(_ZTV8S7687C15[38]),  38,159},
  {&(_ZTV8S7687C15[38]),  38,159},
  {&(_ZTV8S7687C15[150]),  150,159},
  {&(_ZTV8S7687C15[50]),  50,159},
  {&(_tg__ZTV8S7687C13__8S7687C15[5]),  5,16},
  {&(_tg__ZTV7S7687C68S7687C13__8S7687C15[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C13__8S7687C15[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C13__8S7687C15[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C13__8S7687C15[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C13__8S7687C15[3]),  3,12},
  {&(_tg__ZTV7S7687C7__8S7687C13__8S7687C15[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C15[7]),  7,14},
  {&(_tg__ZTV7S7687C5__8S7687C15[7]),  7,14},
  {&(_tg__ZTV7S7687C6__A2__8S7687C15[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__A2__8S7687C15[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S7687C15[];
extern  VTBL_ENTRY _ZTV8S7687C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C15[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C16D0Ev,_ZThn136_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C16D1Ev,_ZThn136_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C16D0Ev,_ZThn16_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C16D1Ev,_ZThn16_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7687C16D0Ev,_ZThn64_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7687C16D1Ev,_ZThn64_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C16D0Ev,_ZThn96_N8S7687C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7687C16D0Ev,_ZThn56_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C16D1Ev,_ZThn96_N8S7687C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7687C16D1Ev,_ZThn56_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7687C12D0Ev,_ZThn120_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7687C12D1Ev,_ZThn120_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7687C12D0Ev,_ZThn40_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7687C12D0Ev,_ZThn80_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7687C12D1Ev,_ZThn40_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7687C12D1Ev,_ZThn80_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7687C6D0Ev,_ZThn24_N7S7687C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7687C6D0Ev,_ZThn56_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7687C6D1Ev,_ZThn24_N7S7687C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7687C6D1Ev,_ZThn56_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C15D0Ev,_ZTv0_n44_N8S7687C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C15D0Ev,_ZThn136_N8S7687C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C15D1Ev,_ZTv0_n44_N8S7687C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C15D1Ev,_ZThn136_N8S7687C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7687C15D0Ev,_ZTv0_n40_N8S7687C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7687C15D0Ev,_ZThn64_N8S7687C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7687C15D1Ev,_ZTv0_n40_N8S7687C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7687C15D1Ev,_ZThn64_N8S7687C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C15D0Ev,_ZThn96_N8S7687C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7687C15D0Ev,_ZThn56_N8S7687C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7687C15D1Ev,_ZThn96_N8S7687C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7687C15D1Ev,_ZThn56_N8S7687C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C15D0Ev,_ZThn16_N8S7687C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C15D1Ev,_ZThn16_N8S7687C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C15 = {  "S7687C15", // class name
  bases_S7687C15, 15,
  &(vtc_S7687C15[0]), // expected_vtbl_contents
  &(vtt_S7687C15[0]), // expected_vtt_contents
  ABISELECT(256,152), // object size
  NSPAIRA(_ZTI8S7687C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7687C15),159, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7687C15),43, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7687C1  : S7687C2 , S7687C5 , S7687C14 , S7687C11 , virtual S7687C15 {
  short s7687c1f0:8;
  int s7687c1f1[8];
  virtual void  v1(); // _ZN7S7687C12v1Ev
  virtual void  v2(); // _ZN7S7687C12v2Ev
  virtual void  v3(); // _ZN7S7687C12v3Ev
  virtual void  v4(); // _ZN7S7687C12v4Ev
  virtual void  v5(); // _ZN7S7687C12v5Ev
  virtual void  v6(); // _ZN7S7687C12v6Ev
  virtual void  v7(); // _ZN7S7687C12v7Ev
  ~S7687C1(); // tgen
  S7687C1(); // tgen
};
//SIG(1 S7687C1) C1{ BC2{ VBC3{ v8 v9 v10 v11} VBC4{ VBC3 VBC5{ VBC3 v12 v13 v14} VBC6{ VBC7{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC8{ BC3 vd v26} BC9{ VBC6 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC10{ vd m Fp[9]}} vd v36 v37 v38 v39 v40 v41 v42 Fi} BC11{ VBC4 BC3 BC12{ VBC8 VBC10 VBC6 VBC5 vd v43 v44} v45 v46 v47 v48 v49 v50 v51 Fi} VBC13{ VBC3 VBC5 BC8 BC6 v52 v53 v54 v55 Fi[2]} BC12 vd v56} BC5 BC14{ v57 v58 v59 v60 v61 v62 Fl} BC11 VBC15{ BC16{ VBC7 VBC13 BC6 VBC10 BC12 vd v63 v64 v65 FD FL:0} BC6 vd v66 v67 v68 Fi Fl} v1 v2 v3 v4 v5 v6 v7 Fs:8 Fi[8]}


void  S7687C1 ::v1(){vfunc_called(this, "_ZN7S7687C12v1Ev");}
void  S7687C1 ::v2(){vfunc_called(this, "_ZN7S7687C12v2Ev");}
void  S7687C1 ::v3(){vfunc_called(this, "_ZN7S7687C12v3Ev");}
void  S7687C1 ::v4(){vfunc_called(this, "_ZN7S7687C12v4Ev");}
void  S7687C1 ::v5(){vfunc_called(this, "_ZN7S7687C12v5Ev");}
void  S7687C1 ::v6(){vfunc_called(this, "_ZN7S7687C12v6Ev");}
void  S7687C1 ::v7(){vfunc_called(this, "_ZN7S7687C12v7Ev");}
S7687C1 ::~S7687C1(){ note_dtor("S7687C1", this);} // tgen
S7687C1 ::S7687C1(){ note_ctor("S7687C1", this);} // tgen

static void Test_S7687C1()
{
  extern Class_Descriptor cd_S7687C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,71)];
    init_test(&cd_S7687C1, buf);
    S7687C1 *dp, &lv = *(dp=new (buf) S7687C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,280), "sizeof(S7687C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7687C1)");
    /*is_ambiguous_... S7687C2::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C2*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C4::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C4*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C5 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C13::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C13*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C5 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C5*), ABISELECT(216,128), "S7687C1");
    check_base_class_offset(lv, (S7687C5*)(S7687C4*), ABISELECT(216,128), "S7687C1");
    check_base_class_offset(lv, (S7687C5*)(S7687C12*)(S7687C11*)(S7687C2*), ABISELECT(216,128), "S7687C1");
    check_base_class_offset(lv, (S7687C5*)(S7687C13*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C5*)(S7687C12*)(S7687C2*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C5*)(S7687C12*)(S7687C11*), ABISELECT(216,128), "S7687C1");
    check_base_class_offset(lv, (S7687C5*)(S7687C12*)(S7687C16*)(S7687C15*), ABISELECT(216,128), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*), ABISELECT(248,148), "S7687C1");
    check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C13*), ABISELECT(248,148), "S7687C1");
    check_base_class_offset(lv, (S7687C7*)(S7687C16*)(S7687C15*), ABISELECT(248,148), "S7687C1");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C16*)(S7687C15*), ABISELECT(248,148), "S7687C1");
    /*is_ambiguous_... S7687C15::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C7*)(S7687C6*)(S7687C15*), ABISELECT(248,148), "S7687C1");
    check_base_class_offset(lv, (S7687C6*)(S7687C4*), ABISELECT(224,132), "S7687C1");
    check_base_class_offset(lv, (S7687C6*)(S7687C9*)(S7687C4*), ABISELECT(224,132), "S7687C1");
    check_base_class_offset(lv, (S7687C6*)(S7687C12*)(S7687C11*)(S7687C2*), ABISELECT(224,132), "S7687C1");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C6*)(S7687C12*)(S7687C2*), ABISELECT(224,132), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C6*)(S7687C12*)(S7687C11*), ABISELECT(224,132), "S7687C1");
    check_base_class_offset(lv, (S7687C6*)(S7687C12*)(S7687C16*)(S7687C15*), ABISELECT(224,132), "S7687C1");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C4*), ABISELECT(112,76), "S7687C1");
    check_base_class_offset(lv, (S7687C8*)(S7687C4*), ABISELECT(112,76), "S7687C1");
    check_base_class_offset(lv, (S7687C9*)(S7687C4*), ABISELECT(120,80), "S7687C1");
    check_base_class_offset(lv, (S7687C4*)(S7687C2*), ABISELECT(112,76), "S7687C1");
    check_base_class_offset(lv, (S7687C4*)(S7687C11*)(S7687C2*), ABISELECT(112,76), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C4*)(S7687C11*), ABISELECT(112,76), "S7687C1");
    /*is_ambiguous_... S7687C11::S7687C3 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C11*)(S7687C2*), 0, "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C8 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C8*), ABISELECT(8,4), "S7687C1");
    check_base_class_offset(lv, (S7687C8*)(S7687C12*)(S7687C11*)(S7687C2*), ABISELECT(8,4), "S7687C1");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C8*)(S7687C12*)(S7687C2*), ABISELECT(8,4), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C8*)(S7687C12*)(S7687C11*), ABISELECT(8,4), "S7687C1");
    check_base_class_offset(lv, (S7687C8*)(S7687C12*)(S7687C16*)(S7687C15*), ABISELECT(8,4), "S7687C1");
    check_base_class_offset(lv, (S7688C10*)(S7687C12*)(S7687C11*)(S7687C2*), ABISELECT(264,156), "S7687C1");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7688C10*)(S7687C12*)(S7687C2*), ABISELECT(264,156), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7688C10*)(S7687C12*)(S7687C11*), ABISELECT(264,156), "S7687C1");
    check_base_class_offset(lv, (S7688C10*)(S7687C16*)(S7687C15*), ABISELECT(264,156), "S7687C1");
    check_base_class_offset(lv, (S7688C10*)(S7687C12*)(S7687C16*)(S7687C15*), ABISELECT(264,156), "S7687C1");
    check_base_class_offset(lv, (S7687C12*)(S7687C11*)(S7687C2*), ABISELECT(8,4), "S7687C1");
    check_base_class_offset(lv, (S7687C11*)(S7687C2*), 0, "S7687C1");
    check_base_class_offset(lv, (S7687C3*)(S7687C8*)(S7687C13*), ABISELECT(344,196), "S7687C1");
    check_base_class_offset(lv, (S7687C8*)(S7687C13*), ABISELECT(344,196), "S7687C1");
    check_base_class_offset(lv, (S7687C6*)(S7687C13*), ABISELECT(352,200), "S7687C1");
    check_base_class_offset(lv, (S7687C13*)(S7687C2*), ABISELECT(344,196), "S7687C1");
    check_base_class_offset(lv, (S7687C13*)(S7687C16*)(S7687C15*), ABISELECT(344,196), "S7687C1");
    /*is_ambiguous_... S7687C2::S7687C12 */ AMB_check_base_class_offset(lv, (S7687C12*)(S7687C2*), ABISELECT(24,12), "S7687C1");
    check_base_class_offset(lv, (S7687C2*), 0, "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C5 */ AMB_check_base_class_offset(lv, (S7687C5*), ABISELECT(32,16), "S7687C1");
    check_base_class_offset(lv, (S7687C14*), ABISELECT(40,20), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C3*)(S7687C11*), ABISELECT(56,28), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C12*)(S7687C11*), ABISELECT(64,32), "S7687C1");
    /*is_ambiguous_... S7687C1::S7687C11 */ AMB_check_base_class_offset(lv, (S7687C11*), ABISELECT(56,28), "S7687C1");
    /*is_ambiguous_... S7687C16::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C6*)(S7687C16*)(S7687C15*), ABISELECT(384,224), "S7687C1");
    check_base_class_offset(lv, (S7687C12*)(S7687C16*)(S7687C15*), ABISELECT(408,240), "S7687C1");
    check_base_class_offset(lv, (S7687C16*)(S7687C15*), ABISELECT(384,224), "S7687C1");
    /*is_ambiguous_... S7687C15::S7687C6 */ AMB_check_base_class_offset(lv, (S7687C6*)(S7687C15*), ABISELECT(432,256), "S7687C1");
    check_base_class_offset(lv, (S7687C15*), ABISELECT(384,224), "S7687C1");
    set_bf_and_test(lv, s7687c1f0, ABISELECT(76,40), 0, 8, 1, "S7687C1");
    set_bf_and_test(lv, s7687c1f0, ABISELECT(76,40), 0, 8, hide_sll(1LL<<7), "S7687C1");
    check_field_offset(lv, s7687c1f1, ABISELECT(80,44), "S7687C1.s7687c1f1");
    test_class_info(&lv, &cd_S7687C1);
    dp->~S7687C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7687C1(Test_S7687C1, "S7687C1", ABISELECT(464,280));

#else // __cplusplus

extern void _ZN7S7687C1C1Ev();
extern void _ZN7S7687C1D1Ev();
Name_Map name_map_S7687C1[] = {
  NSPAIR(_ZN7S7687C1C1Ev),
  NSPAIR(_ZN7S7687C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C7;
extern VTBL_ENTRY _ZTI7S7687C7[];
extern  VTBL_ENTRY _ZTV7S7687C7[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C9;
extern VTBL_ENTRY _ZTI7S7687C9[];
extern  VTBL_ENTRY _ZTV7S7687C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C9[];
extern Class_Descriptor cd_S7687C4;
extern VTBL_ENTRY _ZTI7S7687C4[];
extern  VTBL_ENTRY _ZTV7S7687C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C4[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
extern Class_Descriptor cd_S7687C11;
extern VTBL_ENTRY _ZTI8S7687C11[];
extern  VTBL_ENTRY _ZTV8S7687C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C11[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C8;
extern VTBL_ENTRY _ZTI7S7687C8[];
extern  VTBL_ENTRY _ZTV7S7687C8[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C13;
extern VTBL_ENTRY _ZTI8S7687C13[];
extern  VTBL_ENTRY _ZTV8S7687C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C13[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
extern Class_Descriptor cd_S7687C2;
extern VTBL_ENTRY _ZTI7S7687C2[];
extern  VTBL_ENTRY _ZTV7S7687C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C2[];
extern Class_Descriptor cd_S7687C5;
extern VTBL_ENTRY _ZTI7S7687C5[];
extern  VTBL_ENTRY _ZTV7S7687C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C5[];
extern Class_Descriptor cd_S7687C14;
extern VTBL_ENTRY _ZTI8S7687C14[];
extern  VTBL_ENTRY _ZTV8S7687C14[];
extern Class_Descriptor cd_S7687C3;
extern VTBL_ENTRY _ZTI7S7687C3[];
extern  VTBL_ENTRY _ZTV7S7687C3[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
extern Class_Descriptor cd_S7687C11;
extern VTBL_ENTRY _ZTI8S7687C11[];
extern  VTBL_ENTRY _ZTV8S7687C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C11[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C12;
extern VTBL_ENTRY _ZTI8S7687C12[];
extern  VTBL_ENTRY _ZTV8S7687C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C12[];
extern Class_Descriptor cd_S7687C16;
extern VTBL_ENTRY _ZTI8S7687C16[];
extern  VTBL_ENTRY _ZTV8S7687C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C16[];
extern Class_Descriptor cd_S7687C6;
extern VTBL_ENTRY _ZTI7S7687C6[];
extern  VTBL_ENTRY _ZTV7S7687C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C6[];
extern Class_Descriptor cd_S7687C15;
extern VTBL_ENTRY _ZTI8S7687C15[];
extern  VTBL_ENTRY _ZTV8S7687C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7687C15[];
static Base_Class bases_S7687C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7687C3,    ABISELECT(216,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7687C5,    ABISELECT(216,128), //bcp->offset
    202, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7687C7,    ABISELECT(248,148), //bcp->offset
    239, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7687C6,    ABISELECT(224,132), //bcp->offset
    219, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7687C3,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7687C9,    ABISELECT(120,80), //bcp->offset
    187, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7687C4,    ABISELECT(112,76), //bcp->offset
    145, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7687C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7687C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(264,156), //bcp->offset
    252, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7687C12,    ABISELECT(8,4), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7687C11,    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
    23, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7687C3,    ABISELECT(344,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7687C8,    ABISELECT(344,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7687C6,    ABISELECT(352,200), //bcp->offset
    290, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7687C13,    ABISELECT(344,196), //bcp->offset
    257, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7687C12,    ABISELECT(24,12), //bcp->offset
    55, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7687C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C5,    ABISELECT(32,16), //bcp->offset
    78, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C14,    ABISELECT(40,20), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C3,    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
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7687C12,    ABISELECT(64,32), //bcp->offset
    122, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7687C11,    ABISELECT(56,28), //bcp->offset
    100, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7687C6,    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
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7687C12,    ABISELECT(408,240), //bcp->offset
    342, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7687C16,    ABISELECT(384,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7687C6,    ABISELECT(432,256), //bcp->offset
    365, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7687C15,    ABISELECT(384,224), //bcp->offset
    302, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7687C1[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN7S7687C1D1Ev();
extern void _ZN7S7687C1D0Ev();
extern void _ZN7S7687C23v56Ev();
extern void _ZN7S7687C12v1Ev();
extern void _ZN7S7687C12v2Ev();
extern void _ZN7S7687C12v3Ev();
extern void _ZN7S7687C12v4Ev();
extern void _ZN7S7687C12v5Ev();
extern void _ZN7S7687C12v6Ev();
extern void _ZN7S7687C12v7Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C1D1Ev,_ZThn4_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S7687C1D0Ev,_ZThn4_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C1D1Ev,_ZThn12_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C1D0Ev,_ZThn12_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void _ZN8S7687C143v57Ev();
extern void _ZN8S7687C143v58Ev();
extern void _ZN8S7687C143v59Ev();
extern void _ZN8S7687C143v60Ev();
extern void _ZN8S7687C143v61Ev();
extern void _ZN8S7687C143v62Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void ABISELECT(_ZThn56_N7S7687C1D1Ev,_ZThn28_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7687C1D0Ev,_ZThn28_N7S7687C1D0Ev)();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7687C1D1Ev,_ZThn32_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7687C1D0Ev,_ZThn32_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C1D1Ev,_ZTv0_n44_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C1D1Ev,_ZThn76_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C1D0Ev,_ZTv0_n44_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C1D0Ev,_ZThn76_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
extern void ABISELECT(_ZTvn8_n88_N7S7687C1D1Ev,_ZTvn4_n44_N7S7687C1D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N7S7687C1D0Ev,_ZTvn4_n44_N7S7687C1D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C1D1Ev,_ZTv0_n44_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S7687C1D1Ev,_ZThn132_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C1D0Ev,_ZTv0_n44_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S7687C1D0Ev,_ZThn132_N7S7687C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C1D1Ev,_ZTv0_n12_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7687C1D1Ev,_ZThn148_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C1D0Ev,_ZTv0_n12_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7687C1D0Ev,_ZThn148_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S7687C1D1Ev,_ZTv0_n12_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn264_N7S7687C1D1Ev,_ZThn156_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C1D0Ev,_ZTv0_n12_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn264_N7S7687C1D0Ev,_ZThn156_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7687C1D1Ev,_ZTv0_n40_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S7687C1D1Ev,_ZThn196_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7687C1D0Ev,_ZTv0_n40_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S7687C1D0Ev,_ZThn196_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N7S7687C1D1Ev,_ZTvn4_n40_N7S7687C1D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N7S7687C1D0Ev,_ZTvn4_n40_N7S7687C1D0Ev)();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n136_N7S7687C1D1Ev,_ZTv0_n68_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S7687C1D1Ev,_ZThn224_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7687C1D0Ev,_ZTv0_n68_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S7687C1D0Ev,_ZThn224_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN8S7687C163v63Ev();
extern void _ZN8S7687C163v64Ev();
extern void _ZN8S7687C163v65Ev();
extern void _ZN8S7687C153v66Ev();
extern void _ZN8S7687C153v67Ev();
extern void _ZN8S7687C153v68Ev();
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S7687C1D1Ev,_ZThn240_N7S7687C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S7687C1D0Ev,_ZThn240_N7S7687C1D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn48_n136_N7S7687C1D1Ev,_ZTvn32_n68_N7S7687C1D1Ev)();
extern void ABISELECT(_ZTvn48_n136_N7S7687C1D0Ev,_ZTvn32_n68_N7S7687C1D0Ev)();
static  VTBL_ENTRY vtc_S7687C1[] = {
  ABISELECT(384,224),
  ABISELECT(344,196),
  ABISELECT(264,156),
  ABISELECT(8,4),
  ABISELECT(248,148),
  ABISELECT(224,132),
  ABISELECT(216,128),
  ABISELECT(216,128),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN7S7687C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C23v56Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7687C12v7Ev,
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(240,144),
  ABISELECT(216,128),
  ABISELECT(256,152),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(192,116),
  ABISELECT(192,116),
  ABISELECT(224,136),
  ABISELECT(200,120),
  ABISELECT(240,144),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN8S7687C143v57Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v58Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v59Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v60Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v61Ev,
  (VTBL_ENTRY)&_ZN8S7687C143v62Ev,
  ABISELECT(208,128),
  ABISELECT(-48,-24),
  ABISELECT(192,120),
  ABISELECT(168,104),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(56,48),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7687C1D1Ev,_ZThn28_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7687C1D0Ev,_ZThn28_N7S7687C1D0Ev),
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(200,124),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-64,-32),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-112,-76),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C1D1Ev,_ZTv0_n44_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C1D0Ev,_ZTv0_n44_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7687C1D1Ev,_ZTvn4_n44_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7687C1D0Ev,_ZTvn4_n44_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
  ABISELECT(-224,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C1D1Ev,_ZTv0_n44_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C1D0Ev,_ZTv0_n44_N7S7687C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C1D1Ev,_ZTv0_n12_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C1D0Ev,_ZTv0_n12_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
  ABISELECT(-264,-156),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C1D1Ev,_ZTv0_n12_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C1D0Ev,_ZTv0_n12_N7S7687C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-196),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-344,-196),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7687C1D1Ev,_ZTv0_n40_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7687C1D0Ev,_ZTv0_n40_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
  ABISELECT(-104,-52),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7687C1D1Ev,_ZTvn4_n40_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7687C1D0Ev,_ZTvn4_n40_N7S7687C1D0Ev),
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  ABISELECT(-384,-224),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(-376,-220),
  ABISELECT(-120,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-40,-28),
  ABISELECT(-136,-76),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7687C1D1Ev,_ZTv0_n68_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7687C1D0Ev,_ZTv0_n68_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7687C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v65Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v66Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v67Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v68Ev,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-408,-240),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-408,-240),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
  ABISELECT(-184,-108),
  ABISELECT(-432,-256),
  (VTBL_ENTRY)&(_ZTI7S7687C1[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n136_N7S7687C1D1Ev,_ZTvn32_n68_N7S7687C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n136_N7S7687C1D0Ev,_ZTvn32_n68_N7S7687C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7687C1[];
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN7S7687C2D1Ev();
extern void _ZN7S7687C2D0Ev();
extern void _ZN7S7687C23v56Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C2__7S7687C1[] = {
  ABISELECT(344,196),
  ABISELECT(264,156),
  ABISELECT(8,4),
  ABISELECT(248,148),
  ABISELECT(224,132),
  ABISELECT(216,128),
  ABISELECT(216,128),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN7S7687C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C23v56Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN8S7687C11D1Ev();
extern void _ZN8S7687C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(264,156),
  ABISELECT(8,4),
  ABISELECT(248,148),
  ABISELECT(224,132),
  ABISELECT(216,128),
  ABISELECT(216,128),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D0Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(240,144),
  ABISELECT(216,128),
  ABISELECT(256,152),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn256_N8S7687C12D1Ev,_ZThn152_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn256_N8S7687C12D0Ev,_ZThn152_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C128S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn216_N8S7687C12D1Ev,_ZThn128_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn216_N8S7687C12D0Ev,_ZThn128_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C128S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(-216,-128),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S7687C12D1Ev,_ZThn144_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S7687C12D0Ev,_ZThn144_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C128S7687C117S7687C2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C128S7687C117S7687C2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn112_N8S7687C11D1Ev,_ZThn76_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn112_N8S7687C11D0Ev,_ZThn76_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__8S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-112,-76),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C117S7687C2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn224_N8S7687C11D1Ev,_ZThn132_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn224_N8S7687C11D0Ev,_ZThn132_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(-224,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn248_N8S7687C11D1Ev,_ZThn148_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn248_N8S7687C11D0Ev,_ZThn148_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C117S7687C2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__8S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(240,144),
  ABISELECT(216,128),
  ABISELECT(256,152),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7687C11D1Ev,_ZThn156_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7687C11D0Ev,_ZThn156_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C117S7687C2__7S7687C1[] = {
  ABISELECT(-264,-156),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C127S7687C2__A1__7S7687C1[] = {
  ABISELECT(192,116),
  ABISELECT(192,116),
  ABISELECT(224,136),
  ABISELECT(200,120),
  ABISELECT(240,144),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__8S7687C127S7687C2__A1__7S7687C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S7687C12D1Ev,_ZThn144_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S7687C12D0Ev,_ZThn144_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C127S7687C2__A1__7S7687C1[] = {
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S7687C12D1Ev,_ZThn120_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S7687C12D0Ev,_ZThn120_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C127S7687C2__A1__7S7687C1[] = {
  ABISELECT(-200,-120),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S7687C12D1Ev,_ZThn136_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S7687C12D0Ev,_ZThn136_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C127S7687C2__A1__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C127S7687C2__A1__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C2D1Ev,_ZThn76_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C2D0Ev,_ZThn76_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__7S7687C2__7S7687C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-112,-76),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S7687C2D1Ev,_ZThn132_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn224_N7S7687C2D0Ev,_ZThn132_N7S7687C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C2__7S7687C1[] = {
  ABISELECT(-224,-132),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S7687C2D1Ev,_ZThn148_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S7687C2D0Ev,_ZThn148_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N7S7687C2D1Ev,_ZTvn4_n44_N7S7687C2D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N7S7687C2D0Ev,_ZTvn4_n44_N7S7687C2D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__7S7687C2__7S7687C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7687C2D1Ev,_ZTvn4_n44_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N7S7687C2D0Ev,_ZTvn4_n44_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C2D1Ev,_ZThn4_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7687C2D0Ev,_ZThn4_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C11__7S7687C2__7S7687C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(240,144),
  ABISELECT(216,128),
  ABISELECT(256,152),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7687C2D1Ev,_ZThn156_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7687C2D0Ev,_ZThn156_N7S7687C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__7S7687C2__7S7687C1[] = {
  ABISELECT(-264,-156),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N7S7687C2D1Ev,_ZTv0_n40_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn344_N7S7687C2D1Ev,_ZThn196_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7687C2D0Ev,_ZTv0_n40_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn344_N7S7687C2D0Ev,_ZThn196_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__7S7687C2__7S7687C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-196),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-344,-196),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7687C2D1Ev,_ZTv0_n40_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7687C2D0Ev,_ZTv0_n40_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N7S7687C2D1Ev,_ZTvn4_n40_N7S7687C2D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N7S7687C2D0Ev,_ZTvn4_n40_N7S7687C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__A1__7S7687C2__7S7687C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7687C2D1Ev,_ZTvn4_n40_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N7S7687C2D0Ev,_ZTvn4_n40_N7S7687C2D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C2D1Ev,_ZThn12_N7S7687C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C2D0Ev,_ZThn12_N7S7687C2D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__A1__7S7687C2__7S7687C1[] = {
  ABISELECT(192,116),
  ABISELECT(192,116),
  ABISELECT(224,136),
  ABISELECT(200,120),
  ABISELECT(240,144),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7687C2[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__A__7S7687C1[] = {
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(184,112),
  ABISELECT(184,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C3__7S7687C5__A__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C113v45Ev();
extern void _ZN8S7687C113v46Ev();
extern void _ZN8S7687C113v47Ev();
extern void _ZN8S7687C113v48Ev();
extern void _ZN8S7687C113v49Ev();
extern void _ZN8S7687C113v50Ev();
extern void _ZN8S7687C113v51Ev();
extern void _ZN8S7687C11D1Ev();
extern void _ZN8S7687C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C11__A1__7S7687C1[] = {
  ABISELECT(208,128),
  ABISELECT(-48,-24),
  ABISELECT(192,120),
  ABISELECT(168,104),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v46Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v47Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v48Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v49Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v50Ev,
  (VTBL_ENTRY)&_ZN8S7687C113v51Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C11D0Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C11__A2__7S7687C1[] = {
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(200,124),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__8S7687C128S7687C11__A2__7S7687C1[] = {
  0,
  ABISELECT(56,28),
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S7687C12D1Ev,_ZThn124_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S7687C12D0Ev,_ZThn124_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C128S7687C11__A2__7S7687C1[] = {
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7687C12D1Ev,_ZThn100_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7687C12D0Ev,_ZThn100_N8S7687C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C128S7687C11__A2__7S7687C1[] = {
  ABISELECT(-160,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZThn184_N8S7687C12D1Ev,_ZThn116_N8S7687C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void ABISELECT(_ZThn184_N8S7687C12D0Ev,_ZThn116_N8S7687C12D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C128S7687C11__A2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C128S7687C11__A2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7687C11D1Ev,_ZThn48_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7687C11D0Ev,_ZThn48_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__8S7687C11__A1__7S7687C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-56,-48),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C11__A1__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn168_N8S7687C11D1Ev,_ZThn104_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn168_N8S7687C11D0Ev,_ZThn104_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C11__A1__7S7687C1[] = {
  ABISELECT(-168,-104),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn192_N8S7687C11D1Ev,_ZThn120_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn192_N8S7687C11D0Ev,_ZThn120_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C11__A1__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__8S7687C11__A1__7S7687C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D1Ev,_ZTvn4_n44_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S7687C11D0Ev,_ZTvn4_n44_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C11__A1__7S7687C1[] = {
  ABISELECT(152,96),
  ABISELECT(152,96),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(200,124),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__A1__8S7687C11__A1__7S7687C1[] = {
  0,
  ABISELECT(48,24),
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S7687C11D1Ev,_ZThn128_N8S7687C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S7687C11D0Ev,_ZThn128_N8S7687C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C11__A1__7S7687C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7687C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C4D1Ev();
extern void _ZN7S7687C4D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN7S7687C43v36Ev();
extern void _ZN7S7687C43v37Ev();
extern void _ZN7S7687C43v38Ev();
extern void _ZN7S7687C43v39Ev();
extern void _ZN7S7687C43v40Ev();
extern void _ZN7S7687C43v41Ev();
extern void _ZN7S7687C43v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C4__7S7687C1[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v41Ev,
  (VTBL_ENTRY)&_ZN7S7687C43v42Ev,
};
extern void _ZN7S7687C9D1Ev();
extern void _ZN7S7687C9D0Ev();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C97S7687C4__7S7687C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C97S7687C4__7S7687C1[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C97S7687C4__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7687C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C4__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C4__7S7687C1[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C4__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev)();
extern void _ZN7S7687C93v27Ev();
extern void _ZN7S7687C93v28Ev();
extern void _ZN7S7687C93v29Ev();
extern void _ZN7S7687C93v30Ev();
extern void _ZN7S7687C93v31Ev();
extern void _ZN7S7687C93v32Ev();
extern void _ZN7S7687C93v33Ev();
extern void _ZN7S7687C93v34Ev();
extern void _ZN7S7687C93v35Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C9__7S7687C4__7S7687C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7687C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D1Ev,_ZThn4_N7S7687C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7687C4D0Ev,_ZThn4_N7S7687C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C93v27Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v28Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7687C93v35Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C5[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C6__7S7687C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev)() __attribute__((weak));
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C6__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN8S7687C13D1Ev();
extern void _ZN8S7687C13D0Ev();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__7S7687C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__A1__7S7687C1[] = {
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C13__A1__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(104,52),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C13__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C13__7S7687C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D1Ev,_ZThn4_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7687C13D0Ev,_ZThn4_N8S7687C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C13__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7687C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D1Ev,_ZTv0_n12_N8S7687C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C13D0Ev,_ZTv0_n12_N8S7687C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN8S7687C15D1Ev();
extern void _ZN8S7687C15D0Ev();
extern void _ZN8S7687C163v63Ev();
extern void _ZN8S7687C163v64Ev();
extern void _ZN8S7687C163v65Ev();
extern void _ZN8S7687C153v66Ev();
extern void _ZN8S7687C153v67Ev();
extern void _ZN8S7687C153v68Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C15__7S7687C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-376,-220),
  ABISELECT(-120,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-40,-28),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7687C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C15D0Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v65Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v66Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v67Ev,
  (VTBL_ENTRY)&_ZN8S7687C153v68Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN8S7687C16D1Ev();
extern void _ZN8S7687C16D0Ev();
extern void _ZN8S7687C163v63Ev();
extern void _ZN8S7687C163v64Ev();
extern void _ZN8S7687C163v65Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C168S7687C15__7S7687C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-376,-220),
  ABISELECT(-120,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-40,-28),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN8S7687C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7687C16D0Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v63Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v64Ev,
  (VTBL_ENTRY)&_ZN8S7687C163v65Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C168S7687C15__A2__7S7687C1[] = {
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C168S7687C15__A2__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void _ZN8S7687C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN8S7687C12D0Ev() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C168S7687C15__A3__7S7687C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  0,
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__8S7687C128S7687C168S7687C15__A3__7S7687C1[] = {
  0,
  ABISELECT(400,236),
  0,
  0,
  0,
  0,
  ABISELECT(400,236),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C128S7687C168S7687C15__A3__7S7687C1[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__8S7687C128S7687C168S7687C15__A3__7S7687C1[] = {
  ABISELECT(184,108),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(184,108),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C128S7687C168S7687C15__A3__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C128S7687C168S7687C15__A3__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S7687C12[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C168S7687C15__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev)();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__8S7687C168S7687C15__7S7687C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,28),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C16D1Ev,_ZTv0_n40_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C16D0Ev,_ZTv0_n40_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C168S7687C15__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7687C16D1Ev,_ZTvn4_n40_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7687C16D0Ev,_ZTvn4_n40_N8S7687C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__8S7687C168S7687C15__7S7687C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C16D1Ev,_ZTvn4_n40_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C16D0Ev,_ZTvn4_n40_N8S7687C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C168S7687C15__7S7687C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D1Ev,_ZTv0_n12_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C16D0Ev,_ZTv0_n12_N8S7687C16D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C16D1Ev,_ZThn16_N8S7687C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C16D0Ev,_ZThn16_N8S7687C16D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C12__8S7687C168S7687C15__7S7687C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-24,-16),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__A1__8S7687C168S7687C15__7S7687C1[] = {
  0,
  ABISELECT(376,220),
  0,
  0,
  0,
  0,
  ABISELECT(376,220),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A2__8S7687C168S7687C15__7S7687C1[] = {
  ABISELECT(160,92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7687C16[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C16D1Ev,_ZTv0_n44_N8S7687C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C16D0Ev,_ZTv0_n44_N8S7687C16D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void _ZN7S7687C6D1Ev();
extern void _ZN7S7687C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C15__A3__7S7687C1[] = {
  ABISELECT(-184,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7687C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__7S7687C68S7687C15__A3__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(184,108),
  ABISELECT(184,108),
  (VTBL_ENTRY)&(_ZTI7S7687C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev)();
extern void _ZN7S7687C73v15Ev();
extern void _ZN7S7687C73v16Ev();
extern void _ZN7S7687C73v17Ev();
extern void _ZN7S7687C73v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C7__8S7687C15__7S7687C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7687C73v18Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S7687C15D1Ev,_ZTv0_n40_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S7687C15D0Ev,_ZTv0_n40_N8S7687C15D0Ev)();
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C133v52Ev();
extern void _ZN8S7687C133v53Ev();
extern void _ZN8S7687C133v54Ev();
extern void _ZN8S7687C133v55Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C13__8S7687C15__7S7687C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,28),
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C15D1Ev,_ZTv0_n40_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7687C15D0Ev,_ZTv0_n40_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7687C133v55Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void _ZN7S7687C53v12Ev();
extern void _ZN7S7687C53v13Ev();
extern void _ZN7S7687C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C5__8S7687C15__7S7687C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7687C53v14Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTvn8_n80_N8S7687C15D1Ev,_ZTvn4_n40_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTvn8_n80_N8S7687C15D0Ev,_ZTvn4_n40_N8S7687C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C68S7687C13__8S7687C15__7S7687C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C15D1Ev,_ZTvn4_n40_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n80_N8S7687C15D0Ev,_ZTvn4_n40_N8S7687C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S7687C15__7S7687C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D1Ev,_ZTv0_n12_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7687C15D0Ev,_ZTv0_n12_N8S7687C15D0Ev),
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7687C15D1Ev,_ZThn16_N8S7687C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7687C15D0Ev,_ZThn16_N8S7687C15D0Ev)() __attribute__((weak));
extern void _ZN7S7687C83v26Ev();
extern void _ZN8S7687C123v43Ev();
extern void _ZN8S7687C123v44Ev();
static  VTBL_ENTRY _tg__ZTV8S7687C128S7687C16__8S7687C15__7S7687C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-160,-92),
  ABISELECT(-184,-108),
  ABISELECT(-144,-84),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-24,-16),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-400,-236),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v43Ev,
  (VTBL_ENTRY)&_ZN8S7687C123v44Ev,
};
extern void _ZN7S7687C32v8Ev();
extern void _ZN7S7687C32v9Ev();
extern void _ZN7S7687C33v10Ev();
extern void _ZN7S7687C33v11Ev();
extern void ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev)();
extern void _ZN7S7687C83v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7687C8__A1__8S7687C15__7S7687C1[] = {
  0,
  ABISELECT(376,220),
  0,
  0,
  0,
  0,
  ABISELECT(376,220),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7687C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7687C33v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev),
  (VTBL_ENTRY)&_ZN7S7687C83v26Ev,
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZTv0_n88_N8S7687C15D1Ev,_ZTv0_n44_N8S7687C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7687C15D0Ev,_ZTv0_n44_N8S7687C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A2__8S7687C15__7S7687C1[] = {
  ABISELECT(160,92),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C15D1Ev,_ZTv0_n44_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7687C15D0Ev,_ZTv0_n44_N8S7687C15D0Ev),
};
extern void _ZN7S7687C63v19Ev();
extern void _ZN7S7687C63v20Ev();
extern void _ZN7S7687C63v21Ev();
extern void _ZN7S7687C63v22Ev();
extern void _ZN7S7687C63v23Ev();
extern void _ZN7S7687C63v24Ev();
extern void _ZN7S7687C63v25Ev();
extern void ABISELECT(_ZThn48_N8S7687C15D1Ev,_ZThn32_N8S7687C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S7687C15D0Ev,_ZThn32_N8S7687C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7687C6__A__8S7687C15__7S7687C1[] = {
  ABISELECT(-184,-108),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7687C15[0]),
  (VTBL_ENTRY)&_ZN7S7687C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v22Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v23Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v24Ev,
  (VTBL_ENTRY)&_ZN7S7687C63v25Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7687C15D1Ev,_ZThn32_N8S7687C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7687C15D0Ev,_ZThn32_N8S7687C15D0Ev),
};
static  VTT_ENTRY vtt_S7687C1[] = {
  {&(_ZTV7S7687C1[11]),  11,377},
  {&(_tg__ZTV7S7687C2__7S7687C1[10]),  10,24},
  {&(_tg__ZTV8S7687C117S7687C2__7S7687C1[9]),  9,22},
  {&(_tg__ZTV8S7687C128S7687C117S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV8S7687C128S7687C117S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C128S7687C117S7687C2__7S7687C1[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C128S7687C117S7687C2__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C128S7687C117S7687C2__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C117S7687C2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C117S7687C2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C4__8S7687C117S7687C2__7S7687C1[28]),  28,42},
  {&(_tg__ZTV7S7687C5__8S7687C117S7687C2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C117S7687C2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C117S7687C2__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C117S7687C2__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C97S7687C4__8S7687C117S7687C2__7S7687C1[4]),  4,15},
  {&(_tg__ZTV8S7687C12__8S7687C117S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV8S7687C12__8S7687C117S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S7687C117S7687C2__7S7687C1[3]),  3,5},
  {&(_tg__ZTV8S7687C127S7687C2__A1__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C8__8S7687C127S7687C2__A1__7S7687C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7687C127S7687C2__A1__7S7687C1[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C127S7687C2__A1__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C127S7687C2__A1__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C127S7687C2__A1__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C127S7687C2__A1__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__7S7687C2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C4__7S7687C2__7S7687C1[28]),  28,42},
  {&(_tg__ZTV7S7687C5__7S7687C2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C6__7S7687C2__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C2__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C97S7687C4__7S7687C2__7S7687C1[4]),  4,15},
  {&(_tg__ZTV8S7687C128S7687C11__7S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV8S7687C128S7687C11__7S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__7S7687C2__7S7687C1[3]),  3,5},
  {&(_tg__ZTV8S7687C13__7S7687C2__7S7687C1[22]),  22,33},
  {&(_tg__ZTV7S7687C68S7687C13__A1__7S7687C2__7S7687C1[3]),  3,12},
  {&(_tg__ZTV8S7687C12__A1__7S7687C2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C5__A__7S7687C1[7]),  7,14},
  {&(_tg__ZTV7S7687C3__7S7687C5__A__7S7687C1[6]),  6,10},
  {&(_tg__ZTV8S7687C11__A1__7S7687C1[9]),  9,22},
  {&(_tg__ZTV8S7687C128S7687C11__A2__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C8__8S7687C128S7687C11__A2__7S7687C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7687C128S7687C11__A2__7S7687C1[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C128S7687C11__A2__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C128S7687C11__A2__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C11__A2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C11__A2__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C4__8S7687C11__A1__7S7687C1[28]),  28,42},
  {&(_tg__ZTV7S7687C5__8S7687C11__A1__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C11__A1__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C11__A1__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C11__A1__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C97S7687C4__8S7687C11__A1__7S7687C1[4]),  4,15},
  {&(_tg__ZTV8S7687C12__8S7687C11__A1__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C8__A1__8S7687C11__A1__7S7687C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7687C11__A1__7S7687C1[3]),  3,5},
  {&(_ZTV7S7687C1[212]),  212,377},
  {&(_ZTV7S7687C1[173]),  173,377},
  {&(_ZTV7S7687C1[212]),  212,377},
  {&(_ZTV7S7687C1[230]),  230,377},
  {&(_ZTV7S7687C1[246]),  246,377},
  {&(_ZTV7S7687C1[191]),  191,377},
  {&(_ZTV7S7687C1[46]),  46,377},
  {&(_ZTV7S7687C1[46]),  46,377},
  {&(_ZTV7S7687C1[255]),  255,377},
  {&(_ZTV7S7687C1[279]),  279,377},
  {&(_ZTV7S7687C1[293]),  293,377},
  {&(_ZTV7S7687C1[69]),  69,377},
  {&(_ZTV7S7687C1[85]),  85,377},
  {&(_ZTV7S7687C1[109]),  109,377},
  {&(_ZTV7S7687C1[136]),  136,377},
  {&(_ZTV7S7687C1[327]),  327,377},
  {&(_ZTV7S7687C1[356]),  356,377},
  {&(_ZTV7S7687C1[368]),  368,377},
  {&(_tg__ZTV7S7687C4__7S7687C1[6]),  6,20},
  {&(_tg__ZTV7S7687C97S7687C4__7S7687C1[4]),  4,15},
  {&(_tg__ZTV7S7687C6__7S7687C97S7687C4__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C97S7687C4__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C5__7S7687C4__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__7S7687C4__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C6__7S7687C4__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__7S7687C4__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C9__7S7687C4__7S7687C1[4]),  4,15},
  {&(_tg__ZTV7S7687C5__7S7687C1[7]),  7,14},
  {&(_tg__ZTV7S7687C5__7S7687C1[7]),  7,14},
  {&(_tg__ZTV7S7687C6__7S7687C1[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C6__7S7687C1[7]),  7,13},
  {&(_tg__ZTV8S7687C13__7S7687C1[5]),  5,16},
  {&(_tg__ZTV7S7687C68S7687C13__A1__7S7687C1[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C13__A1__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C13__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C13__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C6__8S7687C13__7S7687C1[3]),  3,12},
  {&(_tg__ZTV7S7687C7__8S7687C13__7S7687C1[7]),  7,13},
  {&(_tg__ZTV8S7687C15__7S7687C1[9]),  9,24},
  {&(_tg__ZTV8S7687C168S7687C15__7S7687C1[9]),  9,21},
  {&(_tg__ZTV7S7687C68S7687C168S7687C15__A2__7S7687C1[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C168S7687C15__A2__7S7687C1[7]),  7,13},
  {&(_tg__ZTV8S7687C128S7687C168S7687C15__A3__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C8__8S7687C128S7687C168S7687C15__A3__7S7687C1[8]),  8,15},
  {&(_tg__ZTV8S7688C10__8S7687C128S7687C168S7687C15__A3__7S7687C1[3]),  3,5},
  {&(_tg__ZTV7S7687C6__8S7687C128S7687C168S7687C15__A3__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C7__8S7687C128S7687C168S7687C15__A3__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C168S7687C15__A3__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C128S7687C168S7687C15__A3__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C7__8S7687C168S7687C15__7S7687C1[7]),  7,13},
  {&(_tg__ZTV8S7687C13__8S7687C168S7687C15__7S7687C1[22]),  22,33},
  {&(_tg__ZTV7S7687C5__8S7687C168S7687C15__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C168S7687C15__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C68S7687C13__8S7687C168S7687C15__7S7687C1[3]),  3,12},
  {&(_tg__ZTV8S7688C10__8S7687C168S7687C15__7S7687C1[3]),  3,5},
  {&(_tg__ZTV8S7687C12__8S7687C168S7687C15__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C8__A1__8S7687C168S7687C15__7S7687C1[8]),  8,15},
  {&(_tg__ZTV7S7687C6__A2__8S7687C168S7687C15__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C68S7687C15__A3__7S7687C1[3]),  3,12},
  {&(_tg__ZTV7S7687C7__7S7687C68S7687C15__A3__7S7687C1[7]),  7,13},
  {&(_tg__ZTV7S7687C7__8S7687C15__7S7687C1[7]),  7,13},
  {&(_tg__ZTV8S7687C13__8S7687C15__7S7687C1[22]),  22,33},
  {&(_tg__ZTV7S7687C5__8S7687C15__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C5__8S7687C15__7S7687C1[10]),  10,17},
  {&(_tg__ZTV7S7687C68S7687C13__8S7687C15__7S7687C1[3]),  3,12},
  {&(_tg__ZTV8S7688C10__8S7687C15__7S7687C1[3]),  3,5},
  {&(_tg__ZTV8S7687C128S7687C16__8S7687C15__7S7687C1[14]),  14,23},
  {&(_tg__ZTV7S7687C8__A1__8S7687C15__7S7687C1[8]),  8,15},
  {&(_tg__ZTV7S7687C6__A2__8S7687C15__7S7687C1[11]),  11,20},
  {&(_tg__ZTV7S7687C6__A__8S7687C15__7S7687C1[3]),  3,12},
};
extern VTBL_ENTRY _ZTI7S7687C1[];
extern  VTBL_ENTRY _ZTV7S7687C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7687C1[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C15D0Ev,_ZTv0_n28_N8S7687C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C15D0Ev,_ZThn16_N8S7687C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C15D1Ev,_ZTv0_n28_N8S7687C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C15D1Ev,_ZThn16_N8S7687C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C16D0Ev,_ZTv0_n28_N8S7687C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C16D0Ev,_ZThn16_N8S7687C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C16D1Ev,_ZTv0_n28_N8S7687C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7687C16D1Ev,_ZThn16_N8S7687C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D0Ev,_ZTv0_n12_N7S7687C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D0Ev,_ZThn16_N7S7687C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C6D1Ev,_ZTv0_n12_N7S7687C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C6D1Ev,_ZThn16_N7S7687C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D0Ev,_ZTv0_n12_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D0Ev,_ZThn72_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C4D1Ev,_ZTv0_n12_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7687C4D1Ev,_ZThn72_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D0Ev,_ZTv0_n44_N7S7687C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D0Ev,_ZThn56_N7S7687C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C4D1Ev,_ZTv0_n44_N7S7687C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C4D1Ev,_ZThn56_N7S7687C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D0Ev,_ZTv0_n12_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D0Ev,_ZThn68_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C9D1Ev,_ZTv0_n12_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7687C9D1Ev,_ZThn68_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D0Ev,_ZTv0_n44_N7S7687C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D0Ev,_ZThn52_N7S7687C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C9D1Ev,_ZTv0_n44_N7S7687C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7687C9D1Ev,_ZThn52_N7S7687C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7687C2D0Ev,_ZTv0_n40_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7687C2D0Ev,_ZThn196_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7687C2D1Ev,_ZTv0_n40_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7687C2D1Ev,_ZThn196_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7687C2D0Ev,_ZTv0_n28_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C2D0Ev,_ZThn12_N7S7687C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7687C2D0Ev,_ZThn4_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7687C2D1Ev,_ZTv0_n28_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C2D1Ev,_ZThn12_N7S7687C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7687C2D1Ev,_ZThn4_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C2D0Ev,_ZTv0_n12_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7687C2D0Ev,_ZThn156_N7S7687C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7687C2D0Ev,_ZThn148_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C2D1Ev,_ZTv0_n12_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7687C2D1Ev,_ZThn156_N7S7687C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7687C2D1Ev,_ZThn148_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C2D0Ev,_ZTv0_n44_N7S7687C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7687C2D0Ev,_ZThn132_N7S7687C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C2D0Ev,_ZThn76_N7S7687C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C2D1Ev,_ZTv0_n44_N7S7687C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7687C2D1Ev,_ZThn132_N7S7687C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C2D1Ev,_ZThn76_N7S7687C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C11D0Ev,_ZTv0_n28_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D0Ev,_ZThn4_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C11D1Ev,_ZTv0_n28_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7687C11D1Ev,_ZThn4_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C11D0Ev,_ZTv0_n12_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7687C11D0Ev,_ZThn128_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7687C11D0Ev,_ZThn120_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7687C11D0Ev,_ZThn156_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7687C11D0Ev,_ZThn148_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C11D1Ev,_ZTv0_n12_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7687C11D1Ev,_ZThn128_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7687C11D1Ev,_ZThn120_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7687C11D1Ev,_ZThn156_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7687C11D1Ev,_ZThn148_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C11D0Ev,_ZTv0_n44_N8S7687C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C11D0Ev,_ZThn104_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7687C11D0Ev,_ZThn48_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C11D0Ev,_ZThn132_N8S7687C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7687C11D0Ev,_ZThn76_N8S7687C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C11D1Ev,_ZTv0_n44_N8S7687C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7687C11D1Ev,_ZThn104_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7687C11D1Ev,_ZThn48_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C11D1Ev,_ZThn132_N8S7687C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7687C11D1Ev,_ZThn76_N8S7687C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D0Ev,_ZTv0_n44_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C12D0Ev,_ZThn100_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7687C12D0Ev,_ZThn120_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7687C12D0Ev,_ZThn128_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7687C12D1Ev,_ZTv0_n44_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7687C12D1Ev,_ZThn100_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7687C12D1Ev,_ZThn120_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7687C12D1Ev,_ZThn128_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D0Ev,_ZTv0_n12_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7687C12D0Ev,_ZThn116_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7687C12D0Ev,_ZThn124_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C12D0Ev,_ZThn136_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7687C12D0Ev,_ZThn144_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7687C12D0Ev,_ZThn144_N8S7687C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7687C12D0Ev,_ZThn152_N8S7687C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7687C12D1Ev,_ZTv0_n12_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7687C12D1Ev,_ZThn116_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7687C12D1Ev,_ZThn124_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7687C12D1Ev,_ZThn136_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7687C12D1Ev,_ZThn144_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7687C12D1Ev,_ZThn144_N8S7687C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7687C12D1Ev,_ZThn152_N8S7687C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D0Ev,_ZTv0_n28_N8S7687C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  (VTBL_ENTRY)_ZN8S7687C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7687C12D1Ev,_ZTv0_n28_N8S7687C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  (VTBL_ENTRY)_ZN8S7687C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7687C1D0Ev,_ZTv0_n68_N7S7687C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7687C1D0Ev,_ZThn224_N7S7687C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7687C1D1Ev,_ZTv0_n68_N7S7687C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7687C1D1Ev,_ZThn224_N7S7687C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7687C1D0Ev,_ZTv0_n40_N7S7687C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7687C1D0Ev,_ZThn196_N7S7687C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7687C1D1Ev,_ZTv0_n40_N7S7687C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7687C1D1Ev,_ZThn196_N7S7687C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C1D0Ev,_ZTv0_n12_N7S7687C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7687C1D0Ev,_ZThn156_N7S7687C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7687C1D0Ev,_ZThn148_N7S7687C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7687C1D1Ev,_ZTv0_n12_N7S7687C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7687C1D1Ev,_ZThn156_N7S7687C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7687C1D1Ev,_ZThn148_N7S7687C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C1D0Ev,_ZTv0_n44_N7S7687C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7687C1D0Ev,_ZThn132_N7S7687C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C1D0Ev,_ZThn76_N7S7687C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7687C1D1Ev,_ZTv0_n44_N7S7687C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7687C1D1Ev,_ZThn132_N7S7687C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7687C1D1Ev,_ZThn76_N7S7687C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7687C1D0Ev,_ZTv0_n28_N7S7687C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7687C1D0Ev,_ZThn240_N7S7687C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7687C1D0Ev,_ZThn32_N7S7687C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C1D0Ev,_ZThn12_N7S7687C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7687C1D0Ev,_ZThn4_N7S7687C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7687C1D1Ev,_ZTv0_n28_N7S7687C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7687C1D1Ev,_ZThn240_N7S7687C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7687C1D1Ev,_ZThn32_N7S7687C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7687C1D1Ev,_ZThn12_N7S7687C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7687C1D1Ev,_ZThn4_N7S7687C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7687C1 = {  "S7687C1", // class name
  bases_S7687C1, 30,
  &(vtc_S7687C1[0]), // expected_vtbl_contents
  &(vtt_S7687C1[0]), // expected_vtt_contents
  ABISELECT(464,280), // object size
  NSPAIRA(_ZTI7S7687C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7687C1),377, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7687C1),127, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4306C3_nt  {
  virtual  ~S4306C3_nt(); // _ZN10S4306C3_ntD1Ev
  virtual void  v19(); // _ZN10S4306C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4306C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4306C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4306C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4306C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4306C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4306C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4306C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4306C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4306C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4306C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4306C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4306C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4306C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4306C3_nt3v33Ev
  virtual void  v34(); // _ZN10S4306C3_nt3v34Ev
  virtual void  v35(); // _ZN10S4306C3_nt3v35Ev
  virtual void  v36(); // _ZN10S4306C3_nt3v36Ev
  virtual void  v37(); // _ZN10S4306C3_nt3v37Ev
  virtual void  v38(); // _ZN10S4306C3_nt3v38Ev
  virtual void  v39(); // _ZN10S4306C3_nt3v39Ev
  virtual void  v40(); // _ZN10S4306C3_nt3v40Ev
  virtual void  v41(); // _ZN10S4306C3_nt3v41Ev
  virtual void  v42(); // _ZN10S4306C3_nt3v42Ev
  virtual void  v43(); // _ZN10S4306C3_nt3v43Ev
  virtual void  v44(); // _ZN10S4306C3_nt3v44Ev
  S4306C3_nt(); // tgen
};
//SIG(-1 S4306C3_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}


 S4306C3_nt ::~S4306C3_nt(){ note_dtor("S4306C3_nt", this);}
void  S4306C3_nt ::v19(){vfunc_called(this, "_ZN10S4306C3_nt3v19Ev");}
void  S4306C3_nt ::v20(){vfunc_called(this, "_ZN10S4306C3_nt3v20Ev");}
void  S4306C3_nt ::v21(){vfunc_called(this, "_ZN10S4306C3_nt3v21Ev");}
void  S4306C3_nt ::v22(){vfunc_called(this, "_ZN10S4306C3_nt3v22Ev");}
void  S4306C3_nt ::v23(){vfunc_called(this, "_ZN10S4306C3_nt3v23Ev");}
void  S4306C3_nt ::v24(){vfunc_called(this, "_ZN10S4306C3_nt3v24Ev");}
void  S4306C3_nt ::v25(){vfunc_called(this, "_ZN10S4306C3_nt3v25Ev");}
void  S4306C3_nt ::v26(){vfunc_called(this, "_ZN10S4306C3_nt3v26Ev");}
void  S4306C3_nt ::v27(){vfunc_called(this, "_ZN10S4306C3_nt3v27Ev");}
void  S4306C3_nt ::v28(){vfunc_called(this, "_ZN10S4306C3_nt3v28Ev");}
void  S4306C3_nt ::v29(){vfunc_called(this, "_ZN10S4306C3_nt3v29Ev");}
void  S4306C3_nt ::v30(){vfunc_called(this, "_ZN10S4306C3_nt3v30Ev");}
void  S4306C3_nt ::v31(){vfunc_called(this, "_ZN10S4306C3_nt3v31Ev");}
void  S4306C3_nt ::v32(){vfunc_called(this, "_ZN10S4306C3_nt3v32Ev");}
void  S4306C3_nt ::v33(){vfunc_called(this, "_ZN10S4306C3_nt3v33Ev");}
void  S4306C3_nt ::v34(){vfunc_called(this, "_ZN10S4306C3_nt3v34Ev");}
void  S4306C3_nt ::v35(){vfunc_called(this, "_ZN10S4306C3_nt3v35Ev");}
void  S4306C3_nt ::v36(){vfunc_called(this, "_ZN10S4306C3_nt3v36Ev");}
void  S4306C3_nt ::v37(){vfunc_called(this, "_ZN10S4306C3_nt3v37Ev");}
void  S4306C3_nt ::v38(){vfunc_called(this, "_ZN10S4306C3_nt3v38Ev");}
void  S4306C3_nt ::v39(){vfunc_called(this, "_ZN10S4306C3_nt3v39Ev");}
void  S4306C3_nt ::v40(){vfunc_called(this, "_ZN10S4306C3_nt3v40Ev");}
void  S4306C3_nt ::v41(){vfunc_called(this, "_ZN10S4306C3_nt3v41Ev");}
void  S4306C3_nt ::v42(){vfunc_called(this, "_ZN10S4306C3_nt3v42Ev");}
void  S4306C3_nt ::v43(){vfunc_called(this, "_ZN10S4306C3_nt3v43Ev");}
void  S4306C3_nt ::v44(){vfunc_called(this, "_ZN10S4306C3_nt3v44Ev");}
S4306C3_nt ::S4306C3_nt(){ note_ctor("S4306C3_nt", this);} // tgen

//skip512 S4306C3_nt

#else // __cplusplus

extern void _ZN10S4306C3_ntC1Ev();
extern void _ZN10S4306C3_ntD1Ev();
Name_Map name_map_S4306C3_nt[] = {
  NSPAIR(_ZN10S4306C3_ntC1Ev),
  NSPAIR(_ZN10S4306C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4306C3_nt[];
extern void _ZN10S4306C3_ntD1Ev();
extern void _ZN10S4306C3_ntD0Ev();
extern void _ZN10S4306C3_nt3v19Ev();
extern void _ZN10S4306C3_nt3v20Ev();
extern void _ZN10S4306C3_nt3v21Ev();
extern void _ZN10S4306C3_nt3v22Ev();
extern void _ZN10S4306C3_nt3v23Ev();
extern void _ZN10S4306C3_nt3v24Ev();
extern void _ZN10S4306C3_nt3v25Ev();
extern void _ZN10S4306C3_nt3v26Ev();
extern void _ZN10S4306C3_nt3v27Ev();
extern void _ZN10S4306C3_nt3v28Ev();
extern void _ZN10S4306C3_nt3v29Ev();
extern void _ZN10S4306C3_nt3v30Ev();
extern void _ZN10S4306C3_nt3v31Ev();
extern void _ZN10S4306C3_nt3v32Ev();
extern void _ZN10S4306C3_nt3v33Ev();
extern void _ZN10S4306C3_nt3v34Ev();
extern void _ZN10S4306C3_nt3v35Ev();
extern void _ZN10S4306C3_nt3v36Ev();
extern void _ZN10S4306C3_nt3v37Ev();
extern void _ZN10S4306C3_nt3v38Ev();
extern void _ZN10S4306C3_nt3v39Ev();
extern void _ZN10S4306C3_nt3v40Ev();
extern void _ZN10S4306C3_nt3v41Ev();
extern void _ZN10S4306C3_nt3v42Ev();
extern void _ZN10S4306C3_nt3v43Ev();
extern void _ZN10S4306C3_nt3v44Ev();
static  VTBL_ENTRY vtc_S4306C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4306C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4306C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v44Ev,
};
extern VTBL_ENTRY _ZTI10S4306C3_nt[];
VTBL_ENTRY *P__ZTI10S4306C3_nt = _ZTI10S4306C3_nt; 
extern  VTBL_ENTRY _ZTV10S4306C3_nt[];
Class_Descriptor cd_S4306C3_nt = {  "S4306C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4306C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4306C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4306C3_nt),30, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4306C2_nt  : S4306C3_nt {
  void *s4306c2f0[2];
  int s4306c2f1[4];
  ::S15502C12_nt s4306c2f2;
  void *s4306c2f3;
  char s4306c2f4;
  void *s4306c2f5;
  virtual  ~S4306C2_nt(); // _ZN10S4306C2_ntD1Ev
  virtual void  v45(); // _ZN10S4306C2_nt3v45Ev
  virtual void  v46(); // _ZN10S4306C2_nt3v46Ev
  virtual void  v47(); // _ZN10S4306C2_nt3v47Ev
  virtual void  v48(); // _ZN10S4306C2_nt3v48Ev
  virtual void  v49(); // _ZN10S4306C2_nt3v49Ev
  virtual void  v50(); // _ZN10S4306C2_nt3v50Ev
  virtual void  v51(); // _ZN10S4306C2_nt3v51Ev
  virtual void  v52(); // _ZN10S4306C2_nt3v52Ev
  virtual void  v53(); // _ZN10S4306C2_nt3v53Ev
  virtual void  v54(); // _ZN10S4306C2_nt3v54Ev
  virtual void  v55(); // _ZN10S4306C2_nt3v55Ev
  virtual void  v56(); // _ZN10S4306C2_nt3v56Ev
  virtual void  v57(); // _ZN10S4306C2_nt3v57Ev
  virtual void  v58(); // _ZN10S4306C2_nt3v58Ev
  S4306C2_nt(); // tgen
};
//SIG(-1 S4306C2_nt) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2] Fi[4] FC3{ Fi[2]} Fp Fc Fp}


 S4306C2_nt ::~S4306C2_nt(){ note_dtor("S4306C2_nt", this);}
void  S4306C2_nt ::v45(){vfunc_called(this, "_ZN10S4306C2_nt3v45Ev");}
void  S4306C2_nt ::v46(){vfunc_called(this, "_ZN10S4306C2_nt3v46Ev");}
void  S4306C2_nt ::v47(){vfunc_called(this, "_ZN10S4306C2_nt3v47Ev");}
void  S4306C2_nt ::v48(){vfunc_called(this, "_ZN10S4306C2_nt3v48Ev");}
void  S4306C2_nt ::v49(){vfunc_called(this, "_ZN10S4306C2_nt3v49Ev");}
void  S4306C2_nt ::v50(){vfunc_called(this, "_ZN10S4306C2_nt3v50Ev");}
void  S4306C2_nt ::v51(){vfunc_called(this, "_ZN10S4306C2_nt3v51Ev");}
void  S4306C2_nt ::v52(){vfunc_called(this, "_ZN10S4306C2_nt3v52Ev");}
void  S4306C2_nt ::v53(){vfunc_called(this, "_ZN10S4306C2_nt3v53Ev");}
void  S4306C2_nt ::v54(){vfunc_called(this, "_ZN10S4306C2_nt3v54Ev");}
void  S4306C2_nt ::v55(){vfunc_called(this, "_ZN10S4306C2_nt3v55Ev");}
void  S4306C2_nt ::v56(){vfunc_called(this, "_ZN10S4306C2_nt3v56Ev");}
void  S4306C2_nt ::v57(){vfunc_called(this, "_ZN10S4306C2_nt3v57Ev");}
void  S4306C2_nt ::v58(){vfunc_called(this, "_ZN10S4306C2_nt3v58Ev");}
S4306C2_nt ::S4306C2_nt(){ note_ctor("S4306C2_nt", this);} // tgen

//skip512 S4306C2_nt

#else // __cplusplus

extern void _ZN10S4306C2_ntC1Ev();
extern void _ZN10S4306C2_ntD1Ev();
Name_Map name_map_S4306C2_nt[] = {
  NSPAIR(_ZN10S4306C2_ntC1Ev),
  NSPAIR(_ZN10S4306C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4306C3_nt;
extern VTBL_ENTRY _ZTI10S4306C3_nt[];
extern  VTBL_ENTRY _ZTV10S4306C3_nt[];
static Base_Class bases_S4306C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4306C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4306C2_nt[];
extern void _ZN10S4306C2_ntD1Ev();
extern void _ZN10S4306C2_ntD0Ev();
extern void _ZN10S4306C3_nt3v19Ev();
extern void _ZN10S4306C3_nt3v20Ev();
extern void _ZN10S4306C3_nt3v21Ev();
extern void _ZN10S4306C3_nt3v22Ev();
extern void _ZN10S4306C3_nt3v23Ev();
extern void _ZN10S4306C3_nt3v24Ev();
extern void _ZN10S4306C3_nt3v25Ev();
extern void _ZN10S4306C3_nt3v26Ev();
extern void _ZN10S4306C3_nt3v27Ev();
extern void _ZN10S4306C3_nt3v28Ev();
extern void _ZN10S4306C3_nt3v29Ev();
extern void _ZN10S4306C3_nt3v30Ev();
extern void _ZN10S4306C3_nt3v31Ev();
extern void _ZN10S4306C3_nt3v32Ev();
extern void _ZN10S4306C3_nt3v33Ev();
extern void _ZN10S4306C3_nt3v34Ev();
extern void _ZN10S4306C3_nt3v35Ev();
extern void _ZN10S4306C3_nt3v36Ev();
extern void _ZN10S4306C3_nt3v37Ev();
extern void _ZN10S4306C3_nt3v38Ev();
extern void _ZN10S4306C3_nt3v39Ev();
extern void _ZN10S4306C3_nt3v40Ev();
extern void _ZN10S4306C3_nt3v41Ev();
extern void _ZN10S4306C3_nt3v42Ev();
extern void _ZN10S4306C3_nt3v43Ev();
extern void _ZN10S4306C3_nt3v44Ev();
extern void _ZN10S4306C2_nt3v45Ev();
extern void _ZN10S4306C2_nt3v46Ev();
extern void _ZN10S4306C2_nt3v47Ev();
extern void _ZN10S4306C2_nt3v48Ev();
extern void _ZN10S4306C2_nt3v49Ev();
extern void _ZN10S4306C2_nt3v50Ev();
extern void _ZN10S4306C2_nt3v51Ev();
extern void _ZN10S4306C2_nt3v52Ev();
extern void _ZN10S4306C2_nt3v53Ev();
extern void _ZN10S4306C2_nt3v54Ev();
extern void _ZN10S4306C2_nt3v55Ev();
extern void _ZN10S4306C2_nt3v56Ev();
extern void _ZN10S4306C2_nt3v57Ev();
extern void _ZN10S4306C2_nt3v58Ev();
static  VTBL_ENTRY vtc_S4306C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4306C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4306C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v58Ev,
};
extern VTBL_ENTRY _ZTI10S4306C2_nt[];
VTBL_ENTRY *P__ZTI10S4306C2_nt = _ZTI10S4306C2_nt; 
extern  VTBL_ENTRY _ZTV10S4306C2_nt[];
Class_Descriptor cd_S4306C2_nt = {  "S4306C2_nt", // class name
  bases_S4306C2_nt, 1,
  &(vtc_S4306C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI10S4306C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4306C2_nt),44, //virtual function table var
  2, // 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  S4306C5_nt  {
  void *s4306c5f0;
  char s4306c5f1[32];
  int s4306c5f2[6];
  char s4306c5f3;
  int s4306c5f4[2];
  virtual  ~S4306C5_nt(); // _ZN10S4306C5_ntD1Ev
  virtual void  v59(); // _ZN10S4306C5_nt3v59Ev
  virtual void  v60(); // _ZN10S4306C5_nt3v60Ev
  S4306C5_nt(); // tgen
};
//SIG(-1 S4306C5_nt) C1{ vd v1 v2 Fp Fc[32] Fi[6] Fc Fi[2]}


 S4306C5_nt ::~S4306C5_nt(){ note_dtor("S4306C5_nt", this);}
void  S4306C5_nt ::v59(){vfunc_called(this, "_ZN10S4306C5_nt3v59Ev");}
void  S4306C5_nt ::v60(){vfunc_called(this, "_ZN10S4306C5_nt3v60Ev");}
S4306C5_nt ::S4306C5_nt(){ note_ctor("S4306C5_nt", this);} // tgen

//skip512 S4306C5_nt

#else // __cplusplus

extern void _ZN10S4306C5_ntC1Ev();
extern void _ZN10S4306C5_ntD1Ev();
Name_Map name_map_S4306C5_nt[] = {
  NSPAIR(_ZN10S4306C5_ntC1Ev),
  NSPAIR(_ZN10S4306C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4306C5_nt[];
extern void _ZN10S4306C5_ntD1Ev();
extern void _ZN10S4306C5_ntD0Ev();
extern void _ZN10S4306C5_nt3v59Ev();
extern void _ZN10S4306C5_nt3v60Ev();
static  VTBL_ENTRY vtc_S4306C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4306C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S4306C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4306C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4306C5_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4306C5_nt3v60Ev,
};
extern VTBL_ENTRY _ZTI10S4306C5_nt[];
VTBL_ENTRY *P__ZTI10S4306C5_nt = _ZTI10S4306C5_nt; 
extern  VTBL_ENTRY _ZTV10S4306C5_nt[];
Class_Descriptor cd_S4306C5_nt = {  "S4306C5_nt", // class name
  0,0,//no base classes
  &(vtc_S4306C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,76), // object size
  NSPAIRA(_ZTI10S4306C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4306C5_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  S4306C6_nt  {
  virtual  ~S4306C6_nt(); // _ZN10S4306C6_ntD1Ev
  virtual void  v61(); // _ZN10S4306C6_nt3v61Ev
  virtual void  v62(); // _ZN10S4306C6_nt3v62Ev
  virtual void  v63(); // _ZN10S4306C6_nt3v63Ev
  S4306C6_nt(); // tgen
};
//SIG(-1 S4306C6_nt) C1{ vd v1 v2 v3}


 S4306C6_nt ::~S4306C6_nt(){ note_dtor("S4306C6_nt", this);}
void  S4306C6_nt ::v61(){vfunc_called(this, "_ZN10S4306C6_nt3v61Ev");}
void  S4306C6_nt ::v62(){vfunc_called(this, "_ZN10S4306C6_nt3v62Ev");}
void  S4306C6_nt ::v63(){vfunc_called(this, "_ZN10S4306C6_nt3v63Ev");}
S4306C6_nt ::S4306C6_nt(){ note_ctor("S4306C6_nt", this);} // tgen

//skip512 S4306C6_nt

#else // __cplusplus

extern void _ZN10S4306C6_ntC1Ev();
extern void _ZN10S4306C6_ntD1Ev();
Name_Map name_map_S4306C6_nt[] = {
  NSPAIR(_ZN10S4306C6_ntC1Ev),
  NSPAIR(_ZN10S4306C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4306C6_nt[];
extern void _ZN10S4306C6_ntD1Ev();
extern void _ZN10S4306C6_ntD0Ev();
extern void _ZN10S4306C6_nt3v61Ev();
extern void _ZN10S4306C6_nt3v62Ev();
extern void _ZN10S4306C6_nt3v63Ev();
static  VTBL_ENTRY vtc_S4306C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4306C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S4306C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4306C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4306C6_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4306C6_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4306C6_nt3v63Ev,
};
extern VTBL_ENTRY _ZTI10S4306C6_nt[];
VTBL_ENTRY *P__ZTI10S4306C6_nt = _ZTI10S4306C6_nt; 
extern  VTBL_ENTRY _ZTV10S4306C6_nt[];
Class_Descriptor cd_S4306C6_nt = {  "S4306C6_nt", // class name
  0,0,//no base classes
  &(vtc_S4306C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4306C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4306C6_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  S4306C7_nt  {
  virtual  ~S4306C7_nt(); // _ZN10S4306C7_ntD1Ev
  virtual void  v64(); // _ZN10S4306C7_nt3v64Ev
  virtual void  v65(); // _ZN10S4306C7_nt3v65Ev
  virtual void  v66(); // _ZN10S4306C7_nt3v66Ev
  virtual void  v67(); // _ZN10S4306C7_nt3v67Ev
  virtual void  v68(); // _ZN10S4306C7_nt3v68Ev
  virtual void  v69(); // _ZN10S4306C7_nt3v69Ev
  virtual void  v70(); // _ZN10S4306C7_nt3v70Ev
  S4306C7_nt(); // tgen
};
//SIG(-1 S4306C7_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S4306C7_nt ::~S4306C7_nt(){ note_dtor("S4306C7_nt", this);}
void  S4306C7_nt ::v64(){vfunc_called(this, "_ZN10S4306C7_nt3v64Ev");}
void  S4306C7_nt ::v65(){vfunc_called(this, "_ZN10S4306C7_nt3v65Ev");}
void  S4306C7_nt ::v66(){vfunc_called(this, "_ZN10S4306C7_nt3v66Ev");}
void  S4306C7_nt ::v67(){vfunc_called(this, "_ZN10S4306C7_nt3v67Ev");}
void  S4306C7_nt ::v68(){vfunc_called(this, "_ZN10S4306C7_nt3v68Ev");}
void  S4306C7_nt ::v69(){vfunc_called(this, "_ZN10S4306C7_nt3v69Ev");}
void  S4306C7_nt ::v70(){vfunc_called(this, "_ZN10S4306C7_nt3v70Ev");}
S4306C7_nt ::S4306C7_nt(){ note_ctor("S4306C7_nt", this);} // tgen

//skip512 S4306C7_nt

#else // __cplusplus

extern void _ZN10S4306C7_ntC1Ev();
extern void _ZN10S4306C7_ntD1Ev();
Name_Map name_map_S4306C7_nt[] = {
  NSPAIR(_ZN10S4306C7_ntC1Ev),
  NSPAIR(_ZN10S4306C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4306C7_nt[];
extern void _ZN10S4306C7_ntD1Ev();
extern void _ZN10S4306C7_ntD0Ev();
extern void _ZN10S4306C7_nt3v64Ev();
extern void _ZN10S4306C7_nt3v65Ev();
extern void _ZN10S4306C7_nt3v66Ev();
extern void _ZN10S4306C7_nt3v67Ev();
extern void _ZN10S4306C7_nt3v68Ev();
extern void _ZN10S4306C7_nt3v69Ev();
extern void _ZN10S4306C7_nt3v70Ev();
static  VTBL_ENTRY vtc_S4306C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4306C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S4306C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI10S4306C7_nt[];
VTBL_ENTRY *P__ZTI10S4306C7_nt = _ZTI10S4306C7_nt; 
extern  VTBL_ENTRY _ZTV10S4306C7_nt[];
Class_Descriptor cd_S4306C7_nt = {  "S4306C7_nt", // class name
  0,0,//no base classes
  &(vtc_S4306C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4306C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4306C7_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  S4306C8_nt  {
  long s4306c8f0;
  __tsi64 s4306c8f1;
  long s4306c8f2;
  int s4306c8f3;
  long s4306c8f4[3];
  __tsi64 s4306c8f5[2];
  long s4306c8f6;
};
//SIG(-1 S4306C8_nt) C1{ Fl FL Fl Fi Fl[3] FL[2] Fl}



//skip512 S4306C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4306C9  {
  long s4306c9f0;
  __tsi64 s4306c9f1[2];
  long s4306c9f2;
  __tsi64 s4306c9f3;
  short s4306c9f4[2];
  char s4306c9f5[2];
  long s4306c9f6[9];
  short s4306c9f7[4];
};
//SIG(-1 S4306C9) C1{ Fl FL[2] Fl FL Fs[2] Fc[2] Fl[9] Fs[4]}



static void Test_S4306C9()
{
  {
    init_simple_test("S4306C9");
    S4306C9 lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S4306C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4306C9)");
    check_field_offset(lv, s4306c9f0, 0, "S4306C9.s4306c9f0");
    check_field_offset(lv, s4306c9f1, ABISELECT(8,4), "S4306C9.s4306c9f1");
    check_field_offset(lv, s4306c9f2, ABISELECT(24,20), "S4306C9.s4306c9f2");
    check_field_offset(lv, s4306c9f3, ABISELECT(32,24), "S4306C9.s4306c9f3");
    check_field_offset(lv, s4306c9f4, ABISELECT(40,32), "S4306C9.s4306c9f4");
    check_field_offset(lv, s4306c9f5, ABISELECT(44,36), "S4306C9.s4306c9f5");
    check_field_offset(lv, s4306c9f6, ABISELECT(48,40), "S4306C9.s4306c9f6");
    check_field_offset(lv, s4306c9f7, ABISELECT(120,76), "S4306C9.s4306c9f7");
  }
}
static Arrange_To_Call_Me vS4306C9(Test_S4306C9, "S4306C9", ABISELECT(128,84));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4306C1  : S4306C2_nt , S4306C5_nt , S4306C6_nt , S4306C7_nt {
  void *s4306c1f0[2];
  char s4306c1f1[2];
  long s4306c1f2;
  __tsi64 s4306c1f3;
  long s4306c1f4;
  __tsi64 s4306c1f5[3];
  long s4306c1f6;
  void *s4306c1f7[3];
  long s4306c1f8[2];
  void *s4306c1f9;
  ::S4306C8_nt s4306c1f10;
  ::S4306C9 s4306c1f11;
  ::S4224C37 s4306c1f12;
  void *s4306c1f13[4];
  virtual  ~S4306C1(); // _ZN7S4306C1D1Ev
  virtual void  v1(); // _ZN7S4306C12v1Ev
  virtual void  v2(); // _ZN7S4306C12v2Ev
  virtual void  v3(); // _ZN7S4306C12v3Ev
  virtual void  v4(); // _ZN7S4306C12v4Ev
  virtual void  v5(); // _ZN7S4306C12v5Ev
  virtual void  v6(); // _ZN7S4306C12v6Ev
  virtual void  v7(); // _ZN7S4306C12v7Ev
  virtual void  v8(); // _ZN7S4306C12v8Ev
  virtual void  v9(); // _ZN7S4306C12v9Ev
  virtual void  v10(); // _ZN7S4306C13v10Ev
  virtual void  v11(); // _ZN7S4306C13v11Ev
  virtual void  v12(); // _ZN7S4306C13v12Ev
  virtual void  v13(); // _ZN7S4306C13v13Ev
  virtual void  v14(); // _ZN7S4306C13v14Ev
  virtual void  v15(); // _ZN7S4306C13v15Ev
  virtual void  v16(); // _ZN7S4306C13v16Ev
  virtual void  v17(); // _ZN7S4306C13v17Ev
  virtual void  v18(); // _ZN7S4306C13v18Ev
  S4306C1(); // tgen
};
//SIG(1 S4306C1) C1{ BC2{ BC3{ vd v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44} vd v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 Fp[2] Fi[4] FC4{ Fi[2]} Fp Fc Fp} BC5{ vd v59 v60 Fp Fc[32] Fi[6] Fc Fi[2]} BC6{ vd v61 v62 v63} BC7{ vd v64 v65 v66 v67 v68 v69 v70} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp[2] Fc[2] Fl FL Fl FL[3] Fl Fp[3] Fl[2] Fp FC8{ Fl FL Fl Fi Fl[3] FL[2] Fl} FC9{ Fl FL[2] Fl FL Fs[2] Fc[2] Fl[9] Fs[4]} FC10{ m} Fp[4]}


 S4306C1 ::~S4306C1(){ note_dtor("S4306C1", this);}
void  S4306C1 ::v1(){vfunc_called(this, "_ZN7S4306C12v1Ev");}
void  S4306C1 ::v2(){vfunc_called(this, "_ZN7S4306C12v2Ev");}
void  S4306C1 ::v3(){vfunc_called(this, "_ZN7S4306C12v3Ev");}
void  S4306C1 ::v4(){vfunc_called(this, "_ZN7S4306C12v4Ev");}
void  S4306C1 ::v5(){vfunc_called(this, "_ZN7S4306C12v5Ev");}
void  S4306C1 ::v6(){vfunc_called(this, "_ZN7S4306C12v6Ev");}
void  S4306C1 ::v7(){vfunc_called(this, "_ZN7S4306C12v7Ev");}
void  S4306C1 ::v8(){vfunc_called(this, "_ZN7S4306C12v8Ev");}
void  S4306C1 ::v9(){vfunc_called(this, "_ZN7S4306C12v9Ev");}
void  S4306C1 ::v10(){vfunc_called(this, "_ZN7S4306C13v10Ev");}
void  S4306C1 ::v11(){vfunc_called(this, "_ZN7S4306C13v11Ev");}
void  S4306C1 ::v12(){vfunc_called(this, "_ZN7S4306C13v12Ev");}
void  S4306C1 ::v13(){vfunc_called(this, "_ZN7S4306C13v13Ev");}
void  S4306C1 ::v14(){vfunc_called(this, "_ZN7S4306C13v14Ev");}
void  S4306C1 ::v15(){vfunc_called(this, "_ZN7S4306C13v15Ev");}
void  S4306C1 ::v16(){vfunc_called(this, "_ZN7S4306C13v16Ev");}
void  S4306C1 ::v17(){vfunc_called(this, "_ZN7S4306C13v17Ev");}
void  S4306C1 ::v18(){vfunc_called(this, "_ZN7S4306C13v18Ev");}
S4306C1 ::S4306C1(){ note_ctor("S4306C1", this);} // tgen

static void Test_S4306C1()
{
  extern Class_Descriptor cd_S4306C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(70,93)];
    init_test(&cd_S4306C1, buf);
    S4306C1 *dp, &lv = *(dp=new (buf) S4306C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(552,368), "sizeof(S4306C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4306C1)");
    check_base_class_offset(lv, (S4306C3_nt*)(S4306C2_nt*), 0, "S4306C1");
    check_base_class_offset(lv, (S4306C2_nt*), 0, "S4306C1");
    check_base_class_offset(lv, (S4306C5_nt*), ABISELECT(72,48), "S4306C1");
    check_base_class_offset(lv, (S4306C6_nt*), ABISELECT(160,124), "S4306C1");
    check_base_class_offset(lv, (S4306C7_nt*), ABISELECT(168,128), "S4306C1");
    check_field_offset(lv, s4306c1f0, ABISELECT(176,132), "S4306C1.s4306c1f0");
    check_field_offset(lv, s4306c1f1, ABISELECT(192,140), "S4306C1.s4306c1f1");
    check_field_offset(lv, s4306c1f2, ABISELECT(200,144), "S4306C1.s4306c1f2");
    check_field_offset(lv, s4306c1f3, ABISELECT(208,148), "S4306C1.s4306c1f3");
    check_field_offset(lv, s4306c1f4, ABISELECT(216,156), "S4306C1.s4306c1f4");
    check_field_offset(lv, s4306c1f5, ABISELECT(224,160), "S4306C1.s4306c1f5");
    check_field_offset(lv, s4306c1f6, ABISELECT(248,184), "S4306C1.s4306c1f6");
    check_field_offset(lv, s4306c1f7, ABISELECT(256,188), "S4306C1.s4306c1f7");
    check_field_offset(lv, s4306c1f8, ABISELECT(280,200), "S4306C1.s4306c1f8");
    check_field_offset(lv, s4306c1f9, ABISELECT(296,208), "S4306C1.s4306c1f9");
    check_field_offset(lv, s4306c1f10, ABISELECT(304,212), "S4306C1.s4306c1f10");
    check_field_offset(lv, s4306c1f11, ABISELECT(384,264), "S4306C1.s4306c1f11");
    check_field_offset(lv, s4306c1f12, ABISELECT(512,348), "S4306C1.s4306c1f12");
    check_field_offset(lv, s4306c1f13, ABISELECT(520,352), "S4306C1.s4306c1f13");
    test_class_info(&lv, &cd_S4306C1);
    dp->~S4306C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4306C1(Test_S4306C1, "S4306C1", ABISELECT(552,368));

#else // __cplusplus

extern void _ZN7S4306C1C1Ev();
extern void _ZN7S4306C1D1Ev();
Name_Map name_map_S4306C1[] = {
  NSPAIR(_ZN7S4306C1C1Ev),
  NSPAIR(_ZN7S4306C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4306C3_nt;
extern VTBL_ENTRY _ZTI10S4306C3_nt[];
extern  VTBL_ENTRY _ZTV10S4306C3_nt[];
extern Class_Descriptor cd_S4306C2_nt;
extern VTBL_ENTRY _ZTI10S4306C2_nt[];
extern  VTBL_ENTRY _ZTV10S4306C2_nt[];
extern Class_Descriptor cd_S4306C5_nt;
extern VTBL_ENTRY _ZTI10S4306C5_nt[];
extern  VTBL_ENTRY _ZTV10S4306C5_nt[];
extern Class_Descriptor cd_S4306C6_nt;
extern VTBL_ENTRY _ZTI10S4306C6_nt[];
extern  VTBL_ENTRY _ZTV10S4306C6_nt[];
extern Class_Descriptor cd_S4306C7_nt;
extern VTBL_ENTRY _ZTI10S4306C7_nt[];
extern  VTBL_ENTRY _ZTV10S4306C7_nt[];
static Base_Class bases_S4306C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4306C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4306C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4306C5_nt,    ABISELECT(72,48), //bcp->offset
    62, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4306C6_nt,    ABISELECT(160,124), //bcp->offset
    68, //bcp->virtual_function_table_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_S4306C7_nt,    ABISELECT(168,128), //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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4306C1[];
extern void _ZN7S4306C1D1Ev();
extern void _ZN7S4306C1D0Ev();
extern void _ZN10S4306C3_nt3v19Ev();
extern void _ZN10S4306C3_nt3v20Ev();
extern void _ZN10S4306C3_nt3v21Ev();
extern void _ZN10S4306C3_nt3v22Ev();
extern void _ZN10S4306C3_nt3v23Ev();
extern void _ZN10S4306C3_nt3v24Ev();
extern void _ZN10S4306C3_nt3v25Ev();
extern void _ZN10S4306C3_nt3v26Ev();
extern void _ZN10S4306C3_nt3v27Ev();
extern void _ZN10S4306C3_nt3v28Ev();
extern void _ZN10S4306C3_nt3v29Ev();
extern void _ZN10S4306C3_nt3v30Ev();
extern void _ZN10S4306C3_nt3v31Ev();
extern void _ZN10S4306C3_nt3v32Ev();
extern void _ZN10S4306C3_nt3v33Ev();
extern void _ZN10S4306C3_nt3v34Ev();
extern void _ZN10S4306C3_nt3v35Ev();
extern void _ZN10S4306C3_nt3v36Ev();
extern void _ZN10S4306C3_nt3v37Ev();
extern void _ZN10S4306C3_nt3v38Ev();
extern void _ZN10S4306C3_nt3v39Ev();
extern void _ZN10S4306C3_nt3v40Ev();
extern void _ZN10S4306C3_nt3v41Ev();
extern void _ZN10S4306C3_nt3v42Ev();
extern void _ZN10S4306C3_nt3v43Ev();
extern void _ZN10S4306C3_nt3v44Ev();
extern void _ZN10S4306C2_nt3v45Ev();
extern void _ZN10S4306C2_nt3v46Ev();
extern void _ZN10S4306C2_nt3v47Ev();
extern void _ZN10S4306C2_nt3v48Ev();
extern void _ZN10S4306C2_nt3v49Ev();
extern void _ZN10S4306C2_nt3v50Ev();
extern void _ZN10S4306C2_nt3v51Ev();
extern void _ZN10S4306C2_nt3v52Ev();
extern void _ZN10S4306C2_nt3v53Ev();
extern void _ZN10S4306C2_nt3v54Ev();
extern void _ZN10S4306C2_nt3v55Ev();
extern void _ZN10S4306C2_nt3v56Ev();
extern void _ZN10S4306C2_nt3v57Ev();
extern void _ZN10S4306C2_nt3v58Ev();
extern void _ZN7S4306C12v1Ev();
extern void _ZN7S4306C12v2Ev();
extern void _ZN7S4306C12v3Ev();
extern void _ZN7S4306C12v4Ev();
extern void _ZN7S4306C12v5Ev();
extern void _ZN7S4306C12v6Ev();
extern void _ZN7S4306C12v7Ev();
extern void _ZN7S4306C12v8Ev();
extern void _ZN7S4306C12v9Ev();
extern void _ZN7S4306C13v10Ev();
extern void _ZN7S4306C13v11Ev();
extern void _ZN7S4306C13v12Ev();
extern void _ZN7S4306C13v13Ev();
extern void _ZN7S4306C13v14Ev();
extern void _ZN7S4306C13v15Ev();
extern void _ZN7S4306C13v16Ev();
extern void _ZN7S4306C13v17Ev();
extern void _ZN7S4306C13v18Ev();
extern void ABISELECT(_ZThn72_N7S4306C1D1Ev,_ZThn48_N7S4306C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S4306C1D0Ev,_ZThn48_N7S4306C1D0Ev)();
extern void _ZN10S4306C5_nt3v59Ev();
extern void _ZN10S4306C5_nt3v60Ev();
extern void ABISELECT(_ZThn160_N7S4306C1D1Ev,_ZThn124_N7S4306C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S4306C1D0Ev,_ZThn124_N7S4306C1D0Ev)();
extern void _ZN10S4306C6_nt3v61Ev();
extern void _ZN10S4306C6_nt3v62Ev();
extern void _ZN10S4306C6_nt3v63Ev();
extern void ABISELECT(_ZThn168_N7S4306C1D1Ev,_ZThn128_N7S4306C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S4306C1D0Ev,_ZThn128_N7S4306C1D0Ev)();
extern void _ZN10S4306C7_nt3v64Ev();
extern void _ZN10S4306C7_nt3v65Ev();
extern void _ZN10S4306C7_nt3v66Ev();
extern void _ZN10S4306C7_nt3v67Ev();
extern void _ZN10S4306C7_nt3v68Ev();
extern void _ZN10S4306C7_nt3v69Ev();
extern void _ZN10S4306C7_nt3v70Ev();
static  VTBL_ENTRY vtc_S4306C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4306C1[0]),
  (VTBL_ENTRY)&_ZN7S4306C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4306C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4306C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4306C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4306C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v14Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v15Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v16Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v17Ev,
  (VTBL_ENTRY)&_ZN7S4306C13v18Ev,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S4306C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S4306C1D1Ev,_ZThn48_N7S4306C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S4306C1D0Ev,_ZThn48_N7S4306C1D0Ev),
  (VTBL_ENTRY)&_ZN10S4306C5_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4306C5_nt3v60Ev,
  ABISELECT(-160,-124),
  (VTBL_ENTRY)&(_ZTI7S4306C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S4306C1D1Ev,_ZThn124_N7S4306C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S4306C1D0Ev,_ZThn124_N7S4306C1D0Ev),
  (VTBL_ENTRY)&_ZN10S4306C6_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4306C6_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4306C6_nt3v63Ev,
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI7S4306C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N7S4306C1D1Ev,_ZThn128_N7S4306C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N7S4306C1D0Ev,_ZThn128_N7S4306C1D0Ev),
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4306C7_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI7S4306C1[];
extern  VTBL_ENTRY _ZTV7S4306C1[];
Class_Descriptor cd_S4306C1 = {  "S4306C1", // class name
  bases_S4306C1, 5,
  &(vtc_S4306C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(552,368), // object size
  NSPAIRA(_ZTI7S4306C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S4306C1),86, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C5  {
  long s21127c5f0[10];
  long double s21127c5f1;
  char s21127c5f2[2];
  long double s21127c5f3;
  void *s21127c5f4;
  __tsi64 s21127c5f5;
  char s21127c5f6;
  virtual void  v2(); // _ZN8S21127C52v2Ev
  virtual void  v3(); // _ZN8S21127C52v3Ev
  ~S21127C5(); // tgen
  S21127C5(); // tgen
};
//SIG(-1 S21127C5) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S21127C5 ::v2(){vfunc_called(this, "_ZN8S21127C52v2Ev");}
void  S21127C5 ::v3(){vfunc_called(this, "_ZN8S21127C52v3Ev");}
S21127C5 ::~S21127C5(){ note_dtor("S21127C5", this);} // tgen
S21127C5 ::S21127C5(){ note_ctor("S21127C5", this);} // tgen

static void Test_S21127C5()
{
  extern Class_Descriptor cd_S21127C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S21127C5, buf);
    S21127C5 *dp, &lv = *(dp=new (buf) S21127C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S21127C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C5)");
    check_field_offset(lv, s21127c5f0, ABISELECT(8,4), "S21127C5.s21127c5f0");
    check_field_offset(lv, s21127c5f1, ABISELECT(96,44), "S21127C5.s21127c5f1");
    check_field_offset(lv, s21127c5f2, ABISELECT(112,56), "S21127C5.s21127c5f2");
    check_field_offset(lv, s21127c5f3, ABISELECT(128,60), "S21127C5.s21127c5f3");
    check_field_offset(lv, s21127c5f4, ABISELECT(144,72), "S21127C5.s21127c5f4");
    check_field_offset(lv, s21127c5f5, ABISELECT(152,76), "S21127C5.s21127c5f5");
    check_field_offset(lv, s21127c5f6, ABISELECT(160,84), "S21127C5.s21127c5f6");
    test_class_info(&lv, &cd_S21127C5);
    dp->~S21127C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C5(Test_S21127C5, "S21127C5", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S21127C5C1Ev();
extern void _ZN8S21127C5D1Ev();
Name_Map name_map_S21127C5[] = {
  NSPAIR(_ZN8S21127C5C1Ev),
  NSPAIR(_ZN8S21127C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21127C5[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY vtc_S21127C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C5[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
Class_Descriptor cd_S21127C5 = {  "S21127C5", // class name
  0,0,//no base classes
  &(vtc_S21127C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S21127C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21127C5),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  S21127C4  : virtual S21127C5 {
  void *s21127c4f0;
  short s21127c4f1;
  ~S21127C4(); // tgen
  S21127C4(); // tgen
};
//SIG(-1 S21127C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S21127C4()
{
  extern Class_Descriptor cd_S21127C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S21127C4, buf);
    S21127C4 *dp, &lv = *(dp=new (buf) S21127C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S21127C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C4)");
    check_base_class_offset(lv, (S21127C5*), ABISELECT(32,12), "S21127C4");
    check_field_offset(lv, s21127c4f0, ABISELECT(8,4), "S21127C4.s21127c4f0");
    check_field_offset(lv, s21127c4f1, ABISELECT(16,8), "S21127C4.s21127c4f1");
    test_class_info(&lv, &cd_S21127C4);
    dp->~S21127C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C4(Test_S21127C4, "S21127C4", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S21127C4C1Ev();
extern void _ZN8S21127C4D1Ev();
Name_Map name_map_S21127C4[] = {
  NSPAIR(_ZN8S21127C4C1Ev),
  NSPAIR(_ZN8S21127C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
static Base_Class bases_S21127C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S21127C4[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY vtc_S21127C4[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S21127C4[];
static  VTT_ENTRY vtt_S21127C4[] = {
  {&(_ZTV8S21127C4[3]),  3,9},
  {&(_ZTV8S21127C4[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
Class_Descriptor cd_S21127C4 = {  "S21127C4", // class name
  bases_S21127C4, 1,
  &(vtc_S21127C4[0]), // expected_vtbl_contents
  &(vtt_S21127C4[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S21127C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21127C4),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C4),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  S21127C6  : virtual S21127C5 {
  void *s21127c6f0;
  ::S21127C5 s21127c6f1;
  virtual  ~S21127C6(); // _ZN8S21127C6D2Ev
  S21127C6(); // tgen
};
//SIG(-1 S21127C6) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S21127C6()
{
  extern Class_Descriptor cd_S21127C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S21127C6, buf);
    S21127C6 *dp, &lv = *(dp=new (buf) S21127C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S21127C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C6)");
    check_base_class_offset(lv, (S21127C5*), ABISELECT(192,96), "S21127C6");
    check_field_offset(lv, s21127c6f0, ABISELECT(8,4), "S21127C6.s21127c6f0");
    check_field_offset(lv, s21127c6f1, ABISELECT(16,8), "S21127C6.s21127c6f1");
    test_class_info(&lv, &cd_S21127C6);
    dp->~S21127C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C6(Test_S21127C6, "S21127C6", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S21127C6C1Ev();
extern void _ZN8S21127C6D2Ev();
Name_Map name_map_S21127C6[] = {
  NSPAIR(_ZN8S21127C6C1Ev),
  NSPAIR(_ZN8S21127C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
static Base_Class bases_S21127C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C6[];
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY vtc_S21127C6[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S21127C6[];
static  VTT_ENTRY vtt_S21127C6[] = {
  {&(_ZTV8S21127C6[3]),  3,11},
  {&(_ZTV8S21127C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
Class_Descriptor cd_S21127C6 = {  "S21127C6", // class name
  bases_S21127C6, 1,
  &(vtc_S21127C6[0]), // expected_vtbl_contents
  &(vtt_S21127C6[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S21127C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21127C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C6),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  S21127C7  : S21127C5 {
  ::S21127C5 s21127c7f0;
  ::S21127C6 s21127c7f1;
  ::S21127C5 s21127c7f2;
  virtual void  v4(); // _ZN8S21127C72v4Ev
  ~S21127C7(); // tgen
  S21127C7(); // tgen
};
//SIG(-1 S21127C7) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S21127C7()
{
  extern Class_Descriptor cd_S21127C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S21127C7, buf);
    S21127C7 *dp, &lv = *(dp=new (buf) S21127C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S21127C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C7)");
    check_base_class_offset(lv, (S21127C5*), 0, "S21127C7");
    check_field_offset(lv, s21127c7f0, ABISELECT(176,88), "S21127C7.s21127c7f0");
    check_field_offset(lv, s21127c7f1, ABISELECT(352,176), "S21127C7.s21127c7f1");
    check_field_offset(lv, s21127c7f2, ABISELECT(720,360), "S21127C7.s21127c7f2");
    test_class_info(&lv, &cd_S21127C7);
    dp->~S21127C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C7(Test_S21127C7, "S21127C7", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S21127C7C1Ev();
extern void _ZN8S21127C7D1Ev();
Name_Map name_map_S21127C7[] = {
  NSPAIR(_ZN8S21127C7C1Ev),
  NSPAIR(_ZN8S21127C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
static Base_Class bases_S21127C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C7[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY vtc_S21127C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C7[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
Class_Descriptor cd_S21127C7 = {  "S21127C7", // class name
  bases_S21127C7, 1,
  &(vtc_S21127C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S21127C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21127C7),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  S21127C3  : virtual S21127C4 , virtual S21127C6 , S21127C5 , virtual S21127C7 {
  ::S21127C7 s21127c3f0;
  void *s21127c3f1;
  long s21127c3f2[8];
  __tsi64 s21127c3f3[2];
  char s21127c3f4;
  ::S21127C7 s21127c3f5[7];
  virtual  ~S21127C3(); // _ZN8S21127C3D2Ev
  S21127C3(); // tgen
};
//SIG(-1 S21127C3) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S21127C3()
{
  extern Class_Descriptor cd_S21127C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S21127C3, buf);
    S21127C3 *dp, &lv = *(dp=new (buf) S21127C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S21127C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C3)");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(7472,3740), "S21127C3");
    check_base_class_offset(lv, (S21127C5*)(S21127C6*), ABISELECT(7472,3740), "S21127C3");
    check_base_class_offset(lv, (S21127C4*), ABISELECT(7440,3728), "S21127C3");
    check_base_class_offset(lv, (S21127C6*), ABISELECT(7648,3828), "S21127C3");
    /*is_ambiguous_... S21127C3::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*), 0, "S21127C3");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(7840,3924), "S21127C3");
    check_base_class_offset(lv, (S21127C7*), ABISELECT(7840,3924), "S21127C3");
    check_field_offset(lv, s21127c3f0, ABISELECT(176,88), "S21127C3.s21127c3f0");
    check_field_offset(lv, s21127c3f1, ABISELECT(1072,536), "S21127C3.s21127c3f1");
    check_field_offset(lv, s21127c3f2, ABISELECT(1080,540), "S21127C3.s21127c3f2");
    check_field_offset(lv, s21127c3f3, ABISELECT(1144,572), "S21127C3.s21127c3f3");
    check_field_offset(lv, s21127c3f4, ABISELECT(1160,588), "S21127C3.s21127c3f4");
    check_field_offset(lv, s21127c3f5, ABISELECT(1168,592), "S21127C3.s21127c3f5");
    test_class_info(&lv, &cd_S21127C3);
    dp->~S21127C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C3(Test_S21127C3, "S21127C3", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S21127C3C1Ev();
extern void _ZN8S21127C3D2Ev();
Name_Map name_map_S21127C3[] = {
  NSPAIR(_ZN8S21127C3C1Ev),
  NSPAIR(_ZN8S21127C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C6;
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
static Base_Class bases_S21127C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S21127C6,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21127C5,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C3[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZThn7648_N8S21127C3D1Ev,_ZThn3828_N8S21127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
extern void ABISELECT(_ZThn7648_N8S21127C3D0Ev,_ZThn3828_N8S21127C3D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY vtc_S21127C3[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern VTBL_ENTRY _ZTV8S21127C3[];
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C3[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__8S21127C3[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C3[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C6__8S21127C3[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C3[] = {
  {&(_ZTV8S21127C3[6]),  6,33},
  {&(_ZTV8S21127C3[13]),  13,33},
  {&(_ZTV8S21127C3[17]),  17,33},
  {&(_ZTV8S21127C3[23]),  23,33},
  {&(_ZTV8S21127C3[30]),  30,33},
  {&(_tg__ZTV8S21127C4__8S21127C3[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__8S21127C3[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C3[3]),  3,5},
  {&(_tg__ZTV8S21127C5__8S21127C6__8S21127C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S21127C3D0Ev,_ZThn3828_N8S21127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S21127C3D1Ev,_ZThn3828_N8S21127C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21127C3 = {  "S21127C3", // class name
  bases_S21127C3, 6,
  &(vtc_S21127C3[0]), // expected_vtbl_contents
  &(vtt_S21127C3[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S21127C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21127C3),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C3),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C9  : S21127C5 , S21127C4 {
  int s21127c9f0;
  ~S21127C9(); // tgen
  S21127C9(); // tgen
};
//SIG(-1 S21127C9) C1{ BC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC3{ VBC2 Fp Fs} Fi}


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

static void Test_S21127C9()
{
  extern Class_Descriptor cd_S21127C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,49)];
    init_test(&cd_S21127C9, buf);
    S21127C9 *dp, &lv = *(dp=new (buf) S21127C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,192), "sizeof(S21127C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C9)");
    /*is_ambiguous_... S21127C9::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*), 0, "S21127C9");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(192,104), "S21127C9");
    check_base_class_offset(lv, (S21127C4*), ABISELECT(168,88), "S21127C9");
    check_field_offset(lv, s21127c9f0, ABISELECT(188,100), "S21127C9.s21127c9f0");
    test_class_info(&lv, &cd_S21127C9);
    dp->~S21127C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C9(Test_S21127C9, "S21127C9", ABISELECT(368,192));

#else // __cplusplus

extern void _ZN8S21127C9C1Ev();
extern void _ZN8S21127C9D1Ev();
Name_Map name_map_S21127C9[] = {
  NSPAIR(_ZN8S21127C9C1Ev),
  NSPAIR(_ZN8S21127C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
static Base_Class bases_S21127C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S21127C5,    ABISELECT(192,104), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(168,88), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C9[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY vtc_S21127C9[] = {
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(24,16),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  0,
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S21127C9[];
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__8S21127C9[] = {
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C9[] = {
  {&(_ZTV8S21127C9[3]),  3,14},
  {&(_tg__ZTV8S21127C4__8S21127C9[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__8S21127C9[4]),  4,6},
  {&(_ZTV8S21127C9[8]),  8,14},
  {&(_ZTV8S21127C9[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S21127C9[];
extern  VTBL_ENTRY _ZTV8S21127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C9[];
Class_Descriptor cd_S21127C9 = {  "S21127C9", // class name
  bases_S21127C9, 3,
  &(vtc_S21127C9[0]), // expected_vtbl_contents
  &(vtt_S21127C9[0]), // expected_vtt_contents
  ABISELECT(368,192), // object size
  NSPAIRA(_ZTI8S21127C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21127C9),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C9),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  S21127C8  : S21127C9 , virtual S4224C43_nt , virtual S21127C7 {
  ::S21127C9 s21127c8f0;
  long double s21127c8f1;
  void *s21127c8f2[7];
  virtual  ~S21127C8(); // _ZN8S21127C8D2Ev
  virtual void  v5(); // _ZN8S21127C82v5Ev
  S21127C8(); // tgen
};
//SIG(-1 S21127C8) C1{ BC2{ BC3{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} VBC5{ m Fp} VBC6{ BC3 v4 FC3 FC7{ VBC3 vd Fp FC3} FC3} vd v1 FC2 FD Fp[7]}


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

static void Test_S21127C8()
{
  extern Class_Descriptor cd_S21127C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(108,220)];
    init_test(&cd_S21127C8, buf);
    S21127C8 *dp, &lv = *(dp=new (buf) S21127C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1712,876), "sizeof(S21127C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C8)");
    /*is_ambiguous_... S21127C9::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C9*), 0, "S21127C8");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C9*), ABISELECT(640,336), "S21127C8");
    check_base_class_offset(lv, (S21127C4*)(S21127C9*), ABISELECT(168,88), "S21127C8");
    check_base_class_offset(lv, (S21127C9*), 0, "S21127C8");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(808,424), "S21127C8");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(816,428), "S21127C8");
    check_base_class_offset(lv, (S21127C7*), ABISELECT(816,428), "S21127C8");
    check_field_offset(lv, s21127c8f0, ABISELECT(192,104), "S21127C8.s21127c8f0");
    check_field_offset(lv, s21127c8f1, ABISELECT(560,296), "S21127C8.s21127c8f1");
    check_field_offset(lv, s21127c8f2, ABISELECT(576,308), "S21127C8.s21127c8f2");
    test_class_info(&lv, &cd_S21127C8);
    dp->~S21127C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C8(Test_S21127C8, "S21127C8", ABISELECT(1712,876));

#else // __cplusplus

extern void _ZN8S21127C8C1Ev();
extern void _ZN8S21127C8D2Ev();
Name_Map name_map_S21127C8[] = {
  NSPAIR(_ZN8S21127C8C1Ev),
  NSPAIR(_ZN8S21127C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C9;
extern VTBL_ENTRY _ZTI8S21127C9[];
extern  VTBL_ENTRY _ZTV8S21127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
static Base_Class bases_S21127C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21127C5,    ABISELECT(640,336), //bcp->offset
    13, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(168,88), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4224C43_nt,    ABISELECT(808,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    ABISELECT(816,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(816,428), //bcp->offset
    19, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C8[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C8D1Ev();
extern void _ZN8S21127C8D0Ev();
extern void _ZN8S21127C82v5Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY vtc_S21127C8[] = {
  ABISELECT(816,428),
  ABISELECT(808,424),
  ABISELECT(640,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21127C82v5Ev,
  ABISELECT(472,248),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  0,
  0,
  ABISELECT(-640,-336),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-816,-428),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern VTBL_ENTRY _ZTV8S21127C8[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C9__8S21127C8[] = {
  ABISELECT(640,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C48S21127C9__8S21127C8[] = {
  ABISELECT(472,248),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C48S21127C9__8S21127C8[] = {
  0,
  0,
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C9__8S21127C8[] = {
  ABISELECT(472,248),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A1__8S21127C9__8S21127C8[] = {
  0,
  0,
  ABISELECT(-640,-336),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C8[] = {
  {&(_ZTV8S21127C8[5]),  5,27},
  {&(_tg__ZTV8S21127C9__8S21127C8[3]),  3,5},
  {&(_tg__ZTV8S21127C48S21127C9__8S21127C8[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C48S21127C9__8S21127C8[4]),  4,6},
  {&(_tg__ZTV8S21127C4__8S21127C9__8S21127C8[3]),  3,3},
  {&(_tg__ZTV8S21127C5__A1__8S21127C9__8S21127C8[4]),  4,6},
  {&(_ZTV8S21127C8[13]),  13,27},
  {&(_ZTV8S21127C8[17]),  17,27},
  {&(_ZTV8S21127C8[24]),  24,27},
};
extern VTBL_ENTRY _ZTI8S21127C8[];
extern  VTBL_ENTRY _ZTV8S21127C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C8[];
Class_Descriptor cd_S21127C8 = {  "S21127C8", // class name
  bases_S21127C8, 7,
  &(vtc_S21127C8[0]), // expected_vtbl_contents
  &(vtt_S21127C8[0]), // expected_vtt_contents
  ABISELECT(1712,876), // object size
  NSPAIRA(_ZTI8S21127C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21127C8),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C8),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C2  : virtual S21127C3 , S21127C8 {
  void *s21127c2f0;
  virtual void  v6(); // _ZN8S21127C22v6Ev
  virtual void  v7(); // _ZN8S21127C22v7Ev
  ~S21127C2(); // tgen
  S21127C2(); // tgen
};
//SIG(-1 S21127C2) C1{ VBC2{ VBC3{ VBC4{ v3 v4 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC5{ VBC4 vd Fp FC4} BC4 VBC6{ BC4 v5 FC4 FC5 FC4} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC7{ BC8{ BC4 BC3 Fi} VBC9{ m Fp} VBC6 vd v6 FC8 FD Fp[7]} v1 v2 Fp}


void  S21127C2 ::v6(){vfunc_called(this, "_ZN8S21127C22v6Ev");}
void  S21127C2 ::v7(){vfunc_called(this, "_ZN8S21127C22v7Ev");}
S21127C2 ::~S21127C2(){ note_dtor("S21127C2", this);} // tgen
S21127C2 ::S21127C2(){ note_ctor("S21127C2", this);} // tgen

static void Test_S21127C2()
{
  extern Class_Descriptor cd_S21127C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(588,1180)];
    init_test(&cd_S21127C2, buf);
    S21127C2 *dp, &lv = *(dp=new (buf) S21127C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9392,4716), "sizeof(S21127C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C2)");
    /*is_ambiguous_... S21127C2::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(8112,4080), "S21127C2");
    check_base_class_offset(lv, (S21127C5*)(S21127C6*), ABISELECT(8112,4080), "S21127C2");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C9*)(S21127C8*), ABISELECT(8112,4080), "S21127C2");
    check_base_class_offset(lv, (S21127C4*)(S21127C3*), ABISELECT(8080,4068), "S21127C2");
    check_base_class_offset(lv, (S21127C6*)(S21127C3*), ABISELECT(8288,4168), "S21127C2");
    /*is_ambiguous_... S21127C3::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C3*), ABISELECT(640,340), "S21127C2");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(8480,4264), "S21127C2");
    check_base_class_offset(lv, (S21127C7*)(S21127C3*), ABISELECT(8480,4264), "S21127C2");
    check_base_class_offset(lv, (S21127C7*)(S21127C8*), ABISELECT(8480,4264), "S21127C2");
    check_base_class_offset(lv, (S21127C3*), ABISELECT(640,340), "S21127C2");
    /*is_ambiguous_... S21127C9::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C9*)(S21127C8*), 0, "S21127C2");
    check_base_class_offset(lv, (S21127C4*)(S21127C9*)(S21127C8*), ABISELECT(168,88), "S21127C2");
    check_base_class_offset(lv, (S21127C9*)(S21127C8*), 0, "S21127C2");
    check_base_class_offset(lv, (S4224C43_nt*)(S21127C8*), ABISELECT(9376,4712), "S21127C2");
    check_base_class_offset(lv, (S21127C8*), 0, "S21127C2");
    check_field_offset(lv, s21127c2f0, ABISELECT(632,336), "S21127C2.s21127c2f0");
    test_class_info(&lv, &cd_S21127C2);
    dp->~S21127C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C2(Test_S21127C2, "S21127C2", ABISELECT(9392,4716));

#else // __cplusplus

extern void _ZN8S21127C2C1Ev();
extern void _ZN8S21127C2D1Ev();
Name_Map name_map_S21127C2[] = {
  NSPAIR(_ZN8S21127C2C1Ev),
  NSPAIR(_ZN8S21127C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C6;
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C3;
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C9;
extern VTBL_ENTRY _ZTI8S21127C9[];
extern  VTBL_ENTRY _ZTV8S21127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S21127C8;
extern VTBL_ENTRY _ZTI8S21127C8[];
extern  VTBL_ENTRY _ZTV8S21127C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C8[];
static Base_Class bases_S21127C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(8112,4080), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(8080,4068), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S21127C6,    ABISELECT(8288,4168), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21127C5,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21127C5,    ABISELECT(8480,4264), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C7,    ABISELECT(8480,4264), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21127C3,    ABISELECT(640,340), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C4,    ABISELECT(168,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(9376,4712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21127C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C2[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C2D1Ev();
extern void _ZN8S21127C2D0Ev();
extern void _ZN8S21127C82v5Ev();
extern void _ZN8S21127C22v6Ev();
extern void _ZN8S21127C22v7Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S21127C2D1Ev,_ZTv0_n36_N8S21127C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S21127C2D1Ev,_ZThn340_N8S21127C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21127C2D0Ev,_ZTv0_n36_N8S21127C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S21127C2D0Ev,_ZThn340_N8S21127C2D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S21127C2D1Ev,_ZTv0_n16_N8S21127C2D1Ev)();
extern void ABISELECT(_ZThn8288_N8S21127C2D1Ev,_ZThn4168_N8S21127C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C2D0Ev,_ZTv0_n16_N8S21127C2D0Ev)();
extern void ABISELECT(_ZThn8288_N8S21127C2D0Ev,_ZThn4168_N8S21127C2D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY vtc_S21127C2[] = {
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21127C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21127C22v6Ev,
  (VTBL_ENTRY)&_ZN8S21127C22v7Ev,
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  ABISELECT(-640,-340),
  0,
  0,
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21127C2D1Ev,_ZTv0_n36_N8S21127C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21127C2D0Ev,_ZTv0_n36_N8S21127C2D0Ev),
  ABISELECT(32,12),
  ABISELECT(-8080,-4068),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(-8288,-4168),
  ABISELECT(-176,-88),
  ABISELECT(-8288,-4168),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C2D1Ev,_ZTv0_n16_N8S21127C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C2D0Ev,_ZTv0_n16_N8S21127C2D0Ev),
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern VTBL_ENTRY _ZTV8S21127C2[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C8D1Ev();
extern void _ZN8S21127C8D0Ev();
extern void _ZN8S21127C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C8__8S21127C2[] = {
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21127C82v5Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C98S21127C8__8S21127C2[] = {
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C48S21127C98S21127C8__A1__8S21127C2[] = {
  ABISELECT(7944,3992),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C48S21127C98S21127C8__A1__8S21127C2[] = {
  0,
  0,
  ABISELECT(-7944,-3992),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C98S21127C8__8S21127C2[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A1__8S21127C98S21127C8__8S21127C2[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C48S21127C9__8S21127C8__8S21127C2[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A1__8S21127C8__8S21127C2[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C8__8S21127C2[] = {
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C3__8S21127C2[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C3__8S21127C2[] = {
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C3__8S21127C2[] = {
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZThn7648_N8S21127C3D1Ev,_ZThn3828_N8S21127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
extern void ABISELECT(_ZThn7648_N8S21127C3D0Ev,_ZThn3828_N8S21127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C3__8S21127C2[] = {
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C3__8S21127C2[] = {
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C2[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__8S21127C2[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C2[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C6__8S21127C2[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C2[] = {
  {&(_ZTV8S21127C2[8]),  8,54},
  {&(_tg__ZTV8S21127C8__8S21127C2[5]),  5,10},
  {&(_tg__ZTV8S21127C98S21127C8__8S21127C2[3]),  3,5},
  {&(_tg__ZTV8S21127C48S21127C98S21127C8__A1__8S21127C2[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C48S21127C98S21127C8__A1__8S21127C2[4]),  4,6},
  {&(_tg__ZTV8S21127C4__8S21127C98S21127C8__8S21127C2[3]),  3,3},
  {&(_tg__ZTV8S21127C5__A1__8S21127C98S21127C8__8S21127C2[4]),  4,6},
  {&(_tg__ZTV8S21127C48S21127C9__8S21127C8__8S21127C2[3]),  3,3},
  {&(_tg__ZTV8S21127C5__A1__8S21127C8__8S21127C2[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C8__8S21127C2[5]),  5,8},
  {&(_ZTV8S21127C2[27]),  27,54},
  {&(_ZTV8S21127C2[34]),  34,54},
  {&(_ZTV8S21127C2[38]),  38,54},
  {&(_ZTV8S21127C2[44]),  44,54},
  {&(_ZTV8S21127C2[51]),  51,54},
  {&(_ZTV8S21127C2[18]),  18,54},
  {&(_tg__ZTV8S21127C3__8S21127C2[6]),  6,10},
  {&(_tg__ZTV8S21127C4__8S21127C3__8S21127C2[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C3__8S21127C2[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C3__8S21127C2[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C3__8S21127C2[5]),  5,8},
  {&(_tg__ZTV8S21127C4__8S21127C2[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__8S21127C2[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C2[3]),  3,5},
  {&(_tg__ZTV8S21127C5__8S21127C6__8S21127C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21127C2[];
extern  VTBL_ENTRY _ZTV8S21127C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C2[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S21127C3D0Ev,_ZThn3828_N8S21127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S21127C3D1Ev,_ZThn3828_N8S21127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C2D0Ev,_ZTv0_n16_N8S21127C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S21127C2D0Ev,_ZThn4168_N8S21127C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C2D1Ev,_ZTv0_n16_N8S21127C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S21127C2D1Ev,_ZThn4168_N8S21127C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21127C2D0Ev,_ZTv0_n36_N8S21127C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S21127C2D0Ev,_ZThn340_N8S21127C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21127C2D1Ev,_ZTv0_n36_N8S21127C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S21127C2D1Ev,_ZThn340_N8S21127C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21127C2 = {  "S21127C2", // class name
  bases_S21127C2, 12,
  &(vtc_S21127C2[0]), // expected_vtbl_contents
  &(vtt_S21127C2[0]), // expected_vtt_contents
  ABISELECT(9392,4716), // object size
  NSPAIRA(_ZTI8S21127C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21127C2),54, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C2),25, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C11  : virtual S21127C5 , virtual S21127C6 , S21127C3 , S21127C4 , S21127C7 {
  void *s21127c11f0;
  char s21127c11f1;
  ~S21127C11(); // tgen
  S21127C11(); // tgen
};
//SIG(-1 S21127C11) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S21127C11()
{
  extern Class_Descriptor cd_S21127C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S21127C11, buf);
    S21127C11 *dp, &lv = *(dp=new (buf) S21127C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S21127C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C11)");
    /*is_ambiguous_... S21127C11::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*), ABISELECT(8384,4196), "S21127C11");
    check_base_class_offset(lv, (S21127C5*)(S21127C6*), ABISELECT(8384,4196), "S21127C11");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(8384,4196), "S21127C11");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(8384,4196), "S21127C11");
    check_base_class_offset(lv, (S21127C6*), ABISELECT(8560,4284), "S21127C11");
    check_base_class_offset(lv, (S21127C6*)(S21127C3*), ABISELECT(8560,4284), "S21127C11");
    check_base_class_offset(lv, (S21127C4*)(S21127C3*), ABISELECT(8752,4380), "S21127C11");
    /*is_ambiguous_... S21127C3::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C3*), 0, "S21127C11");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(8784,4392), "S21127C11");
    check_base_class_offset(lv, (S21127C7*)(S21127C3*), ABISELECT(8784,4392), "S21127C11");
    check_base_class_offset(lv, (S21127C3*), 0, "S21127C11");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C4*), ABISELECT(7440,3728), "S21127C11");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(7472,3740), "S21127C11");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C7*), ABISELECT(7472,3740), "S21127C11");
    check_field_offset(lv, s21127c11f0, ABISELECT(8368,4188), "S21127C11.s21127c11f0");
    check_field_offset(lv, s21127c11f1, ABISELECT(8376,4192), "S21127C11.s21127c11f1");
    test_class_info(&lv, &cd_S21127C11);
    dp->~S21127C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C11(Test_S21127C11, "S21127C11", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN9S21127C11C1Ev();
extern void _ZN9S21127C11D1Ev();
Name_Map name_map_S21127C11[] = {
  NSPAIR(_ZN9S21127C11C1Ev),
  NSPAIR(_ZN9S21127C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C6;
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C3;
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
static Base_Class bases_S21127C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C6,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C4,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C5,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C7,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21127C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21127C4,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21127C5,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C7,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21127C11[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C11D1Ev();
extern void _ZN9S21127C11D0Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev)();
extern void ABISELECT(_ZThn8560_N9S21127C11D1Ev,_ZThn4284_N9S21127C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev)();
extern void ABISELECT(_ZThn8560_N9S21127C11D0Ev,_ZThn4284_N9S21127C11D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY vtc_S21127C11[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern VTBL_ENTRY _ZTV9S21127C11[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C3__9S21127C11[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C3__9S21127C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C3__9S21127C11[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZThn8560_N8S21127C3D1Ev,_ZThn4284_N8S21127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
extern void ABISELECT(_ZThn8560_N8S21127C3D0Ev,_ZThn4284_N8S21127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C3__9S21127C11[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C3__9S21127C11[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__A__9S21127C11[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__A__9S21127C11[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C11[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C6__9S21127C11[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C11[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__9S21127C11[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C11[] = {
  {&(_ZTV9S21127C11[6]),  6,41},
  {&(_tg__ZTV8S21127C3__9S21127C11[6]),  6,10},
  {&(_tg__ZTV8S21127C4__8S21127C3__9S21127C11[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C3__9S21127C11[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C3__9S21127C11[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C3__9S21127C11[5]),  5,8},
  {&(_tg__ZTV8S21127C4__A__9S21127C11[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__A__9S21127C11[4]),  4,6},
  {&(_ZTV9S21127C11[22]),  22,41},
  {&(_ZTV9S21127C11[28]),  28,41},
  {&(_ZTV9S21127C11[33]),  33,41},
  {&(_ZTV9S21127C11[38]),  38,41},
  {&(_ZTV9S21127C11[13]),  13,41},
  {&(_tg__ZTV8S21127C6__9S21127C11[3]),  3,5},
  {&(_tg__ZTV8S21127C5__8S21127C6__9S21127C11[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C11[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__9S21127C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21127C11[];
extern  VTBL_ENTRY _ZTV9S21127C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C11[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S21127C3D0Ev,_ZThn4284_N8S21127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S21127C3D1Ev,_ZThn4284_N8S21127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N9S21127C11D0Ev,_ZThn4284_N9S21127C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N9S21127C11D1Ev,_ZThn4284_N9S21127C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21127C11 = {  "S21127C11", // class name
  bases_S21127C11, 10,
  &(vtc_S21127C11[0]), // expected_vtbl_contents
  &(vtt_S21127C11[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI9S21127C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21127C11),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21127C11),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C13  : S21127C5 , virtual S21127C7 {
  ::S21127C4 s21127c13f0;
  int s21127c13f1;
  void *s21127c13f2;
  ::S21127C3 s21127c13f3;
  int s21127c13f4;
  ::S21127C3 s21127c13f5;
  virtual  ~S21127C13(); // _ZN9S21127C13D2Ev
  S21127C13(); // tgen
};
//SIG(-1 S21127C13) C1{ BC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ BC2 v3 FC2 FC4{ VBC2 vd Fp FC2} FC2} vd FC5{ VBC2 Fp Fs} Fi Fp FC6{ VBC5 VBC4 BC2 VBC3 vd FC3 Fp Fl[8] FL[2] Fc FC3[7]} Fi FC6}


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

static void Test_S21127C13()
{
  extern Class_Descriptor cd_S21127C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1175,2349)];
    init_test(&cd_S21127C13, buf);
    S21127C13 *dp, &lv = *(dp=new (buf) S21127C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(18784,9392), "sizeof(S21127C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C13)");
    /*is_ambiguous_... S21127C13::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*), 0, "S21127C13");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(17888,8944), "S21127C13");
    check_base_class_offset(lv, (S21127C7*), ABISELECT(17888,8944), "S21127C13");
    check_field_offset(lv, s21127c13f0, ABISELECT(176,88), "S21127C13.s21127c13f0");
    check_field_offset(lv, s21127c13f1, ABISELECT(384,188), "S21127C13.s21127c13f1");
    check_field_offset(lv, s21127c13f2, ABISELECT(392,192), "S21127C13.s21127c13f2");
    check_field_offset(lv, s21127c13f3, ABISELECT(400,196), "S21127C13.s21127c13f3");
    check_field_offset(lv, s21127c13f4, ABISELECT(9136,4568), "S21127C13.s21127c13f4");
    check_field_offset(lv, s21127c13f5, ABISELECT(9152,4572), "S21127C13.s21127c13f5");
    test_class_info(&lv, &cd_S21127C13);
    dp->~S21127C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C13(Test_S21127C13, "S21127C13", ABISELECT(18784,9392));

#else // __cplusplus

extern void _ZN9S21127C13C1Ev();
extern void _ZN9S21127C13D2Ev();
Name_Map name_map_S21127C13[] = {
  NSPAIR(_ZN9S21127C13C1Ev),
  NSPAIR(_ZN9S21127C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
static Base_Class bases_S21127C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21127C5,    ABISELECT(17888,8944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(17888,8944), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21127C13[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C13D1Ev();
extern void _ZN9S21127C13D0Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY vtc_S21127C13[] = {
  ABISELECT(17888,8944),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C13[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C13D0Ev,
  0,
  0,
  0,
  ABISELECT(-17888,-8944),
  (VTBL_ENTRY)&(_ZTI9S21127C13[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern VTBL_ENTRY _ZTV9S21127C13[];
static  VTT_ENTRY vtt_S21127C13[] = {
  {&(_ZTV9S21127C13[3]),  3,15},
  {&(_ZTV9S21127C13[12]),  12,15},
};
extern VTBL_ENTRY _ZTI9S21127C13[];
extern  VTBL_ENTRY _ZTV9S21127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C13[];
Class_Descriptor cd_S21127C13 = {  "S21127C13", // class name
  bases_S21127C13, 3,
  &(vtc_S21127C13[0]), // expected_vtbl_contents
  &(vtt_S21127C13[0]), // expected_vtt_contents
  ABISELECT(18784,9392), // object size
  NSPAIRA(_ZTI9S21127C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21127C13),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21127C13),2, //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  S21127C12  : virtual S21127C13 , S21127C11 {
  void *s21127c12f0;
  short s21127c12f1;
  ::S21127C13 s21127c12f2;
  ::S21127C11 s21127c12f3[5];
  int s21127c12f4;
  virtual  ~S21127C12(); // _ZN9S21127C12D2Ev
  virtual void  v8(); // _ZN9S21127C122v8Ev
  S21127C12(); // tgen
};
//SIG(-1 S21127C12) C1{ VBC2{ BC3{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ BC3 v4 FC3 FC5{ VBC3 vd Fp FC3} FC3} vd FC6{ VBC3 Fp Fs} Fi Fp FC7{ VBC6 VBC5 BC3 VBC4 vd FC4 Fp Fl[8] FL[2] Fc FC4[7]} Fi FC7} BC8{ VBC3 VBC5 BC7 BC6 BC4 Fp Fc} vd v1 Fp Fs FC2 FC8[5] Fi}


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

static void Test_S21127C12()
{
  extern Class_Descriptor cd_S21127C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5925,11848)];
    init_test(&cd_S21127C12, buf);
    S21127C12 *dp, &lv = *(dp=new (buf) S21127C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(94784,47388), "sizeof(S21127C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C12)");
    /*is_ambiguous_... S21127C13::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C13*), ABISELECT(75600,37800), "S21127C12");
    /*is_ambiguous_... S21127C12::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(93488,46744), "S21127C12");
    check_base_class_offset(lv, (S21127C7*)(S21127C13*), ABISELECT(93488,46744), "S21127C12");
    check_base_class_offset(lv, (S21127C7*)(S21127C3*)(S21127C11*), ABISELECT(93488,46744), "S21127C12");
    check_base_class_offset(lv, (S21127C13*), ABISELECT(75600,37800), "S21127C12");
    /*is_ambiguous_... S21127C11::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C11*), ABISELECT(94384,47192), "S21127C12");
    check_base_class_offset(lv, (S21127C5*)(S21127C6*), ABISELECT(94384,47192), "S21127C12");
    /*is_ambiguous_... S21127C12::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(94384,47192), "S21127C12");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C11*), ABISELECT(94384,47192), "S21127C12");
    check_base_class_offset(lv, (S21127C6*)(S21127C11*), ABISELECT(94560,47280), "S21127C12");
    check_base_class_offset(lv, (S21127C6*)(S21127C3*)(S21127C11*), ABISELECT(94560,47280), "S21127C12");
    check_base_class_offset(lv, (S21127C4*)(S21127C3*)(S21127C11*), ABISELECT(94752,47376), "S21127C12");
    /*is_ambiguous_... S21127C3::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C3*)(S21127C11*), 0, "S21127C12");
    check_base_class_offset(lv, (S21127C3*)(S21127C11*), 0, "S21127C12");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C4*)(S21127C11*), ABISELECT(7440,3728), "S21127C12");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*)(S21127C11*), ABISELECT(7472,3740), "S21127C12");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C7*)(S21127C11*), ABISELECT(7472,3740), "S21127C12");
    check_base_class_offset(lv, (S21127C11*), 0, "S21127C12");
    check_field_offset(lv, s21127c12f0, ABISELECT(8384,4196), "S21127C12.s21127c12f0");
    check_field_offset(lv, s21127c12f1, ABISELECT(8392,4200), "S21127C12.s21127c12f1");
    check_field_offset(lv, s21127c12f2, ABISELECT(8400,4204), "S21127C12.s21127c12f2");
    check_field_offset(lv, s21127c12f3, ABISELECT(27184,13596), "S21127C12.s21127c12f3");
    check_field_offset(lv, s21127c12f4, ABISELECT(75584,37796), "S21127C12.s21127c12f4");
    test_class_info(&lv, &cd_S21127C12);
    dp->~S21127C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C12(Test_S21127C12, "S21127C12", ABISELECT(94784,47388));

#else // __cplusplus

extern void _ZN9S21127C12C1Ev();
extern void _ZN9S21127C12D2Ev();
Name_Map name_map_S21127C12[] = {
  NSPAIR(_ZN9S21127C12C1Ev),
  NSPAIR(_ZN9S21127C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C13;
extern VTBL_ENTRY _ZTI9S21127C13[];
extern  VTBL_ENTRY _ZTV9S21127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C13[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C6;
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C3;
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C11;
extern VTBL_ENTRY _ZTI9S21127C11[];
extern  VTBL_ENTRY _ZTV9S21127C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C11[];
static Base_Class bases_S21127C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(75600,37800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21127C5,    ABISELECT(93488,46744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(93488,46744), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21127C13,    ABISELECT(75600,37800), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    ABISELECT(94384,47192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21127C6,    ABISELECT(94560,47280), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(94752,47376), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21127C4,    ABISELECT(7440,3728), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21127C5,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(7472,3740), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21127C11,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21127C12[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C12D1Ev();
extern void _ZN9S21127C12D0Ev();
extern void _ZN9S21127C122v8Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N9S21127C12D1Ev,_ZTv0_n24_N9S21127C12D1Ev)();
extern void ABISELECT(_ZThn75600_N9S21127C12D1Ev,_ZThn37800_N9S21127C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21127C12D0Ev,_ZTv0_n24_N9S21127C12D0Ev)();
extern void ABISELECT(_ZThn75600_N9S21127C12D0Ev,_ZThn37800_N9S21127C12D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n32_N9S21127C12D1Ev,_ZTv0_n16_N9S21127C12D1Ev)();
extern void ABISELECT(_ZThn94560_N9S21127C12D1Ev,_ZThn47280_N9S21127C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21127C12D0Ev,_ZTv0_n16_N9S21127C12D0Ev)();
extern void ABISELECT(_ZThn94560_N9S21127C12D0Ev,_ZThn47280_N9S21127C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21127C12[] = {
  ABISELECT(75600,37800),
  ABISELECT(93488,46744),
  ABISELECT(94560,47280),
  ABISELECT(94384,47192),
  ABISELECT(94752,47376),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21127C122v8Ev,
  ABISELECT(86944,43464),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  ABISELECT(-75600,-37800),
  0,
  0,
  ABISELECT(17888,8944),
  ABISELECT(-75600,-37800),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21127C12D1Ev,_ZTv0_n24_N9S21127C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21127C12D0Ev,_ZTv0_n24_N9S21127C12D0Ev),
  0,
  0,
  0,
  ABISELECT(-93488,-46744),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  0,
  0,
  ABISELECT(-94384,-47192),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(-94560,-47280),
  ABISELECT(-176,-88),
  ABISELECT(-94560,-47280),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C12D1Ev,_ZTv0_n16_N9S21127C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C12D0Ev,_ZTv0_n16_N9S21127C12D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-94752,-47376),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
};
extern VTBL_ENTRY _ZTV9S21127C12[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C11D1Ev();
extern void _ZN9S21127C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C11__9S21127C12[] = {
  ABISELECT(93488,46744),
  ABISELECT(94560,47280),
  ABISELECT(94384,47192),
  ABISELECT(94752,47376),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C39S21127C11__9S21127C12[] = {
  ABISELECT(93488,46744),
  ABISELECT(94560,47280),
  ABISELECT(94384,47192),
  ABISELECT(94752,47376),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C39S21127C11__9S21127C12[] = {
  ABISELECT(-368,-184),
  ABISELECT(-94752,-47376),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C39S21127C11__9S21127C12[] = {
  0,
  0,
  ABISELECT(-94384,-47192),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZThn94560_N8S21127C3D1Ev,_ZThn47280_N8S21127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
extern void ABISELECT(_ZThn94560_N8S21127C3D0Ev,_ZThn47280_N8S21127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C39S21127C11__9S21127C12[] = {
  ABISELECT(-94560,-47280),
  ABISELECT(-176,-88),
  ABISELECT(-94560,-47280),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C39S21127C11__9S21127C12[] = {
  0,
  0,
  0,
  ABISELECT(-93488,-46744),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C49S21127C11__A1__9S21127C12[] = {
  ABISELECT(86944,43464),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C49S21127C11__A1__9S21127C12[] = {
  0,
  0,
  ABISELECT(-86944,-43464),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__9S21127C11__9S21127C12[] = {
  0,
  0,
  ABISELECT(-94384,-47192),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev)();
extern void ABISELECT(_ZThn94560_N9S21127C11D1Ev,_ZThn47280_N9S21127C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev)();
extern void ABISELECT(_ZThn94560_N9S21127C11D0Ev,_ZThn47280_N9S21127C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C11__9S21127C12[] = {
  ABISELECT(-94560,-47280),
  ABISELECT(-176,-88),
  ABISELECT(-94560,-47280),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C11__9S21127C12[] = {
  ABISELECT(-368,-184),
  ABISELECT(-94752,-47376),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__9S21127C11__9S21127C12[] = {
  0,
  0,
  0,
  ABISELECT(-93488,-46744),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__A__9S21127C11__9S21127C12[] = {
  ABISELECT(86944,43464),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C13D1Ev();
extern void _ZN9S21127C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C13__9S21127C12[] = {
  ABISELECT(17888,8944),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C13[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C13D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__9S21127C13__9S21127C12[] = {
  0,
  0,
  0,
  ABISELECT(-17888,-8944),
  (VTBL_ENTRY)&(_ZTI9S21127C13[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C12[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C6__9S21127C12[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C12[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__9S21127C12[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C12[] = {
  {&(_ZTV9S21127C12[7]),  7,53},
  {&(_tg__ZTV9S21127C11__9S21127C12[6]),  6,10},
  {&(_tg__ZTV8S21127C39S21127C11__9S21127C12[6]),  6,10},
  {&(_tg__ZTV8S21127C4__8S21127C39S21127C11__9S21127C12[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C39S21127C11__9S21127C12[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C39S21127C11__9S21127C12[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C39S21127C11__9S21127C12[5]),  5,8},
  {&(_tg__ZTV8S21127C49S21127C11__A1__9S21127C12[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C49S21127C11__A1__9S21127C12[4]),  4,6},
  {&(_tg__ZTV8S21127C5__9S21127C11__9S21127C12[4]),  4,6},
  {&(_tg__ZTV8S21127C6__9S21127C11__9S21127C12[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C11__9S21127C12[3]),  3,3},
  {&(_tg__ZTV8S21127C7__9S21127C11__9S21127C12[5]),  5,8},
  {&(_tg__ZTV8S21127C4__A__9S21127C11__9S21127C12[3]),  3,3},
  {&(_ZTV9S21127C12[26]),  26,53},
  {&(_ZTV9S21127C12[35]),  35,53},
  {&(_ZTV9S21127C12[42]),  42,53},
  {&(_ZTV9S21127C12[48]),  48,53},
  {&(_ZTV9S21127C12[53]),  53,53},
  {&(_ZTV9S21127C12[15]),  15,53},
  {&(_tg__ZTV9S21127C13__9S21127C12[3]),  3,7},
  {&(_tg__ZTV8S21127C7__9S21127C13__9S21127C12[5]),  5,8},
  {&(_tg__ZTV8S21127C6__9S21127C12[3]),  3,5},
  {&(_tg__ZTV8S21127C5__8S21127C6__9S21127C12[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C12[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__9S21127C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21127C12[];
extern  VTBL_ENTRY _ZTV9S21127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C12[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N9S21127C11D0Ev,_ZThn47280_N9S21127C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N9S21127C11D1Ev,_ZThn47280_N9S21127C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N8S21127C3D0Ev,_ZThn47280_N8S21127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N8S21127C3D1Ev,_ZThn47280_N8S21127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C12D0Ev,_ZTv0_n16_N9S21127C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N9S21127C12D0Ev,_ZThn47280_N9S21127C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C12D1Ev,_ZTv0_n16_N9S21127C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N9S21127C12D1Ev,_ZThn47280_N9S21127C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21127C12D0Ev,_ZTv0_n24_N9S21127C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S21127C12D0Ev,_ZThn37800_N9S21127C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21127C12D1Ev,_ZTv0_n24_N9S21127C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S21127C12D1Ev,_ZThn37800_N9S21127C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21127C12 = {  "S21127C12", // class name
  bases_S21127C12, 13,
  &(vtc_S21127C12[0]), // expected_vtbl_contents
  &(vtt_S21127C12[0]), // expected_vtt_contents
  ABISELECT(94784,47388), // object size
  NSPAIRA(_ZTI9S21127C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21127C12),53, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21127C12),26, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C14  : S21127C7 {
  int s21127c14f0;
  short s21127c14f1:16;
  short s21127c14f2[5];
  char s21127c14f3;
  int s21127c14f4;
  long double s21127c14f5;
  char s21127c14f6;
  ::S21127C2 s21127c14f7;
  virtual  ~S21127C14(); // _ZN9S21127C14D1Ev
  S21127C14(); // tgen
};
//SIG(-1 S21127C14) C1{ BC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} v3 FC3 FC4{ VBC3 vd Fp FC3} FC3} vd Fi Fs:16 Fs[5] Fc Fi FD Fc FC5{ VBC6{ VBC7{ VBC3 Fp Fs} VBC4 BC3 VBC2 vd FC2 Fp Fl[8] FL[2] Fc FC2[7]} BC8{ BC9{ BC3 BC7 Fi} VBC10{ m Fp} VBC2 vd v6 FC9 FD Fp[7]} v4 v5 Fp}}


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

static void Test_S21127C14()
{
  extern Class_Descriptor cd_S21127C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(648,1302)];
    init_test(&cd_S21127C14, buf);
    S21127C14 *dp, &lv = *(dp=new (buf) S21127C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10352,5204), "sizeof(S21127C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C14)");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*), 0, "S21127C14");
    check_base_class_offset(lv, (S21127C7*), 0, "S21127C14");
    check_field_offset(lv, s21127c14f0, ABISELECT(896,448), "S21127C14.s21127c14f0");
    set_bf_and_test(lv, s21127c14f1, ABISELECT(900,452), 0, 16, 1, "S21127C14");
    set_bf_and_test(lv, s21127c14f1, ABISELECT(900,452), 0, 16, hide_sll(1LL<<15), "S21127C14");
    check_field_offset(lv, s21127c14f2, ABISELECT(902,454), "S21127C14.s21127c14f2");
    check_field_offset(lv, s21127c14f3, ABISELECT(912,464), "S21127C14.s21127c14f3");
    check_field_offset(lv, s21127c14f4, ABISELECT(916,468), "S21127C14.s21127c14f4");
    check_field_offset(lv, s21127c14f5, ABISELECT(928,472), "S21127C14.s21127c14f5");
    check_field_offset(lv, s21127c14f6, ABISELECT(944,484), "S21127C14.s21127c14f6");
    check_field_offset(lv, s21127c14f7, ABISELECT(960,488), "S21127C14.s21127c14f7");
    test_class_info(&lv, &cd_S21127C14);
    dp->~S21127C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C14(Test_S21127C14, "S21127C14", ABISELECT(10352,5204));

#else // __cplusplus

extern void _ZN9S21127C14C1Ev();
extern void _ZN9S21127C14D1Ev();
Name_Map name_map_S21127C14[] = {
  NSPAIR(_ZN9S21127C14C1Ev),
  NSPAIR(_ZN9S21127C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
static Base_Class bases_S21127C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21127C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21127C14[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN9S21127C14D1Ev();
extern void _ZN9S21127C14D0Ev();
static  VTBL_ENTRY vtc_S21127C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C14[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  (VTBL_ENTRY)&_ZN9S21127C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C14D0Ev,
};
extern VTBL_ENTRY _ZTI9S21127C14[];
extern  VTBL_ENTRY _ZTV9S21127C14[];
Class_Descriptor cd_S21127C14 = {  "S21127C14", // class name
  bases_S21127C14, 2,
  &(vtc_S21127C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(10352,5204), // object size
  NSPAIRA(_ZTI9S21127C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21127C14),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21127C18  : virtual S4224C43_nt , S21127C7 , S21127C5 , S21127C4 {
  short s21127c18f0;
  ::S21127C7 s21127c18f1;
  void *s21127c18f2[2];
  __tsi64 s21127c18f3;
  ::S21127C3 s21127c18f4[5];
  int s21127c18f5;
  virtual void  v10(); // _ZN9S21127C183v10Ev
  ~S21127C18(); // tgen
  S21127C18(); // tgen
};
//SIG(-1 S21127C18) C1{ VBC2{ m Fp} BC3{ BC4{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v4 FC4 FC5{ VBC4 vd Fp FC4} FC4} BC4 BC6{ VBC4 Fp Fs} v1 Fs FC3 Fp[2] FL FC7{ VBC6 VBC5 BC4 VBC3 vd FC3 Fp Fl[8] FL[2] Fc FC3[7]}[5] Fi}


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

static void Test_S21127C18()
{
  extern Class_Descriptor cd_S21127C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2869,5743)];
    init_test(&cd_S21127C18, buf);
    S21127C18 *dp, &lv = *(dp=new (buf) S21127C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(45888,22968), "sizeof(S21127C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C18)");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(45704,22876), "S21127C18");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*), 0, "S21127C18");
    check_base_class_offset(lv, (S21127C7*), 0, "S21127C18");
    /*is_ambiguous_... S21127C18::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*), ABISELECT(896,448), "S21127C18");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(45712,22880), "S21127C18");
    check_base_class_offset(lv, (S21127C4*), ABISELECT(1064,536), "S21127C18");
    check_field_offset(lv, s21127c18f0, ABISELECT(1082,546), "S21127C18.s21127c18f0");
    check_field_offset(lv, s21127c18f1, ABISELECT(1088,548), "S21127C18.s21127c18f1");
    check_field_offset(lv, s21127c18f2, ABISELECT(1984,996), "S21127C18.s21127c18f2");
    check_field_offset(lv, s21127c18f3, ABISELECT(2000,1004), "S21127C18.s21127c18f3");
    check_field_offset(lv, s21127c18f4, ABISELECT(2016,1012), "S21127C18.s21127c18f4");
    check_field_offset(lv, s21127c18f5, ABISELECT(45696,22872), "S21127C18.s21127c18f5");
    test_class_info(&lv, &cd_S21127C18);
    dp->~S21127C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C18(Test_S21127C18, "S21127C18", ABISELECT(45888,22968));

#else // __cplusplus

extern void _ZN9S21127C18C1Ev();
extern void _ZN9S21127C18D1Ev();
Name_Map name_map_S21127C18[] = {
  NSPAIR(_ZN9S21127C18C1Ev),
  NSPAIR(_ZN9S21127C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
static Base_Class bases_S21127C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C43_nt,    ABISELECT(45704,22876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21127C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21127C5,    ABISELECT(896,448), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21127C5,    ABISELECT(45712,22880), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(1064,536), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21127C18[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN9S21127C183v10Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY vtc_S21127C18[] = {
  ABISELECT(45712,22880),
  ABISELECT(45704,22876),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  (VTBL_ENTRY)&_ZN9S21127C183v10Ev,
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(44648,22344),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
  0,
  0,
  ABISELECT(-45712,-22880),
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S21127C18[];
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C18[] = {
  ABISELECT(44648,22344),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__9S21127C18[] = {
  0,
  0,
  ABISELECT(-44648,-22344),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C18[] = {
  {&(_ZTV9S21127C18[4]),  4,21},
  {&(_tg__ZTV8S21127C4__9S21127C18[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__9S21127C18[4]),  4,6},
  {&(_ZTV9S21127C18[15]),  15,21},
  {&(_ZTV9S21127C18[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S21127C18[];
extern  VTBL_ENTRY _ZTV9S21127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C18[];
Class_Descriptor cd_S21127C18 = {  "S21127C18", // class name
  bases_S21127C18, 6,
  &(vtc_S21127C18[0]), // expected_vtbl_contents
  &(vtt_S21127C18[0]), // expected_vtt_contents
  ABISELECT(45888,22968), // object size
  NSPAIRA(_ZTI9S21127C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21127C18),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21127C18),5, //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  S21127C17  : S21127C6 , S21127C18 {
  ::S4224C43_nt s21127c17f0[9];
  int s21127c17f1;
  long s21127c17f2;
  long double s21127c17f3;
  virtual  ~S21127C17(); // _ZN9S21127C17D2Ev
  S21127C17(); // tgen
};
//SIG(-1 S21127C17) C1{ BC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC3} BC4{ VBC5{ m Fp} BC6{ BC3 v3 FC3 FC2 FC3} BC3 BC7{ VBC3 Fp Fs} v4 Fs FC6 Fp[2] FL FC8{ VBC7 VBC2 BC3 VBC6 vd FC6 Fp Fl[8] FL[2] Fc FC6[7]}[5] Fi} vd FC5[9] Fi Fl FD}


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

static void Test_S21127C17()
{
  extern Class_Descriptor cd_S21127C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2887,5781)];
    init_test(&cd_S21127C17, buf);
    S21127C17 *dp, &lv = *(dp=new (buf) S21127C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(46176,23120), "sizeof(S21127C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C17)");
    check_base_class_offset(lv, (S21127C5*)(S21127C6*), ABISELECT(46000,23028), "S21127C17");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C18*), ABISELECT(46000,23028), "S21127C17");
    check_base_class_offset(lv, (S21127C6*), 0, "S21127C17");
    check_base_class_offset(lv, (S4224C43_nt*)(S21127C18*), ABISELECT(46168,23116), "S21127C17");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*)(S21127C18*), ABISELECT(192,96), "S21127C17");
    check_base_class_offset(lv, (S21127C7*)(S21127C18*), ABISELECT(192,96), "S21127C17");
    /*is_ambiguous_... S21127C18::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C18*), ABISELECT(1088,544), "S21127C17");
    check_base_class_offset(lv, (S21127C4*)(S21127C18*), ABISELECT(1256,632), "S21127C17");
    check_base_class_offset(lv, (S21127C18*), ABISELECT(192,96), "S21127C17");
    check_field_offset(lv, s21127c17f0, ABISELECT(45896,22972), "S21127C17.s21127c17f0");
    check_field_offset(lv, s21127c17f1, ABISELECT(45968,23008), "S21127C17.s21127c17f1");
    check_field_offset(lv, s21127c17f2, ABISELECT(45976,23012), "S21127C17.s21127c17f2");
    check_field_offset(lv, s21127c17f3, ABISELECT(45984,23016), "S21127C17.s21127c17f3");
    test_class_info(&lv, &cd_S21127C17);
    dp->~S21127C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C17(Test_S21127C17, "S21127C17", ABISELECT(46176,23120));

#else // __cplusplus

extern void _ZN9S21127C17C1Ev();
extern void _ZN9S21127C17D2Ev();
Name_Map name_map_S21127C17[] = {
  NSPAIR(_ZN9S21127C17C1Ev),
  NSPAIR(_ZN9S21127C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C6;
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C18;
extern VTBL_ENTRY _ZTI9S21127C18[];
extern  VTBL_ENTRY _ZTV9S21127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C18[];
static Base_Class bases_S21127C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(46000,23028), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21127C6,    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_S4224C43_nt,    ABISELECT(46168,23116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21127C5,    ABISELECT(192,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_S21127C7,    ABISELECT(192,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21127C5,    ABISELECT(1088,544), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21127C4,    ABISELECT(1256,632), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21127C18,    ABISELECT(192,96), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21127C17[];
extern void _ZN9S21127C17D1Ev();
extern void _ZN9S21127C17D0Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN9S21127C183v10Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY vtc_S21127C17[] = {
  ABISELECT(46168,23116),
  ABISELECT(46000,23028),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C17[0]),
  (VTBL_ENTRY)&_ZN9S21127C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C17D0Ev,
  ABISELECT(45808,22932),
  ABISELECT(45976,23020),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S21127C17[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  (VTBL_ENTRY)&_ZN9S21127C183v10Ev,
  ABISELECT(-1088,-544),
  (VTBL_ENTRY)&(_ZTI9S21127C17[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(44744,22396),
  ABISELECT(-1256,-632),
  (VTBL_ENTRY)&(_ZTI9S21127C17[0]),
  0,
  0,
  ABISELECT(-46000,-23028),
  (VTBL_ENTRY)&(_ZTI9S21127C17[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S21127C17[];
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C17[] = {
  ABISELECT(46000,23028),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C6__9S21127C17[] = {
  0,
  0,
  ABISELECT(-46000,-23028),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN9S21127C183v10Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C18__9S21127C17[] = {
  ABISELECT(45808,22932),
  ABISELECT(45976,23020),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  (VTBL_ENTRY)&_ZN9S21127C183v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C49S21127C18__9S21127C17[] = {
  ABISELECT(44744,22396),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C49S21127C18__9S21127C17[] = {
  0,
  0,
  ABISELECT(-44744,-22396),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C18__9S21127C17[] = {
  ABISELECT(44744,22396),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A2__9S21127C18__9S21127C17[] = {
  0,
  0,
  ABISELECT(-45808,-22932),
  (VTBL_ENTRY)&(_ZTI9S21127C18[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTT_ENTRY vtt_S21127C17[] = {
  {&(_ZTV9S21127C17[4]),  4,27},
  {&(_tg__ZTV8S21127C6__9S21127C17[3]),  3,5},
  {&(_tg__ZTV8S21127C5__8S21127C6__9S21127C17[4]),  4,6},
  {&(_tg__ZTV9S21127C18__9S21127C17[4]),  4,8},
  {&(_tg__ZTV8S21127C49S21127C18__9S21127C17[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C49S21127C18__9S21127C17[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C18__9S21127C17[3]),  3,3},
  {&(_tg__ZTV8S21127C5__A2__9S21127C18__9S21127C17[4]),  4,6},
  {&(_ZTV9S21127C17[25]),  25,27},
  {&(_ZTV9S21127C17[10]),  10,27},
  {&(_ZTV9S21127C17[21]),  21,27},
};
extern VTBL_ENTRY _ZTI9S21127C17[];
extern  VTBL_ENTRY _ZTV9S21127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C17[];
Class_Descriptor cd_S21127C17 = {  "S21127C17", // class name
  bases_S21127C17, 8,
  &(vtc_S21127C17[0]), // expected_vtbl_contents
  &(vtt_S21127C17[0]), // expected_vtt_contents
  ABISELECT(46176,23120), // object size
  NSPAIRA(_ZTI9S21127C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21127C17),27, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21127C17),11, //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  S21127C16  {
  int s21127c16f0;
  short s21127c16f1;
  ::S21127C17 s21127c16f2;
  virtual void  v9(); // _ZN9S21127C162v9Ev
  ~S21127C16(); // tgen
  S21127C16(); // tgen
};
//SIG(-1 S21127C16) C1{ v1 Fi Fs FC2{ BC3{ VBC4{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC4} BC5{ VBC6{ m Fp} BC7{ BC4 v4 FC4 FC3 FC4} BC4 BC8{ VBC4 Fp Fs} v5 Fs FC7 Fp[2] FL FC9{ VBC8 VBC3 BC4 VBC7 vd FC7 Fp Fl[8] FL[2] Fc FC7[7]}[5] Fi} vd FC6[9] Fi Fl FD}}


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

static void Test_S21127C16()
{
  extern Class_Descriptor cd_S21127C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2888,5784)];
    init_test(&cd_S21127C16, buf);
    S21127C16 *dp, &lv = *(dp=new (buf) S21127C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(46192,23132), "sizeof(S21127C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C16)");
    check_field_offset(lv, s21127c16f0, ABISELECT(8,4), "S21127C16.s21127c16f0");
    check_field_offset(lv, s21127c16f1, ABISELECT(12,8), "S21127C16.s21127c16f1");
    check_field_offset(lv, s21127c16f2, ABISELECT(16,12), "S21127C16.s21127c16f2");
    test_class_info(&lv, &cd_S21127C16);
    dp->~S21127C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C16(Test_S21127C16, "S21127C16", ABISELECT(46192,23132));

#else // __cplusplus

extern void _ZN9S21127C16C1Ev();
extern void _ZN9S21127C16D1Ev();
Name_Map name_map_S21127C16[] = {
  NSPAIR(_ZN9S21127C16C1Ev),
  NSPAIR(_ZN9S21127C16D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S21127C16[];
extern void _ZN9S21127C162v9Ev();
static  VTBL_ENTRY vtc_S21127C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C16[0]),
  (VTBL_ENTRY)&_ZN9S21127C162v9Ev,
};
extern VTBL_ENTRY _ZTI9S21127C16[];
extern  VTBL_ENTRY _ZTV9S21127C16[];
Class_Descriptor cd_S21127C16 = {  "S21127C16", // class name
  0,0,//no base classes
  &(vtc_S21127C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(46192,23132), // object size
  NSPAIRA(_ZTI9S21127C16),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S21127C16),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  S21127C1  : virtual S21127C2 , S21127C11 , virtual S21127C12 , virtual S21127C14 {
  void *s21127c1f0;
  ::S20636C21_nt s21127c1f1;
  void *s21127c1f2;
  ::S21127C16 s21127c1f3;
  void *s21127c1f4[3];
  virtual  ~S21127C1(); // _ZN8S21127C1D2Ev
  virtual void  v1(); // _ZN8S21127C12v1Ev
  S21127C1(); // tgen
};
//SIG(1 S21127C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC6{ VBC5 vd Fp FC5} BC5 VBC7{ BC5 v4 FC5 FC6 FC5} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC8{ BC9{ BC5 BC4 Fi} VBC10{ m Fp} VBC7 vd v5 FC9 FD Fp[7]} v6 v7 Fp} BC11{ VBC5 VBC6 BC3 BC4 BC7 Fp Fc} VBC12{ VBC13{ BC5 VBC7 vd FC4 Fi Fp FC3 Fi FC3} BC11 vd v8 Fp Fs FC13 FC11[5] Fi} VBC14{ BC7 vd Fi Fs:16 Fs[5] Fc Fi FD Fc FC2} vd v1 Fp FC15{} Fp FC16{ v9 Fi Fs FC17{ BC6 BC18{ VBC10 BC7 BC5 BC4 v10 Fs FC7 Fp[2] FL FC3[5] Fi} vd FC10[9] Fi Fl FD}} Fp[3]}


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

static void Test_S21127C1()
{
  extern Class_Descriptor cd_S21127C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10493,21005)];
    init_test(&cd_S21127C1, buf);
    S21127C1 *dp, &lv = *(dp=new (buf) S21127C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(167872,84016), "sizeof(S21127C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21127C1)");
    /*is_ambiguous_... S21127C1::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*), ABISELECT(62752,31432), "S21127C1");
    check_base_class_offset(lv, (S21127C5*)(S21127C6*), ABISELECT(62752,31432), "S21127C1");
    check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C9*)(S21127C8*)(S21127C2*), ABISELECT(62752,31432), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C11*), ABISELECT(62752,31432), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C11*), ABISELECT(62752,31432), "S21127C1");
    /*is_ambiguous_... S21127C11::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C11*)(S21127C12*), ABISELECT(62752,31432), "S21127C1");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C4*)(S21127C11*)(S21127C12*), ABISELECT(62752,31432), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C3 */ AMB_check_base_class_offset(lv, (S21127C4*)(S21127C3*), ABISELECT(62720,31420), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C4*)(S21127C3*)(S21127C11*), ABISELECT(62720,31420), "S21127C1");
    check_base_class_offset(lv, (S21127C4*)(S21127C3*)(S21127C11*)(S21127C12*), ABISELECT(62720,31420), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C3 */ AMB_check_base_class_offset(lv, (S21127C6*)(S21127C3*), ABISELECT(62928,31520), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C6*)(S21127C11*), ABISELECT(62928,31520), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C6*)(S21127C3*)(S21127C11*), ABISELECT(62928,31520), "S21127C1");
    check_base_class_offset(lv, (S21127C6*)(S21127C11*)(S21127C12*), ABISELECT(62928,31520), "S21127C1");
    check_base_class_offset(lv, (S21127C6*)(S21127C3*)(S21127C11*)(S21127C12*), ABISELECT(62928,31520), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C3 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C3*), ABISELECT(55280,27692), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*), ABISELECT(63120,31616), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C3 */ AMB_check_base_class_offset(lv, (S21127C7*)(S21127C3*), ABISELECT(63120,31616), "S21127C1");
    check_base_class_offset(lv, (S21127C7*)(S21127C8*)(S21127C2*), ABISELECT(63120,31616), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C7*)(S21127C3*)(S21127C11*), ABISELECT(63120,31616), "S21127C1");
    check_base_class_offset(lv, (S21127C7*)(S21127C13*), ABISELECT(63120,31616), "S21127C1");
    check_base_class_offset(lv, (S21127C7*)(S21127C3*)(S21127C11*)(S21127C12*), ABISELECT(63120,31616), "S21127C1");
    check_base_class_offset(lv, (S21127C3*)(S21127C2*), ABISELECT(55280,27692), "S21127C1");
    /*is_ambiguous_... S21127C9::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C9*)(S21127C8*)(S21127C2*), ABISELECT(54640,27352), "S21127C1");
    check_base_class_offset(lv, (S21127C4*)(S21127C9*)(S21127C8*)(S21127C2*), ABISELECT(54808,27440), "S21127C1");
    check_base_class_offset(lv, (S21127C9*)(S21127C8*)(S21127C2*), ABISELECT(54640,27352), "S21127C1");
    check_base_class_offset(lv, (S4224C43_nt*)(S21127C8*)(S21127C2*), ABISELECT(64016,32064), "S21127C1");
    check_base_class_offset(lv, (S21127C8*)(S21127C2*), ABISELECT(54640,27352), "S21127C1");
    check_base_class_offset(lv, (S21127C2*), ABISELECT(54640,27352), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C3*)(S21127C11*), 0, "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C3*)(S21127C11*), 0, "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C4*)(S21127C11*), ABISELECT(7440,3728), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*)(S21127C11*), ABISELECT(7472,3740), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C7*)(S21127C11*), ABISELECT(7472,3740), "S21127C1");
    /*is_ambiguous_... S21127C1::S21127C11 */ AMB_check_base_class_offset(lv, (S21127C11*), 0, "S21127C1");
    /*is_ambiguous_... S21127C13::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C13*), ABISELECT(139632,69868), "S21127C1");
    check_base_class_offset(lv, (S21127C13*)(S21127C12*), ABISELECT(139632,69868), "S21127C1");
    /*is_ambiguous_... S21127C3::S21127C5 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C3*)(S21127C11*)(S21127C12*), ABISELECT(64032,32068), "S21127C1");
    check_base_class_offset(lv, (S21127C3*)(S21127C11*)(S21127C12*), ABISELECT(64032,32068), "S21127C1");
    /*is_ambiguous_... S21127C11::S21127C4 */ AMB_check_base_class_offset(lv, (S21127C4*)(S21127C11*)(S21127C12*), ABISELECT(71472,35796), "S21127C1");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C5*)(S21127C7*)(S21127C11*)(S21127C12*), ABISELECT(71504,35808), "S21127C1");
    /*is_ambiguous_... S21127C11::S21127C7 */ AMB_check_base_class_offset(lv, (S21127C7*)(S21127C11*)(S21127C12*), ABISELECT(71504,35808), "S21127C1");
    check_base_class_offset(lv, (S21127C11*)(S21127C12*), ABISELECT(64032,32068), "S21127C1");
    check_base_class_offset(lv, (S21127C12*), ABISELECT(64032,32068), "S21127C1");
    check_base_class_offset(lv, (S21127C5*)(S21127C7*)(S21127C14*), ABISELECT(157520,78812), "S21127C1");
    check_base_class_offset(lv, (S21127C7*)(S21127C14*), ABISELECT(157520,78812), "S21127C1");
    check_base_class_offset(lv, (S21127C14*), ABISELECT(157520,78812), "S21127C1");
    check_field_offset(lv, s21127c1f0, ABISELECT(8384,4196), "S21127C1.s21127c1f0");
    check_field_offset(lv, s21127c1f1, ABISELECT(8392,4200), "S21127C1.s21127c1f1");
    check_field_offset(lv, s21127c1f2, ABISELECT(8400,4204), "S21127C1.s21127c1f2");
    check_field_offset(lv, s21127c1f3, ABISELECT(8416,4208), "S21127C1.s21127c1f3");
    check_field_offset(lv, s21127c1f4, ABISELECT(54608,27340), "S21127C1.s21127c1f4");
    test_class_info(&lv, &cd_S21127C1);
    dp->~S21127C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21127C1(Test_S21127C1, "S21127C1", ABISELECT(167872,84016));

#else // __cplusplus

extern void _ZN8S21127C1C1Ev();
extern void _ZN8S21127C1D2Ev();
Name_Map name_map_S21127C1[] = {
  NSPAIR(_ZN8S21127C1C1Ev),
  NSPAIR(_ZN8S21127C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C6;
extern VTBL_ENTRY _ZTI8S21127C6[];
extern  VTBL_ENTRY _ZTV8S21127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C6[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C3;
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C9;
extern VTBL_ENTRY _ZTI8S21127C9[];
extern  VTBL_ENTRY _ZTV8S21127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S21127C8;
extern VTBL_ENTRY _ZTI8S21127C8[];
extern  VTBL_ENTRY _ZTV8S21127C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C8[];
extern Class_Descriptor cd_S21127C2;
extern VTBL_ENTRY _ZTI8S21127C2[];
extern  VTBL_ENTRY _ZTV8S21127C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C2[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C3;
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C11;
extern VTBL_ENTRY _ZTI9S21127C11[];
extern  VTBL_ENTRY _ZTV9S21127C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C11[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C13;
extern VTBL_ENTRY _ZTI9S21127C13[];
extern  VTBL_ENTRY _ZTV9S21127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C13[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C3;
extern VTBL_ENTRY _ZTI8S21127C3[];
extern  VTBL_ENTRY _ZTV8S21127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C3[];
extern Class_Descriptor cd_S21127C4;
extern VTBL_ENTRY _ZTI8S21127C4[];
extern  VTBL_ENTRY _ZTV8S21127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C4[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C11;
extern VTBL_ENTRY _ZTI9S21127C11[];
extern  VTBL_ENTRY _ZTV9S21127C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C11[];
extern Class_Descriptor cd_S21127C12;
extern VTBL_ENTRY _ZTI9S21127C12[];
extern  VTBL_ENTRY _ZTV9S21127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21127C12[];
extern Class_Descriptor cd_S21127C5;
extern VTBL_ENTRY _ZTI8S21127C5[];
extern  VTBL_ENTRY _ZTV8S21127C5[];
extern Class_Descriptor cd_S21127C7;
extern VTBL_ENTRY _ZTI8S21127C7[];
extern  VTBL_ENTRY _ZTV8S21127C7[];
extern Class_Descriptor cd_S21127C14;
extern VTBL_ENTRY _ZTI9S21127C14[];
extern  VTBL_ENTRY _ZTV9S21127C14[];
static Base_Class bases_S21127C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21127C5,    ABISELECT(62752,31432), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21127C4,    ABISELECT(62720,31420), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21127C6,    ABISELECT(62928,31520), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21127C5,    ABISELECT(55280,27692), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C5,    ABISELECT(63120,31616), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C7,    ABISELECT(63120,31616), //bcp->offset
    77, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21127C3,    ABISELECT(55280,27692), //bcp->offset
    49, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21127C5,    ABISELECT(54640,27352), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21127C4,    ABISELECT(54808,27440), //bcp->offset
    46, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21127C9,    ABISELECT(54640,27352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(64016,32064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21127C8,    ABISELECT(54640,27352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21127C2,    ABISELECT(54640,27352), //bcp->offset
    25, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S21127C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21127C4,    ABISELECT(7440,3728), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21127C5,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(7472,3740), //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
    29, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21127C11,    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
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21127C5,    ABISELECT(139632,69868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S21127C13,    ABISELECT(139632,69868), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S21127C5,    ABISELECT(64032,32068), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S21127C3,    ABISELECT(64032,32068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21127C4,    ABISELECT(71472,35796), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21127C5,    ABISELECT(71504,35808), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(71504,35808), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21127C11,    ABISELECT(64032,32068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21127C12,    ABISELECT(64032,32068), //bcp->offset
    85, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21127C5,    ABISELECT(157520,78812), //bcp->offset
    -1, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S21127C7,    ABISELECT(157520,78812), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S21127C14,    ABISELECT(157520,78812), //bcp->offset
    120, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21127C1[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C1D1Ev();
extern void _ZN8S21127C1D0Ev();
extern void _ZN8S21127C12v1Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S21127C1D1Ev,_ZTv0_n44_N8S21127C1D1Ev)();
extern void ABISELECT(_ZThn54640_N8S21127C1D1Ev,_ZThn27352_N8S21127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21127C1D0Ev,_ZTv0_n44_N8S21127C1D0Ev)();
extern void ABISELECT(_ZThn54640_N8S21127C1D0Ev,_ZThn27352_N8S21127C1D0Ev)() __attribute__((weak));
extern void _ZN8S21127C82v5Ev();
extern void _ZN8S21127C22v6Ev();
extern void _ZN8S21127C22v7Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S21127C1D1Ev,_ZTv0_n36_N8S21127C1D1Ev)();
extern void ABISELECT(_ZThn55280_N8S21127C1D1Ev,_ZThn27692_N8S21127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21127C1D0Ev,_ZTv0_n36_N8S21127C1D0Ev)();
extern void ABISELECT(_ZThn55280_N8S21127C1D0Ev,_ZThn27692_N8S21127C1D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S21127C1D1Ev,_ZTv0_n16_N8S21127C1D1Ev)();
extern void ABISELECT(_ZThn62928_N8S21127C1D1Ev,_ZThn31520_N8S21127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C1D0Ev,_ZTv0_n16_N8S21127C1D0Ev)();
extern void ABISELECT(_ZThn62928_N8S21127C1D0Ev,_ZThn31520_N8S21127C1D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n80_N8S21127C1D1Ev,_ZTv0_n40_N8S21127C1D1Ev)();
extern void ABISELECT(_ZThn64032_N8S21127C1D1Ev,_ZThn32068_N8S21127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21127C1D0Ev,_ZTv0_n40_N8S21127C1D0Ev)();
extern void ABISELECT(_ZThn64032_N8S21127C1D0Ev,_ZThn32068_N8S21127C1D0Ev)() __attribute__((weak));
extern void _ZN9S21127C122v8Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S21127C1D1Ev,_ZTv0_n24_N8S21127C1D1Ev)();
extern void ABISELECT(_ZThn139632_N8S21127C1D1Ev,_ZThn69868_N8S21127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21127C1D0Ev,_ZTv0_n24_N8S21127C1D0Ev)();
extern void ABISELECT(_ZThn139632_N8S21127C1D0Ev,_ZThn69868_N8S21127C1D0Ev)() __attribute__((weak));
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S21127C1D1Ev,_ZTv0_n24_N8S21127C1D1Ev)();
extern void ABISELECT(_ZThn157520_N8S21127C1D1Ev,_ZThn78812_N8S21127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21127C1D0Ev,_ZTv0_n24_N8S21127C1D0Ev)();
extern void ABISELECT(_ZThn157520_N8S21127C1D0Ev,_ZThn78812_N8S21127C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21127C1[] = {
  ABISELECT(157520,78812),
  ABISELECT(139632,69868),
  ABISELECT(64032,32068),
  ABISELECT(64016,32064),
  ABISELECT(55280,27692),
  ABISELECT(54640,27352),
  ABISELECT(63120,31616),
  ABISELECT(62928,31520),
  ABISELECT(62752,31432),
  ABISELECT(62720,31420),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21127C12v1Ev,
  ABISELECT(55312,27704),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  0,
  0,
  0,
  ABISELECT(-54640,-27352),
  0,
  0,
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  ABISELECT(-54640,-27352),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21127C1D1Ev,_ZTv0_n44_N8S21127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21127C1D0Ev,_ZTv0_n44_N8S21127C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21127C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21127C22v6Ev,
  (VTBL_ENTRY)&_ZN8S21127C22v7Ev,
  ABISELECT(7944,3992),
  ABISELECT(-54808,-27440),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  ABISELECT(-55280,-27692),
  0,
  0,
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-55280,-27692),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21127C1D1Ev,_ZTv0_n36_N8S21127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21127C1D0Ev,_ZTv0_n36_N8S21127C1D0Ev),
  ABISELECT(32,12),
  ABISELECT(-62720,-31420),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  0,
  0,
  ABISELECT(-62752,-31432),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  ABISELECT(-62928,-31520),
  ABISELECT(-176,-88),
  ABISELECT(-62928,-31520),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C1D1Ev,_ZTv0_n16_N8S21127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C1D0Ev,_ZTv0_n16_N8S21127C1D0Ev),
  0,
  0,
  0,
  ABISELECT(-63120,-31616),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  0,
  ABISELECT(7472,3740),
  ABISELECT(-64032,-32068),
  0,
  0,
  ABISELECT(75600,37800),
  ABISELECT(-912,-452),
  ABISELECT(-1104,-548),
  ABISELECT(-1280,-636),
  ABISELECT(-1312,-648),
  ABISELECT(-64032,-32068),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21127C1D1Ev,_ZTv0_n40_N8S21127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21127C1D0Ev,_ZTv0_n40_N8S21127C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21127C122v8Ev,
  ABISELECT(-8720,-4364),
  ABISELECT(-71472,-35796),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  ABISELECT(-71504,-35808),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  ABISELECT(-139632,-69868),
  0,
  0,
  ABISELECT(-76512,-38252),
  ABISELECT(-139632,-69868),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21127C1D1Ev,_ZTv0_n24_N8S21127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21127C1D0Ev,_ZTv0_n24_N8S21127C1D0Ev),
  ABISELECT(-157520,-78812),
  0,
  0,
  0,
  ABISELECT(-157520,-78812),
  (VTBL_ENTRY)&(_ZTI8S21127C1[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21127C1D1Ev,_ZTv0_n24_N8S21127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21127C1D0Ev,_ZTv0_n24_N8S21127C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21127C1[];
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C11D1Ev();
extern void _ZN9S21127C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C11__8S21127C1[] = {
  ABISELECT(63120,31616),
  ABISELECT(62928,31520),
  ABISELECT(62752,31432),
  ABISELECT(62720,31420),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C39S21127C11__A1__8S21127C1[] = {
  ABISELECT(63120,31616),
  ABISELECT(62928,31520),
  ABISELECT(62752,31432),
  ABISELECT(62720,31420),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C39S21127C11__A1__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(-62720,-31420),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C39S21127C11__A1__8S21127C1[] = {
  0,
  0,
  ABISELECT(-62752,-31432),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZThn62928_N8S21127C3D1Ev,_ZThn31520_N8S21127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
extern void ABISELECT(_ZThn62928_N8S21127C3D0Ev,_ZThn31520_N8S21127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C39S21127C11__A1__8S21127C1[] = {
  ABISELECT(-62928,-31520),
  ABISELECT(-176,-88),
  ABISELECT(-62928,-31520),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C39S21127C11__A1__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(-63120,-31616),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C49S21127C11__A2__8S21127C1[] = {
  ABISELECT(55312,27704),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C49S21127C11__A2__8S21127C1[] = {
  0,
  0,
  ABISELECT(-55312,-27704),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__9S21127C11__8S21127C1[] = {
  0,
  0,
  ABISELECT(-62752,-31432),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev)();
extern void ABISELECT(_ZThn62928_N9S21127C11D1Ev,_ZThn31520_N9S21127C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev)();
extern void ABISELECT(_ZThn62928_N9S21127C11D0Ev,_ZThn31520_N9S21127C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C11__8S21127C1[] = {
  ABISELECT(-62928,-31520),
  ABISELECT(-176,-88),
  ABISELECT(-62928,-31520),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C11__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(-62720,-31420),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__9S21127C11__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(-63120,-31616),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__A__9S21127C11__8S21127C1[] = {
  ABISELECT(55312,27704),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C2D1Ev();
extern void _ZN8S21127C2D0Ev();
extern void _ZN8S21127C82v5Ev();
extern void _ZN8S21127C22v6Ev();
extern void _ZN8S21127C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C2__8S21127C1[] = {
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21127C82v5Ev,
  (VTBL_ENTRY)&_ZN8S21127C22v6Ev,
  (VTBL_ENTRY)&_ZN8S21127C22v7Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C8D1Ev();
extern void _ZN8S21127C8D0Ev();
extern void _ZN8S21127C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C88S21127C2__8S21127C1[] = {
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21127C82v5Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C98S21127C88S21127C2__8S21127C1[] = {
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C48S21127C98S21127C88S21127C2__A1__8S21127C1[] = {
  ABISELECT(7944,3992),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C48S21127C98S21127C88S21127C2__A1__8S21127C1[] = {
  0,
  0,
  ABISELECT(-7944,-3992),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C98S21127C88S21127C2__8S21127C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A1__8S21127C98S21127C88S21127C2__8S21127C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S21127C9[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C48S21127C9__8S21127C88S21127C2__8S21127C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A1__8S21127C88S21127C2__8S21127C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C88S21127C2__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S21127C8[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S21127C2D1Ev,_ZTv0_n36_N8S21127C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S21127C2D1Ev,_ZThn340_N8S21127C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21127C2D0Ev,_ZTv0_n36_N8S21127C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S21127C2D0Ev,_ZThn340_N8S21127C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C3__8S21127C2__8S21127C1[] = {
  ABISELECT(-640,-340),
  0,
  0,
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21127C2D1Ev,_ZTv0_n36_N8S21127C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21127C2D0Ev,_ZTv0_n36_N8S21127C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C2__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(-8080,-4068),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C2__8S21127C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C2D1Ev,_ZTv0_n16_N8S21127C2D1Ev)();
extern void ABISELECT(_ZThn8288_N8S21127C2D1Ev,_ZThn4168_N8S21127C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C2D0Ev,_ZTv0_n16_N8S21127C2D0Ev)();
extern void ABISELECT(_ZThn8288_N8S21127C2D0Ev,_ZThn4168_N8S21127C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C2__8S21127C1[] = {
  ABISELECT(-8288,-4168),
  ABISELECT(-176,-88),
  ABISELECT(-8288,-4168),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C2D1Ev,_ZTv0_n16_N8S21127C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C2D0Ev,_ZTv0_n16_N8S21127C2D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C2__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C48S21127C98S21127C8__A1__8S21127C2__8S21127C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21127C2[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C3__8S21127C1[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C3__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C3__8S21127C1[] = {
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZThn7648_N8S21127C3D1Ev,_ZThn3828_N8S21127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
extern void ABISELECT(_ZThn7648_N8S21127C3D0Ev,_ZThn3828_N8S21127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C3__8S21127C1[] = {
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C3__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C1[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C4__8S21127C1[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C6D1Ev();
extern void _ZN8S21127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C6D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C6__8S21127C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S21127C6[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C12D1Ev();
extern void _ZN9S21127C12D0Ev();
extern void _ZN9S21127C122v8Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C12__8S21127C1[] = {
  ABISELECT(75600,37800),
  ABISELECT(-912,-452),
  ABISELECT(-1104,-548),
  ABISELECT(-1280,-636),
  ABISELECT(-1312,-648),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21127C122v8Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C11D1Ev();
extern void _ZN9S21127C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C119S21127C12__A1__8S21127C1[] = {
  ABISELECT(-912,-452),
  ABISELECT(-1104,-548),
  ABISELECT(-1280,-636),
  ABISELECT(-1312,-648),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C11D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C3D1Ev();
extern void _ZN8S21127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C39S21127C119S21127C12__A2__8S21127C1[] = {
  ABISELECT(-912,-452),
  ABISELECT(-1104,-548),
  ABISELECT(-1280,-636),
  ABISELECT(-1312,-648),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__8S21127C39S21127C119S21127C12__A2__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(1312,648),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C39S21127C119S21127C12__A2__8S21127C1[] = {
  0,
  0,
  ABISELECT(1280,636),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21127C6__8S21127C39S21127C119S21127C12__A2__8S21127C1[] = {
  ABISELECT(1104,548),
  ABISELECT(-176,-88),
  ABISELECT(1104,548),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__8S21127C39S21127C119S21127C12__A2__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(912,452),
  (VTBL_ENTRY)&(_ZTI8S21127C3[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C49S21127C119S21127C12__A3__8S21127C1[] = {
  ABISELECT(-8720,-4364),
  0,
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__8S21127C49S21127C119S21127C12__A3__8S21127C1[] = {
  0,
  0,
  ABISELECT(8720,4364),
  (VTBL_ENTRY)&(_ZTI8S21127C4[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__9S21127C119S21127C12__A1__8S21127C1[] = {
  0,
  0,
  ABISELECT(1280,636),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C119S21127C12__A1__8S21127C1[] = {
  ABISELECT(1104,548),
  ABISELECT(-176,-88),
  ABISELECT(1104,548),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C119S21127C12__A1__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(1312,648),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__9S21127C119S21127C12__A1__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(912,452),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__A__9S21127C119S21127C12__A1__8S21127C1[] = {
  ABISELECT(-8720,-4364),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S21127C11[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N9S21127C12D1Ev,_ZTv0_n24_N9S21127C12D1Ev)();
extern void ABISELECT(_ZThn75600_N9S21127C12D1Ev,_ZThn37800_N9S21127C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21127C12D0Ev,_ZTv0_n24_N9S21127C12D0Ev)();
extern void ABISELECT(_ZThn75600_N9S21127C12D0Ev,_ZThn37800_N9S21127C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21127C13__9S21127C12__8S21127C1[] = {
  ABISELECT(-75600,-37800),
  0,
  0,
  ABISELECT(-76512,-38252),
  ABISELECT(-75600,-37800),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21127C12D1Ev,_ZTv0_n24_N9S21127C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21127C12D0Ev,_ZTv0_n24_N9S21127C12D0Ev),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__9S21127C12__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(912,452),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C5__A2__9S21127C12__8S21127C1[] = {
  0,
  0,
  ABISELECT(1280,636),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21127C12D1Ev,_ZTv0_n16_N9S21127C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21127C12D0Ev,_ZTv0_n16_N9S21127C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21127C6__9S21127C12__8S21127C1[] = {
  ABISELECT(1104,548),
  ABISELECT(-176,-88),
  ABISELECT(1104,548),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C12D1Ev,_ZTv0_n16_N9S21127C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21127C12D0Ev,_ZTv0_n16_N9S21127C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21127C4__9S21127C12__8S21127C1[] = {
  ABISELECT(32,12),
  ABISELECT(1312,648),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21127C49S21127C11__A1__9S21127C12__8S21127C1[] = {
  ABISELECT(-8720,-4364),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S21127C12[0]),
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN9S21127C13D1Ev();
extern void _ZN9S21127C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21127C13__8S21127C1[] = {
  ABISELECT(-76512,-38252),
  0,
  (VTBL_ENTRY)&(_ZTI9S21127C13[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN9S21127C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21127C13D0Ev,
};
extern void _ZN8S21127C52v2Ev();
extern void _ZN8S21127C52v3Ev();
extern void _ZN8S21127C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21127C7__9S21127C13__8S21127C1[] = {
  0,
  0,
  0,
  ABISELECT(76512,38252),
  (VTBL_ENTRY)&(_ZTI9S21127C13[0]),
  (VTBL_ENTRY)&_ZN8S21127C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21127C52v3Ev,
  (VTBL_ENTRY)&_ZN8S21127C72v4Ev,
};
static  VTT_ENTRY vtt_S21127C1[] = {
  {&(_ZTV8S21127C1[12]),  12,131},
  {&(_tg__ZTV9S21127C11__8S21127C1[6]),  6,10},
  {&(_tg__ZTV8S21127C39S21127C11__A1__8S21127C1[6]),  6,10},
  {&(_tg__ZTV8S21127C4__8S21127C39S21127C11__A1__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C39S21127C11__A1__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C39S21127C11__A1__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C39S21127C11__A1__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C49S21127C11__A2__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C49S21127C11__A2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C5__9S21127C11__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__9S21127C11__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C11__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C7__9S21127C11__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C4__A__9S21127C11__8S21127C1[3]),  3,3},
  {&(_ZTV8S21127C1[39]),  39,131},
  {&(_ZTV8S21127C1[58]),  58,131},
  {&(_ZTV8S21127C1[65]),  65,131},
  {&(_ZTV8S21127C1[69]),  69,131},
  {&(_ZTV8S21127C1[75]),  75,131},
  {&(_ZTV8S21127C1[82]),  82,131},
  {&(_ZTV8S21127C1[49]),  49,131},
  {&(_ZTV8S21127C1[20]),  20,131},
  {&(_ZTV8S21127C1[97]),  97,131},
  {&(_ZTV8S21127C1[116]),  116,131},
  {&(_ZTV8S21127C1[105]),  105,131},
  {&(_ZTV8S21127C1[107]),  107,131},
  {&(_ZTV8S21127C1[126]),  126,131},
  {&(_tg__ZTV8S21127C2__8S21127C1[8]),  8,15},
  {&(_tg__ZTV8S21127C88S21127C2__8S21127C1[5]),  5,10},
  {&(_tg__ZTV8S21127C98S21127C88S21127C2__8S21127C1[3]),  3,5},
  {&(_tg__ZTV8S21127C48S21127C98S21127C88S21127C2__A1__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C48S21127C98S21127C88S21127C2__A1__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C4__8S21127C98S21127C88S21127C2__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__A1__8S21127C98S21127C88S21127C2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C48S21127C9__8S21127C88S21127C2__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__A1__8S21127C88S21127C2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C88S21127C2__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C3__8S21127C2__8S21127C1[9]),  9,13},
  {&(_tg__ZTV8S21127C4__8S21127C2__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C2__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C48S21127C98S21127C8__A1__8S21127C2__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C3__8S21127C1[6]),  6,10},
  {&(_tg__ZTV8S21127C4__8S21127C3__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C3__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C3__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C3__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C4__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C4__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C1[3]),  3,5},
  {&(_tg__ZTV8S21127C5__8S21127C6__8S21127C1[4]),  4,6},
  {&(_tg__ZTV9S21127C12__8S21127C1[7]),  7,12},
  {&(_tg__ZTV9S21127C119S21127C12__A1__8S21127C1[6]),  6,10},
  {&(_tg__ZTV8S21127C39S21127C119S21127C12__A2__8S21127C1[6]),  6,10},
  {&(_tg__ZTV8S21127C4__8S21127C39S21127C119S21127C12__A2__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C39S21127C119S21127C12__A2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__8S21127C39S21127C119S21127C12__A2__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C7__8S21127C39S21127C119S21127C12__A2__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C49S21127C119S21127C12__A3__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C5__8S21127C49S21127C119S21127C12__A3__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C5__9S21127C119S21127C12__A1__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__9S21127C119S21127C12__A1__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C119S21127C12__A1__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C7__9S21127C119S21127C12__A1__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C4__A__9S21127C119S21127C12__A1__8S21127C1[3]),  3,3},
  {&(_tg__ZTV9S21127C13__9S21127C12__8S21127C1[6]),  6,10},
  {&(_tg__ZTV8S21127C7__9S21127C12__8S21127C1[5]),  5,8},
  {&(_tg__ZTV8S21127C5__A2__9S21127C12__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C6__9S21127C12__8S21127C1[4]),  4,6},
  {&(_tg__ZTV8S21127C4__9S21127C12__8S21127C1[3]),  3,3},
  {&(_tg__ZTV8S21127C49S21127C11__A1__9S21127C12__8S21127C1[3]),  3,3},
  {&(_tg__ZTV9S21127C13__8S21127C1[3]),  3,7},
  {&(_tg__ZTV8S21127C7__9S21127C13__8S21127C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21127C1[];
extern  VTBL_ENTRY _ZTV8S21127C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21127C1[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21127C12D0Ev,_ZTv0_n24_N9S21127C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S21127C12D0Ev,_ZThn37800_N9S21127C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21127C12D1Ev,_ZTv0_n24_N9S21127C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S21127C12D1Ev,_ZThn37800_N9S21127C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C2D0Ev,_ZTv0_n16_N8S21127C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S21127C2D0Ev,_ZThn4168_N8S21127C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C2D1Ev,_ZTv0_n16_N8S21127C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S21127C2D1Ev,_ZThn4168_N8S21127C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21127C2D0Ev,_ZTv0_n36_N8S21127C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S21127C2D0Ev,_ZThn340_N8S21127C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21127C2D1Ev,_ZTv0_n36_N8S21127C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S21127C2D1Ev,_ZThn340_N8S21127C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C11D0Ev,_ZTv0_n16_N9S21127C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62928_N9S21127C11D0Ev,_ZThn31520_N9S21127C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21127C11D1Ev,_ZTv0_n16_N9S21127C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62928_N9S21127C11D1Ev,_ZThn31520_N9S21127C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D0Ev,_ZTv0_n16_N8S21127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S21127C3D0Ev,_ZThn3828_N8S21127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn62928_N8S21127C3D0Ev,_ZThn31520_N8S21127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C3D1Ev,_ZTv0_n16_N8S21127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S21127C3D1Ev,_ZThn3828_N8S21127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn62928_N8S21127C3D1Ev,_ZThn31520_N8S21127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21127C1D0Ev,_ZTv0_n24_N8S21127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157520_N8S21127C1D0Ev,_ZThn78812_N8S21127C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn139632_N8S21127C1D0Ev,_ZThn69868_N8S21127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21127C1D1Ev,_ZTv0_n24_N8S21127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157520_N8S21127C1D1Ev,_ZThn78812_N8S21127C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn139632_N8S21127C1D1Ev,_ZThn69868_N8S21127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21127C1D0Ev,_ZTv0_n40_N8S21127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64032_N8S21127C1D0Ev,_ZThn32068_N8S21127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21127C1D1Ev,_ZTv0_n40_N8S21127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64032_N8S21127C1D1Ev,_ZThn32068_N8S21127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C1D0Ev,_ZTv0_n16_N8S21127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62928_N8S21127C1D0Ev,_ZThn31520_N8S21127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21127C1D1Ev,_ZTv0_n16_N8S21127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn62928_N8S21127C1D1Ev,_ZThn31520_N8S21127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21127C1D0Ev,_ZTv0_n36_N8S21127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55280_N8S21127C1D0Ev,_ZThn27692_N8S21127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21127C1D1Ev,_ZTv0_n36_N8S21127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55280_N8S21127C1D1Ev,_ZThn27692_N8S21127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21127C1D0Ev,_ZTv0_n44_N8S21127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54640_N8S21127C1D0Ev,_ZThn27352_N8S21127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21127C1D1Ev,_ZTv0_n44_N8S21127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54640_N8S21127C1D1Ev,_ZThn27352_N8S21127C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21127C1 = {  "S21127C1", // class name
  bases_S21127C1, 31,
  &(vtc_S21127C1[0]), // expected_vtbl_contents
  &(vtt_S21127C1[0]), // expected_vtt_contents
  ABISELECT(167872,84016), // object size
  NSPAIRA(_ZTI8S21127C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21127C1),131, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21127C1),74, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6984C2  {
  virtual void  v54(); // _ZN7S6984C23v54Ev
  virtual void  v55(); // _ZN7S6984C23v55Ev
  virtual void  v56(); // _ZN7S6984C23v56Ev
  virtual void  v57(); // _ZN7S6984C23v57Ev
  virtual void  v58(); // _ZN7S6984C23v58Ev
  virtual void  v59(); // _ZN7S6984C23v59Ev
  virtual void  v60(); // _ZN7S6984C23v60Ev
  virtual void  v61(); // _ZN7S6984C23v61Ev
  virtual void  v62(); // _ZN7S6984C23v62Ev
  virtual void  v63(); // _ZN7S6984C23v63Ev
  virtual void  v64(); // _ZN7S6984C23v64Ev
  virtual void  v65(); // _ZN7S6984C23v65Ev
  virtual void  v66(); // _ZN7S6984C23v66Ev
  virtual void  v67(); // _ZN7S6984C23v67Ev
  virtual void  v68(); // _ZN7S6984C23v68Ev
  virtual void  v69(); // _ZN7S6984C23v69Ev
  virtual void  v70(); // _ZN7S6984C23v70Ev
  virtual void  v71(); // _ZN7S6984C23v71Ev
  virtual void  v72(); // _ZN7S6984C23v72Ev
  virtual void  v73(); // _ZN7S6984C23v73Ev
  virtual void  v74(); // _ZN7S6984C23v74Ev
  virtual void  v75(); // _ZN7S6984C23v75Ev
  virtual void  v76(); // _ZN7S6984C23v76Ev
  virtual void  v77(); // _ZN7S6984C23v77Ev
  virtual void  v78(); // _ZN7S6984C23v78Ev
  virtual void  v79(); // _ZN7S6984C23v79Ev
  virtual void  v80(); // _ZN7S6984C23v80Ev
  virtual void  v81(); // _ZN7S6984C23v81Ev
  virtual void  v82(); // _ZN7S6984C23v82Ev
  virtual void  v83(); // _ZN7S6984C23v83Ev
  virtual void  v84(); // _ZN7S6984C23v84Ev
  virtual void  v85(); // _ZN7S6984C23v85Ev
  virtual void  v86(); // _ZN7S6984C23v86Ev
  virtual void  v87(); // _ZN7S6984C23v87Ev
  virtual void  v88(); // _ZN7S6984C23v88Ev
  virtual void  v89(); // _ZN7S6984C23v89Ev
  virtual void  v90(); // _ZN7S6984C23v90Ev
  virtual void  v91(); // _ZN7S6984C23v91Ev
  virtual void  v92(); // _ZN7S6984C23v92Ev
  virtual void  v93(); // _ZN7S6984C23v93Ev
  virtual void  v94(); // _ZN7S6984C23v94Ev
  virtual void  v95(); // _ZN7S6984C23v95Ev
  virtual void  v96(); // _ZN7S6984C23v96Ev
  virtual void  v97(); // _ZN7S6984C23v97Ev
  virtual void  v98(); // _ZN7S6984C23v98Ev
  virtual void  v99(); // _ZN7S6984C23v99Ev
  virtual void  v100(); // _ZN7S6984C24v100Ev
  virtual void  v101(); // _ZN7S6984C24v101Ev
  virtual void  v102(); // _ZN7S6984C24v102Ev
  virtual void  v103(); // _ZN7S6984C24v103Ev
  virtual void  v104(); // _ZN7S6984C24v104Ev
  virtual void  v105(); // _ZN7S6984C24v105Ev
  virtual void  v106(); // _ZN7S6984C24v106Ev
  virtual void  v107(); // _ZN7S6984C24v107Ev
  virtual void  v108(); // _ZN7S6984C24v108Ev
  virtual void  v109(); // _ZN7S6984C24v109Ev
  virtual void  v110(); // _ZN7S6984C24v110Ev
  virtual void  v111(); // _ZN7S6984C24v111Ev
  virtual void  v112(); // _ZN7S6984C24v112Ev
  ~S6984C2(); // tgen
  S6984C2(); // tgen
};
//SIG(-1 S6984C2) C1{ 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}


void  S6984C2 ::v54(){vfunc_called(this, "_ZN7S6984C23v54Ev");}
void  S6984C2 ::v55(){vfunc_called(this, "_ZN7S6984C23v55Ev");}
void  S6984C2 ::v56(){vfunc_called(this, "_ZN7S6984C23v56Ev");}
void  S6984C2 ::v57(){vfunc_called(this, "_ZN7S6984C23v57Ev");}
void  S6984C2 ::v58(){vfunc_called(this, "_ZN7S6984C23v58Ev");}
void  S6984C2 ::v59(){vfunc_called(this, "_ZN7S6984C23v59Ev");}
void  S6984C2 ::v60(){vfunc_called(this, "_ZN7S6984C23v60Ev");}
void  S6984C2 ::v61(){vfunc_called(this, "_ZN7S6984C23v61Ev");}
void  S6984C2 ::v62(){vfunc_called(this, "_ZN7S6984C23v62Ev");}
void  S6984C2 ::v63(){vfunc_called(this, "_ZN7S6984C23v63Ev");}
void  S6984C2 ::v64(){vfunc_called(this, "_ZN7S6984C23v64Ev");}
void  S6984C2 ::v65(){vfunc_called(this, "_ZN7S6984C23v65Ev");}
void  S6984C2 ::v66(){vfunc_called(this, "_ZN7S6984C23v66Ev");}
void  S6984C2 ::v67(){vfunc_called(this, "_ZN7S6984C23v67Ev");}
void  S6984C2 ::v68(){vfunc_called(this, "_ZN7S6984C23v68Ev");}
void  S6984C2 ::v69(){vfunc_called(this, "_ZN7S6984C23v69Ev");}
void  S6984C2 ::v70(){vfunc_called(this, "_ZN7S6984C23v70Ev");}
void  S6984C2 ::v71(){vfunc_called(this, "_ZN7S6984C23v71Ev");}
void  S6984C2 ::v72(){vfunc_called(this, "_ZN7S6984C23v72Ev");}
void  S6984C2 ::v73(){vfunc_called(this, "_ZN7S6984C23v73Ev");}
void  S6984C2 ::v74(){vfunc_called(this, "_ZN7S6984C23v74Ev");}
void  S6984C2 ::v75(){vfunc_called(this, "_ZN7S6984C23v75Ev");}
void  S6984C2 ::v76(){vfunc_called(this, "_ZN7S6984C23v76Ev");}
void  S6984C2 ::v77(){vfunc_called(this, "_ZN7S6984C23v77Ev");}
void  S6984C2 ::v78(){vfunc_called(this, "_ZN7S6984C23v78Ev");}
void  S6984C2 ::v79(){vfunc_called(this, "_ZN7S6984C23v79Ev");}
void  S6984C2 ::v80(){vfunc_called(this, "_ZN7S6984C23v80Ev");}
void  S6984C2 ::v81(){vfunc_called(this, "_ZN7S6984C23v81Ev");}
void  S6984C2 ::v82(){vfunc_called(this, "_ZN7S6984C23v82Ev");}
void  S6984C2 ::v83(){vfunc_called(this, "_ZN7S6984C23v83Ev");}
void  S6984C2 ::v84(){vfunc_called(this, "_ZN7S6984C23v84Ev");}
void  S6984C2 ::v85(){vfunc_called(this, "_ZN7S6984C23v85Ev");}
void  S6984C2 ::v86(){vfunc_called(this, "_ZN7S6984C23v86Ev");}
void  S6984C2 ::v87(){vfunc_called(this, "_ZN7S6984C23v87Ev");}
void  S6984C2 ::v88(){vfunc_called(this, "_ZN7S6984C23v88Ev");}
void  S6984C2 ::v89(){vfunc_called(this, "_ZN7S6984C23v89Ev");}
void  S6984C2 ::v90(){vfunc_called(this, "_ZN7S6984C23v90Ev");}
void  S6984C2 ::v91(){vfunc_called(this, "_ZN7S6984C23v91Ev");}
void  S6984C2 ::v92(){vfunc_called(this, "_ZN7S6984C23v92Ev");}
void  S6984C2 ::v93(){vfunc_called(this, "_ZN7S6984C23v93Ev");}
void  S6984C2 ::v94(){vfunc_called(this, "_ZN7S6984C23v94Ev");}
void  S6984C2 ::v95(){vfunc_called(this, "_ZN7S6984C23v95Ev");}
void  S6984C2 ::v96(){vfunc_called(this, "_ZN7S6984C23v96Ev");}
void  S6984C2 ::v97(){vfunc_called(this, "_ZN7S6984C23v97Ev");}
void  S6984C2 ::v98(){vfunc_called(this, "_ZN7S6984C23v98Ev");}
void  S6984C2 ::v99(){vfunc_called(this, "_ZN7S6984C23v99Ev");}
void  S6984C2 ::v100(){vfunc_called(this, "_ZN7S6984C24v100Ev");}
void  S6984C2 ::v101(){vfunc_called(this, "_ZN7S6984C24v101Ev");}
void  S6984C2 ::v102(){vfunc_called(this, "_ZN7S6984C24v102Ev");}
void  S6984C2 ::v103(){vfunc_called(this, "_ZN7S6984C24v103Ev");}
void  S6984C2 ::v104(){vfunc_called(this, "_ZN7S6984C24v104Ev");}
void  S6984C2 ::v105(){vfunc_called(this, "_ZN7S6984C24v105Ev");}
void  S6984C2 ::v106(){vfunc_called(this, "_ZN7S6984C24v106Ev");}
void  S6984C2 ::v107(){vfunc_called(this, "_ZN7S6984C24v107Ev");}
void  S6984C2 ::v108(){vfunc_called(this, "_ZN7S6984C24v108Ev");}
void  S6984C2 ::v109(){vfunc_called(this, "_ZN7S6984C24v109Ev");}
void  S6984C2 ::v110(){vfunc_called(this, "_ZN7S6984C24v110Ev");}
void  S6984C2 ::v111(){vfunc_called(this, "_ZN7S6984C24v111Ev");}
void  S6984C2 ::v112(){vfunc_called(this, "_ZN7S6984C24v112Ev");}
S6984C2 ::~S6984C2(){ note_dtor("S6984C2", this);} // tgen
S6984C2 ::S6984C2(){ note_ctor("S6984C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6984C2C1Ev();
extern void _ZN7S6984C2D1Ev();
Name_Map name_map_S6984C2[] = {
  NSPAIR(_ZN7S6984C2C1Ev),
  NSPAIR(_ZN7S6984C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6984C2[];
extern void _ZN7S6984C23v54Ev();
extern void _ZN7S6984C23v55Ev();
extern void _ZN7S6984C23v56Ev();
extern void _ZN7S6984C23v57Ev();
extern void _ZN7S6984C23v58Ev();
extern void _ZN7S6984C23v59Ev();
extern void _ZN7S6984C23v60Ev();
extern void _ZN7S6984C23v61Ev();
extern void _ZN7S6984C23v62Ev();
extern void _ZN7S6984C23v63Ev();
extern void _ZN7S6984C23v64Ev();
extern void _ZN7S6984C23v65Ev();
extern void _ZN7S6984C23v66Ev();
extern void _ZN7S6984C23v67Ev();
extern void _ZN7S6984C23v68Ev();
extern void _ZN7S6984C23v69Ev();
extern void _ZN7S6984C23v70Ev();
extern void _ZN7S6984C23v71Ev();
extern void _ZN7S6984C23v72Ev();
extern void _ZN7S6984C23v73Ev();
extern void _ZN7S6984C23v74Ev();
extern void _ZN7S6984C23v75Ev();
extern void _ZN7S6984C23v76Ev();
extern void _ZN7S6984C23v77Ev();
extern void _ZN7S6984C23v78Ev();
extern void _ZN7S6984C23v79Ev();
extern void _ZN7S6984C23v80Ev();
extern void _ZN7S6984C23v81Ev();
extern void _ZN7S6984C23v82Ev();
extern void _ZN7S6984C23v83Ev();
extern void _ZN7S6984C23v84Ev();
extern void _ZN7S6984C23v85Ev();
extern void _ZN7S6984C23v86Ev();
extern void _ZN7S6984C23v87Ev();
extern void _ZN7S6984C23v88Ev();
extern void _ZN7S6984C23v89Ev();
extern void _ZN7S6984C23v90Ev();
extern void _ZN7S6984C23v91Ev();
extern void _ZN7S6984C23v92Ev();
extern void _ZN7S6984C23v93Ev();
extern void _ZN7S6984C23v94Ev();
extern void _ZN7S6984C23v95Ev();
extern void _ZN7S6984C23v96Ev();
extern void _ZN7S6984C23v97Ev();
extern void _ZN7S6984C23v98Ev();
extern void _ZN7S6984C23v99Ev();
extern void _ZN7S6984C24v100Ev();
extern void _ZN7S6984C24v101Ev();
extern void _ZN7S6984C24v102Ev();
extern void _ZN7S6984C24v103Ev();
extern void _ZN7S6984C24v104Ev();
extern void _ZN7S6984C24v105Ev();
extern void _ZN7S6984C24v106Ev();
extern void _ZN7S6984C24v107Ev();
extern void _ZN7S6984C24v108Ev();
extern void _ZN7S6984C24v109Ev();
extern void _ZN7S6984C24v110Ev();
extern void _ZN7S6984C24v111Ev();
extern void _ZN7S6984C24v112Ev();
static  VTBL_ENTRY vtc_S6984C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6984C2[0]),
  (VTBL_ENTRY)&_ZN7S6984C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v69Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v70Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v71Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v72Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v73Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v74Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v75Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v76Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v77Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v78Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v79Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v80Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v81Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v82Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v83Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v84Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v85Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v86Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v87Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v88Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v89Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v90Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v91Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v92Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v93Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v94Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v95Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v96Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v97Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v98Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v99Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v100Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v101Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v102Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v103Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v104Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v105Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v106Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v107Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v108Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v109Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v110Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v111Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v112Ev,
};
extern VTBL_ENTRY _ZTI7S6984C2[];
extern  VTBL_ENTRY _ZTV7S6984C2[];
Class_Descriptor cd_S6984C2 = {  "S6984C2", // class name
  0,0,//no base classes
  &(vtc_S6984C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6984C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6984C2),61, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6984C1  : S6984C2 {
  void *s6984c1f0;
  virtual void  v1(); // _ZN7S6984C12v1Ev
  virtual void  v2(); // _ZN7S6984C12v2Ev
  virtual void  v3(); // _ZN7S6984C12v3Ev
  virtual void  v4(); // _ZN7S6984C12v4Ev
  virtual void  v5(); // _ZN7S6984C12v5Ev
  virtual void  v6(); // _ZN7S6984C12v6Ev
  virtual void  v7(); // _ZN7S6984C12v7Ev
  virtual void  v8(); // _ZN7S6984C12v8Ev
  virtual void  v9(); // _ZN7S6984C12v9Ev
  virtual void  v10(); // _ZN7S6984C13v10Ev
  virtual void  v11(); // _ZN7S6984C13v11Ev
  virtual void  v12(); // _ZN7S6984C13v12Ev
  virtual void  v13(); // _ZN7S6984C13v13Ev
  virtual void  v14(); // _ZN7S6984C13v14Ev
  virtual void  v15(); // _ZN7S6984C13v15Ev
  virtual void  v16(); // _ZN7S6984C13v16Ev
  virtual void  v17(); // _ZN7S6984C13v17Ev
  virtual void  v18(); // _ZN7S6984C13v18Ev
  virtual void  v19(); // _ZN7S6984C13v19Ev
  virtual void  v20(); // _ZN7S6984C13v20Ev
  virtual void  v21(); // _ZN7S6984C13v21Ev
  virtual void  v22(); // _ZN7S6984C13v22Ev
  virtual void  v23(); // _ZN7S6984C13v23Ev
  virtual void  v24(); // _ZN7S6984C13v24Ev
  virtual void  v25(); // _ZN7S6984C13v25Ev
  virtual void  v26(); // _ZN7S6984C13v26Ev
  virtual void  v27(); // _ZN7S6984C13v27Ev
  virtual void  v28(); // _ZN7S6984C13v28Ev
  virtual void  v29(); // _ZN7S6984C13v29Ev
  virtual void  v30(); // _ZN7S6984C13v30Ev
  virtual void  v31(); // _ZN7S6984C13v31Ev
  virtual void  v32(); // _ZN7S6984C13v32Ev
  virtual void  v33(); // _ZN7S6984C13v33Ev
  virtual void  v34(); // _ZN7S6984C13v34Ev
  virtual void  v35(); // _ZN7S6984C13v35Ev
  virtual void  v36(); // _ZN7S6984C13v36Ev
  virtual void  v37(); // _ZN7S6984C13v37Ev
  virtual void  v38(); // _ZN7S6984C13v38Ev
  virtual void  v39(); // _ZN7S6984C13v39Ev
  virtual void  v40(); // _ZN7S6984C13v40Ev
  virtual void  v41(); // _ZN7S6984C13v41Ev
  virtual void  v42(); // _ZN7S6984C13v42Ev
  virtual void  v43(); // _ZN7S6984C13v43Ev
  virtual void  v44(); // _ZN7S6984C13v44Ev
  virtual void  v45(); // _ZN7S6984C13v45Ev
  virtual void  v46(); // _ZN7S6984C13v46Ev
  virtual void  v47(); // _ZN7S6984C13v47Ev
  virtual void  v48(); // _ZN7S6984C13v48Ev
  virtual void  v49(); // _ZN7S6984C13v49Ev
  virtual void  v50(); // _ZN7S6984C13v50Ev
  virtual void  v51(); // _ZN7S6984C13v51Ev
  virtual void  v52(); // _ZN7S6984C13v52Ev
  virtual void  v53(); // _ZN7S6984C13v53Ev
  ~S6984C1(); // tgen
  S6984C1(); // tgen
};
//SIG(1 S6984C1) C1{ BC2{ 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} 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 Fp}


void  S6984C1 ::v1(){vfunc_called(this, "_ZN7S6984C12v1Ev");}
void  S6984C1 ::v2(){vfunc_called(this, "_ZN7S6984C12v2Ev");}
void  S6984C1 ::v3(){vfunc_called(this, "_ZN7S6984C12v3Ev");}
void  S6984C1 ::v4(){vfunc_called(this, "_ZN7S6984C12v4Ev");}
void  S6984C1 ::v5(){vfunc_called(this, "_ZN7S6984C12v5Ev");}
void  S6984C1 ::v6(){vfunc_called(this, "_ZN7S6984C12v6Ev");}
void  S6984C1 ::v7(){vfunc_called(this, "_ZN7S6984C12v7Ev");}
void  S6984C1 ::v8(){vfunc_called(this, "_ZN7S6984C12v8Ev");}
void  S6984C1 ::v9(){vfunc_called(this, "_ZN7S6984C12v9Ev");}
void  S6984C1 ::v10(){vfunc_called(this, "_ZN7S6984C13v10Ev");}
void  S6984C1 ::v11(){vfunc_called(this, "_ZN7S6984C13v11Ev");}
void  S6984C1 ::v12(){vfunc_called(this, "_ZN7S6984C13v12Ev");}
void  S6984C1 ::v13(){vfunc_called(this, "_ZN7S6984C13v13Ev");}
void  S6984C1 ::v14(){vfunc_called(this, "_ZN7S6984C13v14Ev");}
void  S6984C1 ::v15(){vfunc_called(this, "_ZN7S6984C13v15Ev");}
void  S6984C1 ::v16(){vfunc_called(this, "_ZN7S6984C13v16Ev");}
void  S6984C1 ::v17(){vfunc_called(this, "_ZN7S6984C13v17Ev");}
void  S6984C1 ::v18(){vfunc_called(this, "_ZN7S6984C13v18Ev");}
void  S6984C1 ::v19(){vfunc_called(this, "_ZN7S6984C13v19Ev");}
void  S6984C1 ::v20(){vfunc_called(this, "_ZN7S6984C13v20Ev");}
void  S6984C1 ::v21(){vfunc_called(this, "_ZN7S6984C13v21Ev");}
void  S6984C1 ::v22(){vfunc_called(this, "_ZN7S6984C13v22Ev");}
void  S6984C1 ::v23(){vfunc_called(this, "_ZN7S6984C13v23Ev");}
void  S6984C1 ::v24(){vfunc_called(this, "_ZN7S6984C13v24Ev");}
void  S6984C1 ::v25(){vfunc_called(this, "_ZN7S6984C13v25Ev");}
void  S6984C1 ::v26(){vfunc_called(this, "_ZN7S6984C13v26Ev");}
void  S6984C1 ::v27(){vfunc_called(this, "_ZN7S6984C13v27Ev");}
void  S6984C1 ::v28(){vfunc_called(this, "_ZN7S6984C13v28Ev");}
void  S6984C1 ::v29(){vfunc_called(this, "_ZN7S6984C13v29Ev");}
void  S6984C1 ::v30(){vfunc_called(this, "_ZN7S6984C13v30Ev");}
void  S6984C1 ::v31(){vfunc_called(this, "_ZN7S6984C13v31Ev");}
void  S6984C1 ::v32(){vfunc_called(this, "_ZN7S6984C13v32Ev");}
void  S6984C1 ::v33(){vfunc_called(this, "_ZN7S6984C13v33Ev");}
void  S6984C1 ::v34(){vfunc_called(this, "_ZN7S6984C13v34Ev");}
void  S6984C1 ::v35(){vfunc_called(this, "_ZN7S6984C13v35Ev");}
void  S6984C1 ::v36(){vfunc_called(this, "_ZN7S6984C13v36Ev");}
void  S6984C1 ::v37(){vfunc_called(this, "_ZN7S6984C13v37Ev");}
void  S6984C1 ::v38(){vfunc_called(this, "_ZN7S6984C13v38Ev");}
void  S6984C1 ::v39(){vfunc_called(this, "_ZN7S6984C13v39Ev");}
void  S6984C1 ::v40(){vfunc_called(this, "_ZN7S6984C13v40Ev");}
void  S6984C1 ::v41(){vfunc_called(this, "_ZN7S6984C13v41Ev");}
void  S6984C1 ::v42(){vfunc_called(this, "_ZN7S6984C13v42Ev");}
void  S6984C1 ::v43(){vfunc_called(this, "_ZN7S6984C13v43Ev");}
void  S6984C1 ::v44(){vfunc_called(this, "_ZN7S6984C13v44Ev");}
void  S6984C1 ::v45(){vfunc_called(this, "_ZN7S6984C13v45Ev");}
void  S6984C1 ::v46(){vfunc_called(this, "_ZN7S6984C13v46Ev");}
void  S6984C1 ::v47(){vfunc_called(this, "_ZN7S6984C13v47Ev");}
void  S6984C1 ::v48(){vfunc_called(this, "_ZN7S6984C13v48Ev");}
void  S6984C1 ::v49(){vfunc_called(this, "_ZN7S6984C13v49Ev");}
void  S6984C1 ::v50(){vfunc_called(this, "_ZN7S6984C13v50Ev");}
void  S6984C1 ::v51(){vfunc_called(this, "_ZN7S6984C13v51Ev");}
void  S6984C1 ::v52(){vfunc_called(this, "_ZN7S6984C13v52Ev");}
void  S6984C1 ::v53(){vfunc_called(this, "_ZN7S6984C13v53Ev");}
S6984C1 ::~S6984C1(){ note_dtor("S6984C1", this);} // tgen
S6984C1 ::S6984C1(){ note_ctor("S6984C1", this);} // tgen

static void Test_S6984C1()
{
  extern Class_Descriptor cd_S6984C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6984C1, buf);
    S6984C1 *dp, &lv = *(dp=new (buf) S6984C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6984C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6984C1)");
    check_base_class_offset(lv, (S6984C2*), 0, "S6984C1");
    check_field_offset(lv, s6984c1f0, ABISELECT(8,4), "S6984C1.s6984c1f0");
    test_class_info(&lv, &cd_S6984C1);
    dp->~S6984C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6984C1(Test_S6984C1, "S6984C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6984C1C1Ev();
extern void _ZN7S6984C1D1Ev();
Name_Map name_map_S6984C1[] = {
  NSPAIR(_ZN7S6984C1C1Ev),
  NSPAIR(_ZN7S6984C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6984C2;
extern VTBL_ENTRY _ZTI7S6984C2[];
extern  VTBL_ENTRY _ZTV7S6984C2[];
static Base_Class bases_S6984C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6984C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6984C1[];
extern void _ZN7S6984C23v54Ev();
extern void _ZN7S6984C23v55Ev();
extern void _ZN7S6984C23v56Ev();
extern void _ZN7S6984C23v57Ev();
extern void _ZN7S6984C23v58Ev();
extern void _ZN7S6984C23v59Ev();
extern void _ZN7S6984C23v60Ev();
extern void _ZN7S6984C23v61Ev();
extern void _ZN7S6984C23v62Ev();
extern void _ZN7S6984C23v63Ev();
extern void _ZN7S6984C23v64Ev();
extern void _ZN7S6984C23v65Ev();
extern void _ZN7S6984C23v66Ev();
extern void _ZN7S6984C23v67Ev();
extern void _ZN7S6984C23v68Ev();
extern void _ZN7S6984C23v69Ev();
extern void _ZN7S6984C23v70Ev();
extern void _ZN7S6984C23v71Ev();
extern void _ZN7S6984C23v72Ev();
extern void _ZN7S6984C23v73Ev();
extern void _ZN7S6984C23v74Ev();
extern void _ZN7S6984C23v75Ev();
extern void _ZN7S6984C23v76Ev();
extern void _ZN7S6984C23v77Ev();
extern void _ZN7S6984C23v78Ev();
extern void _ZN7S6984C23v79Ev();
extern void _ZN7S6984C23v80Ev();
extern void _ZN7S6984C23v81Ev();
extern void _ZN7S6984C23v82Ev();
extern void _ZN7S6984C23v83Ev();
extern void _ZN7S6984C23v84Ev();
extern void _ZN7S6984C23v85Ev();
extern void _ZN7S6984C23v86Ev();
extern void _ZN7S6984C23v87Ev();
extern void _ZN7S6984C23v88Ev();
extern void _ZN7S6984C23v89Ev();
extern void _ZN7S6984C23v90Ev();
extern void _ZN7S6984C23v91Ev();
extern void _ZN7S6984C23v92Ev();
extern void _ZN7S6984C23v93Ev();
extern void _ZN7S6984C23v94Ev();
extern void _ZN7S6984C23v95Ev();
extern void _ZN7S6984C23v96Ev();
extern void _ZN7S6984C23v97Ev();
extern void _ZN7S6984C23v98Ev();
extern void _ZN7S6984C23v99Ev();
extern void _ZN7S6984C24v100Ev();
extern void _ZN7S6984C24v101Ev();
extern void _ZN7S6984C24v102Ev();
extern void _ZN7S6984C24v103Ev();
extern void _ZN7S6984C24v104Ev();
extern void _ZN7S6984C24v105Ev();
extern void _ZN7S6984C24v106Ev();
extern void _ZN7S6984C24v107Ev();
extern void _ZN7S6984C24v108Ev();
extern void _ZN7S6984C24v109Ev();
extern void _ZN7S6984C24v110Ev();
extern void _ZN7S6984C24v111Ev();
extern void _ZN7S6984C24v112Ev();
extern void _ZN7S6984C12v1Ev();
extern void _ZN7S6984C12v2Ev();
extern void _ZN7S6984C12v3Ev();
extern void _ZN7S6984C12v4Ev();
extern void _ZN7S6984C12v5Ev();
extern void _ZN7S6984C12v6Ev();
extern void _ZN7S6984C12v7Ev();
extern void _ZN7S6984C12v8Ev();
extern void _ZN7S6984C12v9Ev();
extern void _ZN7S6984C13v10Ev();
extern void _ZN7S6984C13v11Ev();
extern void _ZN7S6984C13v12Ev();
extern void _ZN7S6984C13v13Ev();
extern void _ZN7S6984C13v14Ev();
extern void _ZN7S6984C13v15Ev();
extern void _ZN7S6984C13v16Ev();
extern void _ZN7S6984C13v17Ev();
extern void _ZN7S6984C13v18Ev();
extern void _ZN7S6984C13v19Ev();
extern void _ZN7S6984C13v20Ev();
extern void _ZN7S6984C13v21Ev();
extern void _ZN7S6984C13v22Ev();
extern void _ZN7S6984C13v23Ev();
extern void _ZN7S6984C13v24Ev();
extern void _ZN7S6984C13v25Ev();
extern void _ZN7S6984C13v26Ev();
extern void _ZN7S6984C13v27Ev();
extern void _ZN7S6984C13v28Ev();
extern void _ZN7S6984C13v29Ev();
extern void _ZN7S6984C13v30Ev();
extern void _ZN7S6984C13v31Ev();
extern void _ZN7S6984C13v32Ev();
extern void _ZN7S6984C13v33Ev();
extern void _ZN7S6984C13v34Ev();
extern void _ZN7S6984C13v35Ev();
extern void _ZN7S6984C13v36Ev();
extern void _ZN7S6984C13v37Ev();
extern void _ZN7S6984C13v38Ev();
extern void _ZN7S6984C13v39Ev();
extern void _ZN7S6984C13v40Ev();
extern void _ZN7S6984C13v41Ev();
extern void _ZN7S6984C13v42Ev();
extern void _ZN7S6984C13v43Ev();
extern void _ZN7S6984C13v44Ev();
extern void _ZN7S6984C13v45Ev();
extern void _ZN7S6984C13v46Ev();
extern void _ZN7S6984C13v47Ev();
extern void _ZN7S6984C13v48Ev();
extern void _ZN7S6984C13v49Ev();
extern void _ZN7S6984C13v50Ev();
extern void _ZN7S6984C13v51Ev();
extern void _ZN7S6984C13v52Ev();
extern void _ZN7S6984C13v53Ev();
static  VTBL_ENTRY vtc_S6984C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6984C1[0]),
  (VTBL_ENTRY)&_ZN7S6984C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v69Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v70Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v71Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v72Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v73Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v74Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v75Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v76Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v77Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v78Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v79Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v80Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v81Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v82Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v83Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v84Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v85Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v86Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v87Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v88Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v89Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v90Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v91Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v92Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v93Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v94Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v95Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v96Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v97Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v98Ev,
  (VTBL_ENTRY)&_ZN7S6984C23v99Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v100Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v101Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v102Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v103Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v104Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v105Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v106Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v107Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v108Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v109Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v110Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v111Ev,
  (VTBL_ENTRY)&_ZN7S6984C24v112Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6984C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v22Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v23Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v24Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v25Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v26Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v27Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v28Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v29Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v30Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v31Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v32Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v33Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v34Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v35Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v36Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v37Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v38Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v39Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v40Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v41Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v42Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v43Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v44Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v45Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v46Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v47Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v48Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v49Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v50Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v51Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v52Ev,
  (VTBL_ENTRY)&_ZN7S6984C13v53Ev,
};
extern VTBL_ENTRY _ZTI7S6984C1[];
extern  VTBL_ENTRY _ZTV7S6984C1[];
Class_Descriptor cd_S6984C1 = {  "S6984C1", // class name
  bases_S6984C1, 1,
  &(vtc_S6984C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6984C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6984C1),114, //virtual function table var
  2, // 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  S3364C3  {
  int s3364c3f0;
  __tsi64 s3364c3f1;
  void *s3364c3f2[4];
  int s3364c3f3[2];
  void *s3364c3f4;
  ::S3281C4_nt s3364c3f5;
  void *s3364c3f6[2];
  virtual  ~S3364C3(); // _ZN7S3364C3D1Ev
  virtual void  v6(); // _ZN7S3364C32v6Ev
  virtual void  v7(); // _ZN7S3364C32v7Ev
  virtual void  v8(); // _ZN7S3364C32v8Ev
  virtual void  v9(); // _ZN7S3364C32v9Ev
  virtual void  v10(); // _ZN7S3364C33v10Ev
  virtual void  v11(); // _ZN7S3364C33v11Ev
  virtual void  v12(); // _ZN7S3364C33v12Ev
  virtual void  v13(); // _ZN7S3364C33v13Ev
  virtual void  v14(); // _ZN7S3364C33v14Ev
  virtual void  v15(); // _ZN7S3364C33v15Ev
  virtual void  v16(); // _ZN7S3364C33v16Ev
  virtual void  v17(); // _ZN7S3364C33v17Ev
  virtual void  v18(); // _ZN7S3364C33v18Ev
  virtual void  v19(); // _ZN7S3364C33v19Ev
  virtual void  v20(); // _ZN7S3364C33v20Ev
  virtual void  v21(); // _ZN7S3364C33v21Ev
  virtual void  v22(); // _ZN7S3364C33v22Ev
  virtual void  v23(); // _ZN7S3364C33v23Ev
  virtual void  v24(); // _ZN7S3364C33v24Ev
  virtual void  v25(); // _ZN7S3364C33v25Ev
  virtual void  v26(); // _ZN7S3364C33v26Ev
  virtual void  v27(); // _ZN7S3364C33v27Ev
  virtual void  v28(); // _ZN7S3364C33v28Ev
  virtual void  v29(); // _ZN7S3364C33v29Ev
  virtual void  v30(); // _ZN7S3364C33v30Ev
  virtual void  v31(); // _ZN7S3364C33v31Ev
  virtual void  v32(); // _ZN7S3364C33v32Ev
  virtual void  v33(); // _ZN7S3364C33v33Ev
  virtual void  v34(); // _ZN7S3364C33v34Ev
  virtual void  v35(); // _ZN7S3364C33v35Ev
  virtual void  v36(); // _ZN7S3364C33v36Ev
  virtual void  v37(); // _ZN7S3364C33v37Ev
  virtual void  v38(); // _ZN7S3364C33v38Ev
  virtual void  v39(); // _ZN7S3364C33v39Ev
  virtual void  v40(); // _ZN7S3364C33v40Ev
  virtual void  v41(); // _ZN7S3364C33v41Ev
  virtual void  v42(); // _ZN7S3364C33v42Ev
  virtual void  v43(); // _ZN7S3364C33v43Ev
  virtual void  v44(); // _ZN7S3364C33v44Ev
  virtual void  v45(); // _ZN7S3364C33v45Ev
  virtual void  v46(); // _ZN7S3364C33v46Ev
  virtual void  v47(); // _ZN7S3364C33v47Ev
  virtual void  v48(); // _ZN7S3364C33v48Ev
  virtual void  v49(); // _ZN7S3364C33v49Ev
  virtual void  v50(); // _ZN7S3364C33v50Ev
  virtual void  v51(); // _ZN7S3364C33v51Ev
  virtual void  v52(); // _ZN7S3364C33v52Ev
  virtual void  v53(); // _ZN7S3364C33v53Ev
  virtual void  v54(); // _ZN7S3364C33v54Ev
  virtual void  v55(); // _ZN7S3364C33v55Ev
  virtual void  v56(); // _ZN7S3364C33v56Ev
  virtual void  v57(); // _ZN7S3364C33v57Ev
  virtual void  v58(); // _ZN7S3364C33v58Ev
  virtual void  v59(); // _ZN7S3364C33v59Ev
  virtual void  v60(); // _ZN7S3364C33v60Ev
  virtual void  v61(); // _ZN7S3364C33v61Ev
  virtual void  v62(); // _ZN7S3364C33v62Ev
  virtual void  v63(); // _ZN7S3364C33v63Ev
  virtual void  v64(); // _ZN7S3364C33v64Ev
  virtual void  v65(); // _ZN7S3364C33v65Ev
  virtual void  v66(); // _ZN7S3364C33v66Ev
  virtual void  v67(); // _ZN7S3364C33v67Ev
  virtual void  v68(); // _ZN7S3364C33v68Ev
  virtual void  v69(); // _ZN7S3364C33v69Ev
  S3364C3(); // tgen
};
//SIG(-1 S3364C3) 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]}


 S3364C3 ::~S3364C3(){ note_dtor("S3364C3", this);}
void  S3364C3 ::v6(){vfunc_called(this, "_ZN7S3364C32v6Ev");}
void  S3364C3 ::v7(){vfunc_called(this, "_ZN7S3364C32v7Ev");}
void  S3364C3 ::v8(){vfunc_called(this, "_ZN7S3364C32v8Ev");}
void  S3364C3 ::v9(){vfunc_called(this, "_ZN7S3364C32v9Ev");}
void  S3364C3 ::v10(){vfunc_called(this, "_ZN7S3364C33v10Ev");}
void  S3364C3 ::v11(){vfunc_called(this, "_ZN7S3364C33v11Ev");}
void  S3364C3 ::v12(){vfunc_called(this, "_ZN7S3364C33v12Ev");}
void  S3364C3 ::v13(){vfunc_called(this, "_ZN7S3364C33v13Ev");}
void  S3364C3 ::v14(){vfunc_called(this, "_ZN7S3364C33v14Ev");}
void  S3364C3 ::v15(){vfunc_called(this, "_ZN7S3364C33v15Ev");}
void  S3364C3 ::v16(){vfunc_called(this, "_ZN7S3364C33v16Ev");}
void  S3364C3 ::v17(){vfunc_called(this, "_ZN7S3364C33v17Ev");}
void  S3364C3 ::v18(){vfunc_called(this, "_ZN7S3364C33v18Ev");}
void  S3364C3 ::v19(){vfunc_called(this, "_ZN7S3364C33v19Ev");}
void  S3364C3 ::v20(){vfunc_called(this, "_ZN7S3364C33v20Ev");}
void  S3364C3 ::v21(){vfunc_called(this, "_ZN7S3364C33v21Ev");}
void  S3364C3 ::v22(){vfunc_called(this, "_ZN7S3364C33v22Ev");}
void  S3364C3 ::v23(){vfunc_called(this, "_ZN7S3364C33v23Ev");}
void  S3364C3 ::v24(){vfunc_called(this, "_ZN7S3364C33v24Ev");}
void  S3364C3 ::v25(){vfunc_called(this, "_ZN7S3364C33v25Ev");}
void  S3364C3 ::v26(){vfunc_called(this, "_ZN7S3364C33v26Ev");}
void  S3364C3 ::v27(){vfunc_called(this, "_ZN7S3364C33v27Ev");}
void  S3364C3 ::v28(){vfunc_called(this, "_ZN7S3364C33v28Ev");}
void  S3364C3 ::v29(){vfunc_called(this, "_ZN7S3364C33v29Ev");}
void  S3364C3 ::v30(){vfunc_called(this, "_ZN7S3364C33v30Ev");}
void  S3364C3 ::v31(){vfunc_called(this, "_ZN7S3364C33v31Ev");}
void  S3364C3 ::v32(){vfunc_called(this, "_ZN7S3364C33v32Ev");}
void  S3364C3 ::v33(){vfunc_called(this, "_ZN7S3364C33v33Ev");}
void  S3364C3 ::v34(){vfunc_called(this, "_ZN7S3364C33v34Ev");}
void  S3364C3 ::v35(){vfunc_called(this, "_ZN7S3364C33v35Ev");}
void  S3364C3 ::v36(){vfunc_called(this, "_ZN7S3364C33v36Ev");}
void  S3364C3 ::v37(){vfunc_called(this, "_ZN7S3364C33v37Ev");}
void  S3364C3 ::v38(){vfunc_called(this, "_ZN7S3364C33v38Ev");}
void  S3364C3 ::v39(){vfunc_called(this, "_ZN7S3364C33v39Ev");}
void  S3364C3 ::v40(){vfunc_called(this, "_ZN7S3364C33v40Ev");}
void  S3364C3 ::v41(){vfunc_called(this, "_ZN7S3364C33v41Ev");}
void  S3364C3 ::v42(){vfunc_called(this, "_ZN7S3364C33v42Ev");}
void  S3364C3 ::v43(){vfunc_called(this, "_ZN7S3364C33v43Ev");}
void  S3364C3 ::v44(){vfunc_called(this, "_ZN7S3364C33v44Ev");}
void  S3364C3 ::v45(){vfunc_called(this, "_ZN7S3364C33v45Ev");}
void  S3364C3 ::v46(){vfunc_called(this, "_ZN7S3364C33v46Ev");}
void  S3364C3 ::v47(){vfunc_called(this, "_ZN7S3364C33v47Ev");}
void  S3364C3 ::v48(){vfunc_called(this, "_ZN7S3364C33v48Ev");}
void  S3364C3 ::v49(){vfunc_called(this, "_ZN7S3364C33v49Ev");}
void  S3364C3 ::v50(){vfunc_called(this, "_ZN7S3364C33v50Ev");}
void  S3364C3 ::v51(){vfunc_called(this, "_ZN7S3364C33v51Ev");}
void  S3364C3 ::v52(){vfunc_called(this, "_ZN7S3364C33v52Ev");}
void  S3364C3 ::v53(){vfunc_called(this, "_ZN7S3364C33v53Ev");}
void  S3364C3 ::v54(){vfunc_called(this, "_ZN7S3364C33v54Ev");}
void  S3364C3 ::v55(){vfunc_called(this, "_ZN7S3364C33v55Ev");}
void  S3364C3 ::v56(){vfunc_called(this, "_ZN7S3364C33v56Ev");}
void  S3364C3 ::v57(){vfunc_called(this, "_ZN7S3364C33v57Ev");}
void  S3364C3 ::v58(){vfunc_called(this, "_ZN7S3364C33v58Ev");}
void  S3364C3 ::v59(){vfunc_called(this, "_ZN7S3364C33v59Ev");}
void  S3364C3 ::v60(){vfunc_called(this, "_ZN7S3364C33v60Ev");}
void  S3364C3 ::v61(){vfunc_called(this, "_ZN7S3364C33v61Ev");}
void  S3364C3 ::v62(){vfunc_called(this, "_ZN7S3364C33v62Ev");}
void  S3364C3 ::v63(){vfunc_called(this, "_ZN7S3364C33v63Ev");}
void  S3364C3 ::v64(){vfunc_called(this, "_ZN7S3364C33v64Ev");}
void  S3364C3 ::v65(){vfunc_called(this, "_ZN7S3364C33v65Ev");}
void  S3364C3 ::v66(){vfunc_called(this, "_ZN7S3364C33v66Ev");}
void  S3364C3 ::v67(){vfunc_called(this, "_ZN7S3364C33v67Ev");}
void  S3364C3 ::v68(){vfunc_called(this, "_ZN7S3364C33v68Ev");}
void  S3364C3 ::v69(){vfunc_called(this, "_ZN7S3364C33v69Ev");}
S3364C3 ::S3364C3(){ note_ctor("S3364C3", this);} // tgen

static void Test_S3364C3()
{
  extern Class_Descriptor cd_S3364C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3364C3, buf);
    S3364C3 *dp, &lv = *(dp=new (buf) S3364C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3364C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3364C3)");
    check_field_offset(lv, s3364c3f0, ABISELECT(8,4), "S3364C3.s3364c3f0");
    check_field_offset(lv, s3364c3f1, ABISELECT(16,8), "S3364C3.s3364c3f1");
    check_field_offset(lv, s3364c3f2, ABISELECT(24,16), "S3364C3.s3364c3f2");
    check_field_offset(lv, s3364c3f3, ABISELECT(56,32), "S3364C3.s3364c3f3");
    check_field_offset(lv, s3364c3f4, ABISELECT(64,40), "S3364C3.s3364c3f4");
    check_field_offset(lv, s3364c3f5, ABISELECT(72,44), "S3364C3.s3364c3f5");
    check_field_offset(lv, s3364c3f6, ABISELECT(80,52), "S3364C3.s3364c3f6");
    test_class_info(&lv, &cd_S3364C3);
    dp->~S3364C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3364C3(Test_S3364C3, "S3364C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3364C3C1Ev();
extern void _ZN7S3364C3D1Ev();
Name_Map name_map_S3364C3[] = {
  NSPAIR(_ZN7S3364C3C1Ev),
  NSPAIR(_ZN7S3364C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3364C3[];
extern void _ZN7S3364C3D1Ev();
extern void _ZN7S3364C3D0Ev();
extern void _ZN7S3364C32v6Ev();
extern void _ZN7S3364C32v7Ev();
extern void _ZN7S3364C32v8Ev();
extern void _ZN7S3364C32v9Ev();
extern void _ZN7S3364C33v10Ev();
extern void _ZN7S3364C33v11Ev();
extern void _ZN7S3364C33v12Ev();
extern void _ZN7S3364C33v13Ev();
extern void _ZN7S3364C33v14Ev();
extern void _ZN7S3364C33v15Ev();
extern void _ZN7S3364C33v16Ev();
extern void _ZN7S3364C33v17Ev();
extern void _ZN7S3364C33v18Ev();
extern void _ZN7S3364C33v19Ev();
extern void _ZN7S3364C33v20Ev();
extern void _ZN7S3364C33v21Ev();
extern void _ZN7S3364C33v22Ev();
extern void _ZN7S3364C33v23Ev();
extern void _ZN7S3364C33v24Ev();
extern void _ZN7S3364C33v25Ev();
extern void _ZN7S3364C33v26Ev();
extern void _ZN7S3364C33v27Ev();
extern void _ZN7S3364C33v28Ev();
extern void _ZN7S3364C33v29Ev();
extern void _ZN7S3364C33v30Ev();
extern void _ZN7S3364C33v31Ev();
extern void _ZN7S3364C33v32Ev();
extern void _ZN7S3364C33v33Ev();
extern void _ZN7S3364C33v34Ev();
extern void _ZN7S3364C33v35Ev();
extern void _ZN7S3364C33v36Ev();
extern void _ZN7S3364C33v37Ev();
extern void _ZN7S3364C33v38Ev();
extern void _ZN7S3364C33v39Ev();
extern void _ZN7S3364C33v40Ev();
extern void _ZN7S3364C33v41Ev();
extern void _ZN7S3364C33v42Ev();
extern void _ZN7S3364C33v43Ev();
extern void _ZN7S3364C33v44Ev();
extern void _ZN7S3364C33v45Ev();
extern void _ZN7S3364C33v46Ev();
extern void _ZN7S3364C33v47Ev();
extern void _ZN7S3364C33v48Ev();
extern void _ZN7S3364C33v49Ev();
extern void _ZN7S3364C33v50Ev();
extern void _ZN7S3364C33v51Ev();
extern void _ZN7S3364C33v52Ev();
extern void _ZN7S3364C33v53Ev();
extern void _ZN7S3364C33v54Ev();
extern void _ZN7S3364C33v55Ev();
extern void _ZN7S3364C33v56Ev();
extern void _ZN7S3364C33v57Ev();
extern void _ZN7S3364C33v58Ev();
extern void _ZN7S3364C33v59Ev();
extern void _ZN7S3364C33v60Ev();
extern void _ZN7S3364C33v61Ev();
extern void _ZN7S3364C33v62Ev();
extern void _ZN7S3364C33v63Ev();
extern void _ZN7S3364C33v64Ev();
extern void _ZN7S3364C33v65Ev();
extern void _ZN7S3364C33v66Ev();
extern void _ZN7S3364C33v67Ev();
extern void _ZN7S3364C33v68Ev();
extern void _ZN7S3364C33v69Ev();
static  VTBL_ENTRY vtc_S3364C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3364C3[0]),
  (VTBL_ENTRY)&_ZN7S3364C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3364C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v69Ev,
};
extern VTBL_ENTRY _ZTI7S3364C3[];
extern  VTBL_ENTRY _ZTV7S3364C3[];
Class_Descriptor cd_S3364C3 = {  "S3364C3", // class name
  0,0,//no base classes
  &(vtc_S3364C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3364C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3364C3),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  S3364C2_nt  : S3364C3 {
  int s3364c2f0[2];
  unsigned int s3364c2f1:1;
  unsigned int s3364c2f2:1;
  void *s3364c2f3;
  ::S638C7_nt s3364c2f4;
  virtual  ~S3364C2_nt(); // _ZN10S3364C2_ntD1Ev
  virtual void  v70(); // _ZN10S3364C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3364C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3364C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3364C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3364C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3364C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3364C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3364C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3364C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3364C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3364C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3364C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3364C2_nt3v82Ev
  S3364C2_nt(); // tgen
};
//SIG(-1 S3364C2_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 Fi[2] Fi:1 Fi:1 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}}}


 S3364C2_nt ::~S3364C2_nt(){ note_dtor("S3364C2_nt", this);}
void  S3364C2_nt ::v70(){vfunc_called(this, "_ZN10S3364C2_nt3v70Ev");}
void  S3364C2_nt ::v71(){vfunc_called(this, "_ZN10S3364C2_nt3v71Ev");}
void  S3364C2_nt ::v72(){vfunc_called(this, "_ZN10S3364C2_nt3v72Ev");}
void  S3364C2_nt ::v73(){vfunc_called(this, "_ZN10S3364C2_nt3v73Ev");}
void  S3364C2_nt ::v74(){vfunc_called(this, "_ZN10S3364C2_nt3v74Ev");}
void  S3364C2_nt ::v75(){vfunc_called(this, "_ZN10S3364C2_nt3v75Ev");}
void  S3364C2_nt ::v76(){vfunc_called(this, "_ZN10S3364C2_nt3v76Ev");}
void  S3364C2_nt ::v77(){vfunc_called(this, "_ZN10S3364C2_nt3v77Ev");}
void  S3364C2_nt ::v78(){vfunc_called(this, "_ZN10S3364C2_nt3v78Ev");}
void  S3364C2_nt ::v79(){vfunc_called(this, "_ZN10S3364C2_nt3v79Ev");}
void  S3364C2_nt ::v80(){vfunc_called(this, "_ZN10S3364C2_nt3v80Ev");}
void  S3364C2_nt ::v81(){vfunc_called(this, "_ZN10S3364C2_nt3v81Ev");}
void  S3364C2_nt ::v82(){vfunc_called(this, "_ZN10S3364C2_nt3v82Ev");}
S3364C2_nt ::S3364C2_nt(){ note_ctor("S3364C2_nt", this);} // tgen

//skip512 S3364C2_nt

#else // __cplusplus

extern void _ZN10S3364C2_ntC1Ev();
extern void _ZN10S3364C2_ntD1Ev();
Name_Map name_map_S3364C2_nt[] = {
  NSPAIR(_ZN10S3364C2_ntC1Ev),
  NSPAIR(_ZN10S3364C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3364C3;
extern VTBL_ENTRY _ZTI7S3364C3[];
extern  VTBL_ENTRY _ZTV7S3364C3[];
static Base_Class bases_S3364C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3364C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3364C2_nt[];
extern void _ZN10S3364C2_ntD1Ev();
extern void _ZN10S3364C2_ntD0Ev();
extern void _ZN7S3364C32v6Ev();
extern void _ZN7S3364C32v7Ev();
extern void _ZN7S3364C32v8Ev();
extern void _ZN7S3364C32v9Ev();
extern void _ZN7S3364C33v10Ev();
extern void _ZN7S3364C33v11Ev();
extern void _ZN7S3364C33v12Ev();
extern void _ZN7S3364C33v13Ev();
extern void _ZN7S3364C33v14Ev();
extern void _ZN7S3364C33v15Ev();
extern void _ZN7S3364C33v16Ev();
extern void _ZN7S3364C33v17Ev();
extern void _ZN7S3364C33v18Ev();
extern void _ZN7S3364C33v19Ev();
extern void _ZN7S3364C33v20Ev();
extern void _ZN7S3364C33v21Ev();
extern void _ZN7S3364C33v22Ev();
extern void _ZN7S3364C33v23Ev();
extern void _ZN7S3364C33v24Ev();
extern void _ZN7S3364C33v25Ev();
extern void _ZN7S3364C33v26Ev();
extern void _ZN7S3364C33v27Ev();
extern void _ZN7S3364C33v28Ev();
extern void _ZN7S3364C33v29Ev();
extern void _ZN7S3364C33v30Ev();
extern void _ZN7S3364C33v31Ev();
extern void _ZN7S3364C33v32Ev();
extern void _ZN7S3364C33v33Ev();
extern void _ZN7S3364C33v34Ev();
extern void _ZN7S3364C33v35Ev();
extern void _ZN7S3364C33v36Ev();
extern void _ZN7S3364C33v37Ev();
extern void _ZN7S3364C33v38Ev();
extern void _ZN7S3364C33v39Ev();
extern void _ZN7S3364C33v40Ev();
extern void _ZN7S3364C33v41Ev();
extern void _ZN7S3364C33v42Ev();
extern void _ZN7S3364C33v43Ev();
extern void _ZN7S3364C33v44Ev();
extern void _ZN7S3364C33v45Ev();
extern void _ZN7S3364C33v46Ev();
extern void _ZN7S3364C33v47Ev();
extern void _ZN7S3364C33v48Ev();
extern void _ZN7S3364C33v49Ev();
extern void _ZN7S3364C33v50Ev();
extern void _ZN7S3364C33v51Ev();
extern void _ZN7S3364C33v52Ev();
extern void _ZN7S3364C33v53Ev();
extern void _ZN7S3364C33v54Ev();
extern void _ZN7S3364C33v55Ev();
extern void _ZN7S3364C33v56Ev();
extern void _ZN7S3364C33v57Ev();
extern void _ZN7S3364C33v58Ev();
extern void _ZN7S3364C33v59Ev();
extern void _ZN7S3364C33v60Ev();
extern void _ZN7S3364C33v61Ev();
extern void _ZN7S3364C33v62Ev();
extern void _ZN7S3364C33v63Ev();
extern void _ZN7S3364C33v64Ev();
extern void _ZN7S3364C33v65Ev();
extern void _ZN7S3364C33v66Ev();
extern void _ZN7S3364C33v67Ev();
extern void _ZN7S3364C33v68Ev();
extern void _ZN7S3364C33v69Ev();
extern void _ZN10S3364C2_nt3v70Ev();
extern void _ZN10S3364C2_nt3v71Ev();
extern void _ZN10S3364C2_nt3v72Ev();
extern void _ZN10S3364C2_nt3v73Ev();
extern void _ZN10S3364C2_nt3v74Ev();
extern void _ZN10S3364C2_nt3v75Ev();
extern void _ZN10S3364C2_nt3v76Ev();
extern void _ZN10S3364C2_nt3v77Ev();
extern void _ZN10S3364C2_nt3v78Ev();
extern void _ZN10S3364C2_nt3v79Ev();
extern void _ZN10S3364C2_nt3v80Ev();
extern void _ZN10S3364C2_nt3v81Ev();
extern void _ZN10S3364C2_nt3v82Ev();
static  VTBL_ENTRY vtc_S3364C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3364C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3364C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v69Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v82Ev,
};
extern VTBL_ENTRY _ZTI10S3364C2_nt[];
VTBL_ENTRY *P__ZTI10S3364C2_nt = _ZTI10S3364C2_nt; 
extern  VTBL_ENTRY _ZTV10S3364C2_nt[];
Class_Descriptor cd_S3364C2_nt = {  "S3364C2_nt", // class name
  bases_S3364C2_nt, 1,
  &(vtc_S3364C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI10S3364C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3364C2_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  S3364C9_nt  {
  void *s3364c9f0;
  int s3364c9f1[6];
  void  mf3364c9(); // _ZN10S3364C9_nt8mf3364c9Ev
};
//SIG(-1 S3364C9_nt) C1{ m Fp Fi[6]}


void  S3364C9_nt ::mf3364c9(){}

//skip512 S3364C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3364C1  : S3364C2_nt {
  ::S3364C9_nt s3364c1f0;
  int s3364c1f1[2];
  virtual  ~S3364C1(); // _ZN7S3364C1D1Ev
  virtual void  v1(); // _ZN7S3364C12v1Ev
  virtual void  v2(); // _ZN7S3364C12v2Ev
  virtual void  v3(); // _ZN7S3364C12v3Ev
  virtual void  v4(); // _ZN7S3364C12v4Ev
  virtual void  v5(); // _ZN7S3364C12v5Ev
  S3364C1(); // tgen
};
//SIG(1 S3364C1) C1{ BC2{ BC3{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 Fi[2] Fi:1 Fi:1 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}}} vd v1 v2 v3 v4 v5 FC9{ m Fp Fi[6]} Fi[2]}


 S3364C1 ::~S3364C1(){ note_dtor("S3364C1", this);}
void  S3364C1 ::v1(){vfunc_called(this, "_ZN7S3364C12v1Ev");}
void  S3364C1 ::v2(){vfunc_called(this, "_ZN7S3364C12v2Ev");}
void  S3364C1 ::v3(){vfunc_called(this, "_ZN7S3364C12v3Ev");}
void  S3364C1 ::v4(){vfunc_called(this, "_ZN7S3364C12v4Ev");}
void  S3364C1 ::v5(){vfunc_called(this, "_ZN7S3364C12v5Ev");}
S3364C1 ::S3364C1(){ note_ctor("S3364C1", this);} // tgen

static void Test_S3364C1()
{
  extern Class_Descriptor cd_S3364C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,32)];
    init_test(&cd_S3364C1, buf);
    S3364C1 *dp, &lv = *(dp=new (buf) S3364C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S3364C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3364C1)");
    check_base_class_offset(lv, (S3364C3*)(S3364C2_nt*), 0, "S3364C1");
    check_base_class_offset(lv, (S3364C2_nt*), 0, "S3364C1");
    check_field_offset(lv, s3364c1f0, ABISELECT(136,88), "S3364C1.s3364c1f0");
    check_field_offset(lv, s3364c1f1, ABISELECT(168,116), "S3364C1.s3364c1f1");
    test_class_info(&lv, &cd_S3364C1);
    dp->~S3364C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3364C1(Test_S3364C1, "S3364C1", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN7S3364C1C1Ev();
extern void _ZN7S3364C1D1Ev();
Name_Map name_map_S3364C1[] = {
  NSPAIR(_ZN7S3364C1C1Ev),
  NSPAIR(_ZN7S3364C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3364C3;
extern VTBL_ENTRY _ZTI7S3364C3[];
extern  VTBL_ENTRY _ZTV7S3364C3[];
extern Class_Descriptor cd_S3364C2_nt;
extern VTBL_ENTRY _ZTI10S3364C2_nt[];
extern  VTBL_ENTRY _ZTV10S3364C2_nt[];
static Base_Class bases_S3364C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3364C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3364C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3364C1[];
extern void _ZN7S3364C1D1Ev();
extern void _ZN7S3364C1D0Ev();
extern void _ZN7S3364C32v6Ev();
extern void _ZN7S3364C32v7Ev();
extern void _ZN7S3364C32v8Ev();
extern void _ZN7S3364C32v9Ev();
extern void _ZN7S3364C33v10Ev();
extern void _ZN7S3364C33v11Ev();
extern void _ZN7S3364C33v12Ev();
extern void _ZN7S3364C33v13Ev();
extern void _ZN7S3364C33v14Ev();
extern void _ZN7S3364C33v15Ev();
extern void _ZN7S3364C33v16Ev();
extern void _ZN7S3364C33v17Ev();
extern void _ZN7S3364C33v18Ev();
extern void _ZN7S3364C33v19Ev();
extern void _ZN7S3364C33v20Ev();
extern void _ZN7S3364C33v21Ev();
extern void _ZN7S3364C33v22Ev();
extern void _ZN7S3364C33v23Ev();
extern void _ZN7S3364C33v24Ev();
extern void _ZN7S3364C33v25Ev();
extern void _ZN7S3364C33v26Ev();
extern void _ZN7S3364C33v27Ev();
extern void _ZN7S3364C33v28Ev();
extern void _ZN7S3364C33v29Ev();
extern void _ZN7S3364C33v30Ev();
extern void _ZN7S3364C33v31Ev();
extern void _ZN7S3364C33v32Ev();
extern void _ZN7S3364C33v33Ev();
extern void _ZN7S3364C33v34Ev();
extern void _ZN7S3364C33v35Ev();
extern void _ZN7S3364C33v36Ev();
extern void _ZN7S3364C33v37Ev();
extern void _ZN7S3364C33v38Ev();
extern void _ZN7S3364C33v39Ev();
extern void _ZN7S3364C33v40Ev();
extern void _ZN7S3364C33v41Ev();
extern void _ZN7S3364C33v42Ev();
extern void _ZN7S3364C33v43Ev();
extern void _ZN7S3364C33v44Ev();
extern void _ZN7S3364C33v45Ev();
extern void _ZN7S3364C33v46Ev();
extern void _ZN7S3364C33v47Ev();
extern void _ZN7S3364C33v48Ev();
extern void _ZN7S3364C33v49Ev();
extern void _ZN7S3364C33v50Ev();
extern void _ZN7S3364C33v51Ev();
extern void _ZN7S3364C33v52Ev();
extern void _ZN7S3364C33v53Ev();
extern void _ZN7S3364C33v54Ev();
extern void _ZN7S3364C33v55Ev();
extern void _ZN7S3364C33v56Ev();
extern void _ZN7S3364C33v57Ev();
extern void _ZN7S3364C33v58Ev();
extern void _ZN7S3364C33v59Ev();
extern void _ZN7S3364C33v60Ev();
extern void _ZN7S3364C33v61Ev();
extern void _ZN7S3364C33v62Ev();
extern void _ZN7S3364C33v63Ev();
extern void _ZN7S3364C33v64Ev();
extern void _ZN7S3364C33v65Ev();
extern void _ZN7S3364C33v66Ev();
extern void _ZN7S3364C33v67Ev();
extern void _ZN7S3364C33v68Ev();
extern void _ZN7S3364C33v69Ev();
extern void _ZN10S3364C2_nt3v70Ev();
extern void _ZN10S3364C2_nt3v71Ev();
extern void _ZN10S3364C2_nt3v72Ev();
extern void _ZN10S3364C2_nt3v73Ev();
extern void _ZN10S3364C2_nt3v74Ev();
extern void _ZN10S3364C2_nt3v75Ev();
extern void _ZN10S3364C2_nt3v76Ev();
extern void _ZN10S3364C2_nt3v77Ev();
extern void _ZN10S3364C2_nt3v78Ev();
extern void _ZN10S3364C2_nt3v79Ev();
extern void _ZN10S3364C2_nt3v80Ev();
extern void _ZN10S3364C2_nt3v81Ev();
extern void _ZN10S3364C2_nt3v82Ev();
extern void _ZN7S3364C12v1Ev();
extern void _ZN7S3364C12v2Ev();
extern void _ZN7S3364C12v3Ev();
extern void _ZN7S3364C12v4Ev();
extern void _ZN7S3364C12v5Ev();
static  VTBL_ENTRY vtc_S3364C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3364C1[0]),
  (VTBL_ENTRY)&_ZN7S3364C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3364C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3364C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3364C33v69Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3364C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN7S3364C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3364C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3364C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3364C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3364C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S3364C1[];
extern  VTBL_ENTRY _ZTV7S3364C1[];
Class_Descriptor cd_S3364C1 = {  "S3364C1", // class name
  bases_S3364C1, 2,
  &(vtc_S3364C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI7S3364C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3364C1),86, //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  S2650C2_nt  : S3281C8_nt {
};
//SIG(-1 S2650C2_nt) C1{ BC2{ m Fi}}



//skip512 S2650C2_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2650C4  {
  unsigned int s2650c4f0:1;
  unsigned int s2650c4f1:1;
  unsigned int s2650c4f2:1;
  unsigned int s2650c4f3:1;
  unsigned int s2650c4f4:1;
  unsigned int s2650c4f5:1;
  unsigned int s2650c4f6:1;
  unsigned int s2650c4f7:1;
  unsigned int s2650c4f8:1;
  unsigned int s2650c4f9:1;
  unsigned int s2650c4f10:1;
  unsigned int s2650c4f11:1;
  int s2650c4f12:20;
  void  mf2650c4(); // _ZN7S2650C48mf2650c4Ev
};
//SIG(-1 S2650C4) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:20}


void  S2650C4 ::mf2650c4(){}

static void Test_S2650C4()
{
  {
    init_simple_test("S2650C4");
    static S2650C4 lv;
    check2(sizeof(lv), 4, "sizeof(S2650C4)");
    check2(__alignof__(lv), 4, "__alignof__(S2650C4)");
    set_bf_and_test(lv, s2650c4f0, 0, 0, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f1, 0, 1, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f2, 0, 2, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f3, 0, 3, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f4, 0, 4, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f5, 0, 5, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f6, 0, 6, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f7, 0, 7, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f8, 1, 0, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f9, 1, 1, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f10, 1, 2, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f11, 1, 3, 1, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f12, 1, 4, 20, 1, "S2650C4");
    set_bf_and_test(lv, s2650c4f12, 1, 4, 20, hide_sll(1LL<<19), "S2650C4");
  }
}
static Arrange_To_Call_Me vS2650C4(Test_S2650C4, "S2650C4", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C5_nt  {
  ::S4224C43_nt s2650c5f0;
  void  mf2650c5(); // _ZN10S2650C5_nt8mf2650c5Ev
};
//SIG(-1 S2650C5_nt) C1{ m FC2{ m Fp}}


void  S2650C5_nt ::mf2650c5(){}

//skip512 S2650C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C10_nt  {
  void *s2650c10f0;
  void  mf2650c10(); // _ZN11S2650C10_nt9mf2650c10Ev
};
//SIG(-1 S2650C10_nt) C1{ m Fp}


void  S2650C10_nt ::mf2650c10(){}

//skip512 S2650C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C9  {
  ::S2650C10_nt s2650c9f0;
  void  mf2650c9(); // _ZN7S2650C98mf2650c9Ev
};
//SIG(-1 S2650C9) C1{ m FC2{ m Fp}}


void  S2650C9 ::mf2650c9(){}

static void Test_S2650C9()
{
  {
    init_simple_test("S2650C9");
    S2650C9 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2650C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2650C9)");
    check_field_offset(lv, s2650c9f0, 0, "S2650C9.s2650c9f0");
  }
}
static Arrange_To_Call_Me vS2650C9(Test_S2650C9, "S2650C9", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C13  {
  ::S2650C10_nt s2650c13f0;
  void  mf2650c13(); // _ZN8S2650C139mf2650c13Ev
};
//SIG(-1 S2650C13) C1{ m FC2{ m Fp}}


void  S2650C13 ::mf2650c13(){}

static void Test_S2650C13()
{
  {
    init_simple_test("S2650C13");
    S2650C13 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2650C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2650C13)");
    check_field_offset(lv, s2650c13f0, 0, "S2650C13.s2650c13f0");
  }
}
static Arrange_To_Call_Me vS2650C13(Test_S2650C13, "S2650C13", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C18  {
  void *s2650c18f0;
  void  mf2650c18(); // _ZN8S2650C189mf2650c18Ev
};
//SIG(-1 S2650C18) C1{ m Fp}


void  S2650C18 ::mf2650c18(){}

static void Test_S2650C18()
{
  {
    init_simple_test("S2650C18");
    S2650C18 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2650C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2650C18)");
    check_field_offset(lv, s2650c18f0, 0, "S2650C18.s2650c18f0");
  }
}
static Arrange_To_Call_Me vS2650C18(Test_S2650C18, "S2650C18", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C17  {
  ::S2650C18 s2650c17f0;
  void  mf2650c17(); // _ZN8S2650C179mf2650c17Ev
};
//SIG(-1 S2650C17) C1{ m FC2{ m Fp}}


void  S2650C17 ::mf2650c17(){}

static void Test_S2650C17()
{
  {
    init_simple_test("S2650C17");
    S2650C17 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2650C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2650C17)");
    check_field_offset(lv, s2650c17f0, 0, "S2650C17.s2650c17f0");
  }
}
static Arrange_To_Call_Me vS2650C17(Test_S2650C17, "S2650C17", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C22  {
  unsigned int s2650c22f0:1;
  int s2650c22f1:2;
  int s2650c22f2:7;
  unsigned int s2650c22f3:1;
  int s2650c22f4:2;
  int s2650c22f5:4;
  int s2650c22f6:2;
  int s2650c22f7:4;
  int s2650c22f8:6;
  unsigned int s2650c22f9:1;
  int s2650c22f10:3;
  unsigned int s2650c22f11:1;
  unsigned int s2650c22f12:1;
  unsigned int s2650c22f13:1;
  unsigned int s2650c22f14:1;
  int s2650c22f15:4;
  int s2650c22f16:2;
  int s2650c22f17:2;
  void  mf2650c22(); // _ZN8S2650C229mf2650c22Ev
};
//SIG(-1 S2650C22) C1{ m Fi:1 Fi:2 Fi:7 Fi:1 Fi:2 Fi:4 Fi:2 Fi:4 Fi:6 Fi:1 Fi:3 Fi:1 Fi:1 Fi:1 Fi:1 Fi:4 Fi:2 Fi:2}


void  S2650C22 ::mf2650c22(){}

static void Test_S2650C22()
{
  {
    init_simple_test("S2650C22");
    static S2650C22 lv;
    check2(sizeof(lv), 8, "sizeof(S2650C22)");
    check2(__alignof__(lv), 4, "__alignof__(S2650C22)");
    set_bf_and_test(lv, s2650c22f0, 0, 0, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f1, 0, 1, 2, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f1, 0, 1, 2, hide_sll(1LL<<1), "S2650C22");
    set_bf_and_test(lv, s2650c22f2, 0, 3, 7, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f2, 0, 3, 7, hide_sll(1LL<<6), "S2650C22");
    set_bf_and_test(lv, s2650c22f3, 1, 2, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f4, 1, 3, 2, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f4, 1, 3, 2, hide_sll(1LL<<1), "S2650C22");
    set_bf_and_test(lv, s2650c22f5, 1, 5, 4, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f5, 1, 5, 4, hide_sll(1LL<<3), "S2650C22");
    set_bf_and_test(lv, s2650c22f6, 2, 1, 2, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f6, 2, 1, 2, hide_sll(1LL<<1), "S2650C22");
    set_bf_and_test(lv, s2650c22f7, 2, 3, 4, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f7, 2, 3, 4, hide_sll(1LL<<3), "S2650C22");
    set_bf_and_test(lv, s2650c22f8, 2, 7, 6, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f8, 2, 7, 6, hide_sll(1LL<<5), "S2650C22");
    set_bf_and_test(lv, s2650c22f9, 3, 5, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f10, 4, 0, 3, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f10, 4, 0, 3, hide_sll(1LL<<2), "S2650C22");
    set_bf_and_test(lv, s2650c22f11, 4, 3, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f12, 4, 4, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f13, 4, 5, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f14, 4, 6, 1, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f15, 4, 7, 4, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f15, 4, 7, 4, hide_sll(1LL<<3), "S2650C22");
    set_bf_and_test(lv, s2650c22f16, 5, 3, 2, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f16, 5, 3, 2, hide_sll(1LL<<1), "S2650C22");
    set_bf_and_test(lv, s2650c22f17, 5, 5, 2, 1, "S2650C22");
    set_bf_and_test(lv, s2650c22f17, 5, 5, 2, hide_sll(1LL<<1), "S2650C22");
  }
}
static Arrange_To_Call_Me vS2650C22(Test_S2650C22, "S2650C22", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C23  {
  int s2650c23f0:5;
  int s2650c23f1:5;
  int s2650c23f2:3;
  int s2650c23f3:3;
  int s2650c23f4:4;
  int s2650c23f5:2;
  int s2650c23f6:2;
  int s2650c23f7:2;
  unsigned int s2650c23f8:1;
  int s2650c23f9:3;
  int s2650c23f10:2;
  int s2650c23f11:2;
  int s2650c23f12:2;
  int s2650c23f13:6;
  int s2650c23f14:7;
  unsigned int s2650c23f15:1;
  unsigned int s2650c23f16:1;
  unsigned int s2650c23f17:1;
  unsigned int s2650c23f18:1;
  void  mf2650c23(); // _ZN8S2650C239mf2650c23Ev
};
//SIG(-1 S2650C23) C1{ m Fi:5 Fi:5 Fi:3 Fi:3 Fi:4 Fi:2 Fi:2 Fi:2 Fi:1 Fi:3 Fi:2 Fi:2 Fi:2 Fi:6 Fi:7 Fi:1 Fi:1 Fi:1 Fi:1}


void  S2650C23 ::mf2650c23(){}

static void Test_S2650C23()
{
  {
    init_simple_test("S2650C23");
    static S2650C23 lv;
    check2(sizeof(lv), 8, "sizeof(S2650C23)");
    check2(__alignof__(lv), 4, "__alignof__(S2650C23)");
    set_bf_and_test(lv, s2650c23f0, 0, 0, 5, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f0, 0, 0, 5, hide_sll(1LL<<4), "S2650C23");
    set_bf_and_test(lv, s2650c23f1, 0, 5, 5, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f1, 0, 5, 5, hide_sll(1LL<<4), "S2650C23");
    set_bf_and_test(lv, s2650c23f2, 1, 2, 3, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f2, 1, 2, 3, hide_sll(1LL<<2), "S2650C23");
    set_bf_and_test(lv, s2650c23f3, 1, 5, 3, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f3, 1, 5, 3, hide_sll(1LL<<2), "S2650C23");
    set_bf_and_test(lv, s2650c23f4, 2, 0, 4, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f4, 2, 0, 4, hide_sll(1LL<<3), "S2650C23");
    set_bf_and_test(lv, s2650c23f5, 2, 4, 2, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f5, 2, 4, 2, hide_sll(1LL<<1), "S2650C23");
    set_bf_and_test(lv, s2650c23f6, 2, 6, 2, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f6, 2, 6, 2, hide_sll(1LL<<1), "S2650C23");
    set_bf_and_test(lv, s2650c23f7, 3, 0, 2, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f7, 3, 0, 2, hide_sll(1LL<<1), "S2650C23");
    set_bf_and_test(lv, s2650c23f8, 3, 2, 1, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f9, 3, 3, 3, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f9, 3, 3, 3, hide_sll(1LL<<2), "S2650C23");
    set_bf_and_test(lv, s2650c23f10, 3, 6, 2, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f10, 3, 6, 2, hide_sll(1LL<<1), "S2650C23");
    set_bf_and_test(lv, s2650c23f11, 4, 0, 2, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f11, 4, 0, 2, hide_sll(1LL<<1), "S2650C23");
    set_bf_and_test(lv, s2650c23f12, 4, 2, 2, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f12, 4, 2, 2, hide_sll(1LL<<1), "S2650C23");
    set_bf_and_test(lv, s2650c23f13, 4, 4, 6, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f13, 4, 4, 6, hide_sll(1LL<<5), "S2650C23");
    set_bf_and_test(lv, s2650c23f14, 5, 2, 7, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f14, 5, 2, 7, hide_sll(1LL<<6), "S2650C23");
    set_bf_and_test(lv, s2650c23f15, 6, 1, 1, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f16, 6, 2, 1, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f17, 6, 3, 1, 1, "S2650C23");
    set_bf_and_test(lv, s2650c23f18, 6, 4, 1, 1, "S2650C23");
  }
}
static Arrange_To_Call_Me vS2650C23(Test_S2650C23, "S2650C23", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2650C1  : S2650C2_nt {
  ::S2650C4 s2650c1f0;
  ::S2650C5_nt s2650c1f1;
  ::S2650C5_nt s2650c1f2;
  ::S2650C9 s2650c1f3;
  ::S2650C9 s2650c1f4;
  ::S2650C13 s2650c1f5;
  ::S2650C13 s2650c1f6;
  ::S2650C17 s2650c1f7;
  ::S2650C18 s2650c1f8;
  ::S2650C17 s2650c1f9;
  ::S2650C22 s2650c1f10;
  ::S2650C23 s2650c1f11;
};
//SIG(1 S2650C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:20} FC5{ m FC6{ m Fp}} FC5 FC7{ m FC8{ m Fp}} FC7 FC9{ m FC8} FC9 FC10{ m FC11{ m Fp}} FC11 FC10 FC12{ m Fi:1 Fi:2 Fi:7 Fi:1 Fi:2 Fi:4 Fi:2 Fi:4 Fi:6 Fi:1 Fi:3 Fi:1 Fi:1 Fi:1 Fi:1 Fi:4 Fi:2 Fi:2} FC13{ m Fi:5 Fi:5 Fi:3 Fi:3 Fi:4 Fi:2 Fi:2 Fi:2 Fi:1 Fi:3 Fi:2 Fi:2 Fi:2 Fi:6 Fi:7 Fi:1 Fi:1 Fi:1 Fi:1}}



static void Test_S2650C1()
{
  extern Class_Descriptor cd_S2650C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S2650C1, buf);
    S2650C1 &lv = *(new (buf) S2650C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S2650C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2650C1)");
    check_base_class_offset(lv, (S3281C8_nt*)(S2650C2_nt*), 0, "S2650C1");
    check_base_class_offset(lv, (S2650C2_nt*), 0, "S2650C1");
    check_field_offset(lv, s2650c1f0, 4, "S2650C1.s2650c1f0");
    check_field_offset(lv, s2650c1f1, 8, "S2650C1.s2650c1f1");
    check_field_offset(lv, s2650c1f2, ABISELECT(16,12), "S2650C1.s2650c1f2");
    check_field_offset(lv, s2650c1f3, ABISELECT(24,16), "S2650C1.s2650c1f3");
    check_field_offset(lv, s2650c1f4, ABISELECT(32,20), "S2650C1.s2650c1f4");
    check_field_offset(lv, s2650c1f5, ABISELECT(40,24), "S2650C1.s2650c1f5");
    check_field_offset(lv, s2650c1f6, ABISELECT(48,28), "S2650C1.s2650c1f6");
    check_field_offset(lv, s2650c1f7, ABISELECT(56,32), "S2650C1.s2650c1f7");
    check_field_offset(lv, s2650c1f8, ABISELECT(64,36), "S2650C1.s2650c1f8");
    check_field_offset(lv, s2650c1f9, ABISELECT(72,40), "S2650C1.s2650c1f9");
    check_field_offset(lv, s2650c1f10, ABISELECT(80,44), "S2650C1.s2650c1f10");
    check_field_offset(lv, s2650c1f11, ABISELECT(88,52), "S2650C1.s2650c1f11");
    test_class_info(&lv, &cd_S2650C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2650C1(Test_S2650C1, "S2650C1", ABISELECT(96,60));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19256C3  {
  long s19256c3f0[10];
  long double s19256c3f1;
  char s19256c3f2[2];
  long double s19256c3f3;
  void *s19256c3f4;
  __tsi64 s19256c3f5;
  char s19256c3f6;
  virtual void  v1(); // _ZN8S19256C32v1Ev
  virtual void  v2(); // _ZN8S19256C32v2Ev
  ~S19256C3(); // tgen
  S19256C3(); // tgen
};
//SIG(-1 S19256C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S19256C3 ::v1(){vfunc_called(this, "_ZN8S19256C32v1Ev");}
void  S19256C3 ::v2(){vfunc_called(this, "_ZN8S19256C32v2Ev");}
S19256C3 ::~S19256C3(){ note_dtor("S19256C3", this);} // tgen
S19256C3 ::S19256C3(){ note_ctor("S19256C3", this);} // tgen

static void Test_S19256C3()
{
  extern Class_Descriptor cd_S19256C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S19256C3, buf);
    S19256C3 *dp, &lv = *(dp=new (buf) S19256C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S19256C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C3)");
    check_field_offset(lv, s19256c3f0, ABISELECT(8,4), "S19256C3.s19256c3f0");
    check_field_offset(lv, s19256c3f1, ABISELECT(96,44), "S19256C3.s19256c3f1");
    check_field_offset(lv, s19256c3f2, ABISELECT(112,56), "S19256C3.s19256c3f2");
    check_field_offset(lv, s19256c3f3, ABISELECT(128,60), "S19256C3.s19256c3f3");
    check_field_offset(lv, s19256c3f4, ABISELECT(144,72), "S19256C3.s19256c3f4");
    check_field_offset(lv, s19256c3f5, ABISELECT(152,76), "S19256C3.s19256c3f5");
    check_field_offset(lv, s19256c3f6, ABISELECT(160,84), "S19256C3.s19256c3f6");
    test_class_info(&lv, &cd_S19256C3);
    dp->~S19256C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C3(Test_S19256C3, "S19256C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S19256C3C1Ev();
extern void _ZN8S19256C3D1Ev();
Name_Map name_map_S19256C3[] = {
  NSPAIR(_ZN8S19256C3C1Ev),
  NSPAIR(_ZN8S19256C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19256C3[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY vtc_S19256C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C3[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
Class_Descriptor cd_S19256C3 = {  "S19256C3", // class name
  0,0,//no base classes
  &(vtc_S19256C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S19256C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19256C3),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  S19256C4  : virtual S19256C3 {
  void *s19256c4f0;
  ::S19256C3 s19256c4f1;
  virtual  ~S19256C4(); // _ZN8S19256C4D2Ev
  S19256C4(); // tgen
};
//SIG(-1 S19256C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S19256C4()
{
  extern Class_Descriptor cd_S19256C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S19256C4, buf);
    S19256C4 *dp, &lv = *(dp=new (buf) S19256C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S19256C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C4)");
    check_base_class_offset(lv, (S19256C3*), ABISELECT(192,96), "S19256C4");
    check_field_offset(lv, s19256c4f0, ABISELECT(8,4), "S19256C4.s19256c4f0");
    check_field_offset(lv, s19256c4f1, ABISELECT(16,8), "S19256C4.s19256c4f1");
    test_class_info(&lv, &cd_S19256C4);
    dp->~S19256C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C4(Test_S19256C4, "S19256C4", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S19256C4C1Ev();
extern void _ZN8S19256C4D2Ev();
Name_Map name_map_S19256C4[] = {
  NSPAIR(_ZN8S19256C4C1Ev),
  NSPAIR(_ZN8S19256C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
static Base_Class bases_S19256C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C4[];
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY vtc_S19256C4[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19256C4[];
static  VTT_ENTRY vtt_S19256C4[] = {
  {&(_ZTV8S19256C4[3]),  3,11},
  {&(_ZTV8S19256C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
Class_Descriptor cd_S19256C4 = {  "S19256C4", // class name
  bases_S19256C4, 1,
  &(vtc_S19256C4[0]), // expected_vtbl_contents
  &(vtt_S19256C4[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S19256C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19256C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C4),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  S19256C2  : S19256C3 {
  ::S19256C3 s19256c2f0;
  ::S19256C4 s19256c2f1;
  ::S19256C3 s19256c2f2;
  virtual void  v3(); // _ZN8S19256C22v3Ev
  ~S19256C2(); // tgen
  S19256C2(); // tgen
};
//SIG(-1 S19256C2) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S19256C2()
{
  extern Class_Descriptor cd_S19256C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S19256C2, buf);
    S19256C2 *dp, &lv = *(dp=new (buf) S19256C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S19256C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C2)");
    check_base_class_offset(lv, (S19256C3*), 0, "S19256C2");
    check_field_offset(lv, s19256c2f0, ABISELECT(176,88), "S19256C2.s19256c2f0");
    check_field_offset(lv, s19256c2f1, ABISELECT(352,176), "S19256C2.s19256c2f1");
    check_field_offset(lv, s19256c2f2, ABISELECT(720,360), "S19256C2.s19256c2f2");
    test_class_info(&lv, &cd_S19256C2);
    dp->~S19256C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C2(Test_S19256C2, "S19256C2", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S19256C2C1Ev();
extern void _ZN8S19256C2D1Ev();
Name_Map name_map_S19256C2[] = {
  NSPAIR(_ZN8S19256C2C1Ev),
  NSPAIR(_ZN8S19256C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
static Base_Class bases_S19256C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C2[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY vtc_S19256C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C2[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
Class_Descriptor cd_S19256C2 = {  "S19256C2", // class name
  bases_S19256C2, 1,
  &(vtc_S19256C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S19256C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19256C2),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  S19256C8  : virtual S19256C3 {
  void *s19256c8f0;
  short s19256c8f1;
  ~S19256C8(); // tgen
  S19256C8(); // tgen
};
//SIG(-1 S19256C8) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S19256C8()
{
  extern Class_Descriptor cd_S19256C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S19256C8, buf);
    S19256C8 *dp, &lv = *(dp=new (buf) S19256C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S19256C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C8)");
    check_base_class_offset(lv, (S19256C3*), ABISELECT(32,12), "S19256C8");
    check_field_offset(lv, s19256c8f0, ABISELECT(8,4), "S19256C8.s19256c8f0");
    check_field_offset(lv, s19256c8f1, ABISELECT(16,8), "S19256C8.s19256c8f1");
    test_class_info(&lv, &cd_S19256C8);
    dp->~S19256C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C8(Test_S19256C8, "S19256C8", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S19256C8C1Ev();
extern void _ZN8S19256C8D1Ev();
Name_Map name_map_S19256C8[] = {
  NSPAIR(_ZN8S19256C8C1Ev),
  NSPAIR(_ZN8S19256C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
static Base_Class bases_S19256C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S19256C8[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY vtc_S19256C8[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19256C8[];
static  VTT_ENTRY vtt_S19256C8[] = {
  {&(_ZTV8S19256C8[3]),  3,9},
  {&(_ZTV8S19256C8[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
Class_Descriptor cd_S19256C8 = {  "S19256C8", // class name
  bases_S19256C8, 1,
  &(vtc_S19256C8[0]), // expected_vtbl_contents
  &(vtt_S19256C8[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S19256C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19256C8),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C8),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  S19256C7  : virtual S19256C8 , virtual S19256C4 , S19256C3 , virtual S19256C2 {
  ::S19256C2 s19256c7f0;
  void *s19256c7f1;
  long s19256c7f2[8];
  __tsi64 s19256c7f3[2];
  char s19256c7f4;
  ::S19256C2 s19256c7f5[7];
  virtual  ~S19256C7(); // _ZN8S19256C7D2Ev
  S19256C7(); // tgen
};
//SIG(-1 S19256C7) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S19256C7()
{
  extern Class_Descriptor cd_S19256C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S19256C7, buf);
    S19256C7 *dp, &lv = *(dp=new (buf) S19256C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S19256C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C7)");
    check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(7472,3740), "S19256C7");
    check_base_class_offset(lv, (S19256C3*)(S19256C4*), ABISELECT(7472,3740), "S19256C7");
    check_base_class_offset(lv, (S19256C8*), ABISELECT(7440,3728), "S19256C7");
    check_base_class_offset(lv, (S19256C4*), ABISELECT(7648,3828), "S19256C7");
    /*is_ambiguous_... S19256C7::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*), 0, "S19256C7");
    check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(7840,3924), "S19256C7");
    check_base_class_offset(lv, (S19256C2*), ABISELECT(7840,3924), "S19256C7");
    check_field_offset(lv, s19256c7f0, ABISELECT(176,88), "S19256C7.s19256c7f0");
    check_field_offset(lv, s19256c7f1, ABISELECT(1072,536), "S19256C7.s19256c7f1");
    check_field_offset(lv, s19256c7f2, ABISELECT(1080,540), "S19256C7.s19256c7f2");
    check_field_offset(lv, s19256c7f3, ABISELECT(1144,572), "S19256C7.s19256c7f3");
    check_field_offset(lv, s19256c7f4, ABISELECT(1160,588), "S19256C7.s19256c7f4");
    check_field_offset(lv, s19256c7f5, ABISELECT(1168,592), "S19256C7.s19256c7f5");
    test_class_info(&lv, &cd_S19256C7);
    dp->~S19256C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C7(Test_S19256C7, "S19256C7", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S19256C7C1Ev();
extern void _ZN8S19256C7D2Ev();
Name_Map name_map_S19256C7[] = {
  NSPAIR(_ZN8S19256C7C1Ev),
  NSPAIR(_ZN8S19256C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
static Base_Class bases_S19256C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19256C8,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S19256C4,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19256C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C7[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19256C7D1Ev,_ZThn3828_N8S19256C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19256C7D0Ev,_ZThn3828_N8S19256C7D0Ev)() __attribute__((weak));
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY vtc_S19256C7[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19256C7[];
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C7[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__8S19256C7[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C7[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C4__8S19256C7[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTT_ENTRY vtt_S19256C7[] = {
  {&(_ZTV8S19256C7[6]),  6,33},
  {&(_ZTV8S19256C7[13]),  13,33},
  {&(_ZTV8S19256C7[17]),  17,33},
  {&(_ZTV8S19256C7[23]),  23,33},
  {&(_ZTV8S19256C7[30]),  30,33},
  {&(_tg__ZTV8S19256C8__8S19256C7[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__8S19256C7[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C7[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C4__8S19256C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19256C7D0Ev,_ZThn3828_N8S19256C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19256C7D1Ev,_ZThn3828_N8S19256C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19256C7 = {  "S19256C7", // class name
  bases_S19256C7, 6,
  &(vtc_S19256C7[0]), // expected_vtbl_contents
  &(vtt_S19256C7[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S19256C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19256C7),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C7),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19256C6  : virtual S19256C3 , virtual S19256C4 , S19256C7 , S19256C8 , S19256C2 {
  void *s19256c6f0;
  char s19256c6f1;
  ~S19256C6(); // tgen
  S19256C6(); // tgen
};
//SIG(-1 S19256C6) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S19256C6()
{
  extern Class_Descriptor cd_S19256C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S19256C6, buf);
    S19256C6 *dp, &lv = *(dp=new (buf) S19256C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S19256C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C6)");
    /*is_ambiguous_... S19256C6::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*), ABISELECT(8384,4196), "S19256C6");
    check_base_class_offset(lv, (S19256C3*)(S19256C4*), ABISELECT(8384,4196), "S19256C6");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(8384,4196), "S19256C6");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(8384,4196), "S19256C6");
    check_base_class_offset(lv, (S19256C4*), ABISELECT(8560,4284), "S19256C6");
    check_base_class_offset(lv, (S19256C4*)(S19256C7*), ABISELECT(8560,4284), "S19256C6");
    check_base_class_offset(lv, (S19256C8*)(S19256C7*), ABISELECT(8752,4380), "S19256C6");
    /*is_ambiguous_... S19256C7::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C7*), 0, "S19256C6");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(8784,4392), "S19256C6");
    check_base_class_offset(lv, (S19256C2*)(S19256C7*), ABISELECT(8784,4392), "S19256C6");
    check_base_class_offset(lv, (S19256C7*), 0, "S19256C6");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C8*), ABISELECT(7440,3728), "S19256C6");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(7472,3740), "S19256C6");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C2*), ABISELECT(7472,3740), "S19256C6");
    check_field_offset(lv, s19256c6f0, ABISELECT(8368,4188), "S19256C6.s19256c6f0");
    check_field_offset(lv, s19256c6f1, ABISELECT(8376,4192), "S19256C6.s19256c6f1");
    test_class_info(&lv, &cd_S19256C6);
    dp->~S19256C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C6(Test_S19256C6, "S19256C6", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN8S19256C6C1Ev();
extern void _ZN8S19256C6D1Ev();
Name_Map name_map_S19256C6[] = {
  NSPAIR(_ZN8S19256C6C1Ev),
  NSPAIR(_ZN8S19256C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C7;
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
static Base_Class bases_S19256C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C4,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C8,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19256C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19256C2,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19256C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19256C8,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19256C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19256C2,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C6[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C6D1Ev();
extern void _ZN8S19256C6D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19256C6D1Ev,_ZThn4284_N8S19256C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19256C6D0Ev,_ZThn4284_N8S19256C6D0Ev)() __attribute__((weak));
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY vtc_S19256C6[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19256C6[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C7__8S19256C6[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C7__8S19256C6[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C7__8S19256C6[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19256C7D1Ev,_ZThn4284_N8S19256C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19256C7D0Ev,_ZThn4284_N8S19256C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C7__8S19256C6[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C7__8S19256C6[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__A__8S19256C6[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__A__8S19256C6[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C6[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C4__8S19256C6[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C6[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__8S19256C6[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTT_ENTRY vtt_S19256C6[] = {
  {&(_ZTV8S19256C6[6]),  6,41},
  {&(_tg__ZTV8S19256C7__8S19256C6[6]),  6,10},
  {&(_tg__ZTV8S19256C8__8S19256C7__8S19256C6[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C7__8S19256C6[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C7__8S19256C6[4]),  4,6},
  {&(_tg__ZTV8S19256C2__8S19256C7__8S19256C6[5]),  5,8},
  {&(_tg__ZTV8S19256C8__A__8S19256C6[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__A__8S19256C6[4]),  4,6},
  {&(_ZTV8S19256C6[22]),  22,41},
  {&(_ZTV8S19256C6[28]),  28,41},
  {&(_ZTV8S19256C6[33]),  33,41},
  {&(_ZTV8S19256C6[38]),  38,41},
  {&(_ZTV8S19256C6[13]),  13,41},
  {&(_tg__ZTV8S19256C4__8S19256C6[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C4__8S19256C6[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C6[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__8S19256C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19256C6[];
extern  VTBL_ENTRY _ZTV8S19256C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C6[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19256C7D0Ev,_ZThn4284_N8S19256C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19256C7D1Ev,_ZThn4284_N8S19256C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19256C6D0Ev,_ZThn4284_N8S19256C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19256C6D1Ev,_ZThn4284_N8S19256C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19256C6 = {  "S19256C6", // class name
  bases_S19256C6, 10,
  &(vtc_S19256C6[0]), // expected_vtbl_contents
  &(vtt_S19256C6[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI8S19256C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19256C6),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C6),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19256C10  : virtual S4224C43_nt , S19256C2 , S19256C3 , S19256C8 {
  short s19256c10f0;
  ::S19256C2 s19256c10f1;
  void *s19256c10f2[2];
  __tsi64 s19256c10f3;
  ::S19256C7 s19256c10f4[5];
  int s19256c10f5;
  virtual void  v4(); // _ZN9S19256C102v4Ev
  ~S19256C10(); // tgen
  S19256C10(); // tgen
};
//SIG(-1 S19256C10) C1{ VBC2{ m Fp} BC3{ BC4{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v4 FC4 FC5{ VBC4 vd Fp FC4} FC4} BC4 BC6{ VBC4 Fp Fs} v1 Fs FC3 Fp[2] FL FC7{ VBC6 VBC5 BC4 VBC3 vd FC3 Fp Fl[8] FL[2] Fc FC3[7]}[5] Fi}


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

static void Test_S19256C10()
{
  extern Class_Descriptor cd_S19256C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2869,5743)];
    init_test(&cd_S19256C10, buf);
    S19256C10 *dp, &lv = *(dp=new (buf) S19256C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(45888,22968), "sizeof(S19256C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C10)");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(45704,22876), "S19256C10");
    check_base_class_offset(lv, (S19256C3*)(S19256C2*), 0, "S19256C10");
    check_base_class_offset(lv, (S19256C2*), 0, "S19256C10");
    /*is_ambiguous_... S19256C10::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*), ABISELECT(896,448), "S19256C10");
    check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(45712,22880), "S19256C10");
    check_base_class_offset(lv, (S19256C8*), ABISELECT(1064,536), "S19256C10");
    check_field_offset(lv, s19256c10f0, ABISELECT(1082,546), "S19256C10.s19256c10f0");
    check_field_offset(lv, s19256c10f1, ABISELECT(1088,548), "S19256C10.s19256c10f1");
    check_field_offset(lv, s19256c10f2, ABISELECT(1984,996), "S19256C10.s19256c10f2");
    check_field_offset(lv, s19256c10f3, ABISELECT(2000,1004), "S19256C10.s19256c10f3");
    check_field_offset(lv, s19256c10f4, ABISELECT(2016,1012), "S19256C10.s19256c10f4");
    check_field_offset(lv, s19256c10f5, ABISELECT(45696,22872), "S19256C10.s19256c10f5");
    test_class_info(&lv, &cd_S19256C10);
    dp->~S19256C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C10(Test_S19256C10, "S19256C10", ABISELECT(45888,22968));

#else // __cplusplus

extern void _ZN9S19256C10C1Ev();
extern void _ZN9S19256C10D1Ev();
Name_Map name_map_S19256C10[] = {
  NSPAIR(_ZN9S19256C10C1Ev),
  NSPAIR(_ZN9S19256C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
static Base_Class bases_S19256C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C43_nt,    ABISELECT(45704,22876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19256C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19256C3,    ABISELECT(896,448), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19256C3,    ABISELECT(45712,22880), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19256C8,    ABISELECT(1064,536), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19256C10[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY vtc_S19256C10[] = {
  ABISELECT(45712,22880),
  ABISELECT(45704,22876),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(44648,22344),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  0,
  0,
  ABISELECT(-45712,-22880),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S19256C10[];
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C10[] = {
  ABISELECT(44648,22344),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__9S19256C10[] = {
  0,
  0,
  ABISELECT(-44648,-22344),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTT_ENTRY vtt_S19256C10[] = {
  {&(_ZTV9S19256C10[4]),  4,21},
  {&(_tg__ZTV8S19256C8__9S19256C10[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__9S19256C10[4]),  4,6},
  {&(_ZTV9S19256C10[15]),  15,21},
  {&(_ZTV9S19256C10[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S19256C10[];
extern  VTBL_ENTRY _ZTV9S19256C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C10[];
Class_Descriptor cd_S19256C10 = {  "S19256C10", // class name
  bases_S19256C10, 6,
  &(vtc_S19256C10[0]), // expected_vtbl_contents
  &(vtt_S19256C10[0]), // expected_vtt_contents
  ABISELECT(45888,22968), // object size
  NSPAIRA(_ZTI9S19256C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19256C10),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19256C10),5, //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  S19256C9  : S19256C4 , S19256C10 {
  ::S4224C43_nt s19256c9f0[9];
  int s19256c9f1;
  long s19256c9f2;
  long double s19256c9f3;
  virtual  ~S19256C9(); // _ZN8S19256C9D2Ev
  S19256C9(); // tgen
};
//SIG(-1 S19256C9) C1{ BC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC3} BC4{ VBC5{ m Fp} BC6{ BC3 v3 FC3 FC2 FC3} BC3 BC7{ VBC3 Fp Fs} v4 Fs FC6 Fp[2] FL FC8{ VBC7 VBC2 BC3 VBC6 vd FC6 Fp Fl[8] FL[2] Fc FC6[7]}[5] Fi} vd FC5[9] Fi Fl FD}


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

static void Test_S19256C9()
{
  extern Class_Descriptor cd_S19256C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2887,5781)];
    init_test(&cd_S19256C9, buf);
    S19256C9 *dp, &lv = *(dp=new (buf) S19256C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(46176,23120), "sizeof(S19256C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C9)");
    check_base_class_offset(lv, (S19256C3*)(S19256C4*), ABISELECT(46000,23028), "S19256C9");
    check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C10*), ABISELECT(46000,23028), "S19256C9");
    check_base_class_offset(lv, (S19256C4*), 0, "S19256C9");
    check_base_class_offset(lv, (S4224C43_nt*)(S19256C10*), ABISELECT(46168,23116), "S19256C9");
    check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C10*), ABISELECT(192,96), "S19256C9");
    check_base_class_offset(lv, (S19256C2*)(S19256C10*), ABISELECT(192,96), "S19256C9");
    /*is_ambiguous_... S19256C10::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C10*), ABISELECT(1088,544), "S19256C9");
    check_base_class_offset(lv, (S19256C8*)(S19256C10*), ABISELECT(1256,632), "S19256C9");
    check_base_class_offset(lv, (S19256C10*), ABISELECT(192,96), "S19256C9");
    check_field_offset(lv, s19256c9f0, ABISELECT(45896,22972), "S19256C9.s19256c9f0");
    check_field_offset(lv, s19256c9f1, ABISELECT(45968,23008), "S19256C9.s19256c9f1");
    check_field_offset(lv, s19256c9f2, ABISELECT(45976,23012), "S19256C9.s19256c9f2");
    check_field_offset(lv, s19256c9f3, ABISELECT(45984,23016), "S19256C9.s19256c9f3");
    test_class_info(&lv, &cd_S19256C9);
    dp->~S19256C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C9(Test_S19256C9, "S19256C9", ABISELECT(46176,23120));

#else // __cplusplus

extern void _ZN8S19256C9C1Ev();
extern void _ZN8S19256C9D2Ev();
Name_Map name_map_S19256C9[] = {
  NSPAIR(_ZN8S19256C9C1Ev),
  NSPAIR(_ZN8S19256C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C10;
extern VTBL_ENTRY _ZTI9S19256C10[];
extern  VTBL_ENTRY _ZTV9S19256C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C10[];
static Base_Class bases_S19256C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(46000,23028), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19256C4,    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_S4224C43_nt,    ABISELECT(46168,23116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19256C3,    ABISELECT(192,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_S19256C2,    ABISELECT(192,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(1088,544), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(1256,632), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19256C10,    ABISELECT(192,96), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C9[];
extern void _ZN8S19256C9D1Ev();
extern void _ZN8S19256C9D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY vtc_S19256C9[] = {
  ABISELECT(46168,23116),
  ABISELECT(46000,23028),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C9D0Ev,
  ABISELECT(45808,22932),
  ABISELECT(45976,23020),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
  ABISELECT(-1088,-544),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(44744,22396),
  ABISELECT(-1256,-632),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  0,
  0,
  ABISELECT(-46000,-23028),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19256C9[];
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C9[] = {
  ABISELECT(46000,23028),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C4__8S19256C9[] = {
  0,
  0,
  ABISELECT(-46000,-23028),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C10__8S19256C9[] = {
  ABISELECT(45808,22932),
  ABISELECT(45976,23020),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C89S19256C10__8S19256C9[] = {
  ABISELECT(44744,22396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C89S19256C10__8S19256C9[] = {
  0,
  0,
  ABISELECT(-44744,-22396),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C10__8S19256C9[] = {
  ABISELECT(44744,22396),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__A2__9S19256C10__8S19256C9[] = {
  0,
  0,
  ABISELECT(-45808,-22932),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTT_ENTRY vtt_S19256C9[] = {
  {&(_ZTV8S19256C9[4]),  4,27},
  {&(_tg__ZTV8S19256C4__8S19256C9[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C4__8S19256C9[4]),  4,6},
  {&(_tg__ZTV9S19256C10__8S19256C9[4]),  4,8},
  {&(_tg__ZTV8S19256C89S19256C10__8S19256C9[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C89S19256C10__8S19256C9[4]),  4,6},
  {&(_tg__ZTV8S19256C8__9S19256C10__8S19256C9[3]),  3,3},
  {&(_tg__ZTV8S19256C3__A2__9S19256C10__8S19256C9[4]),  4,6},
  {&(_ZTV8S19256C9[25]),  25,27},
  {&(_ZTV8S19256C9[10]),  10,27},
  {&(_ZTV8S19256C9[21]),  21,27},
};
extern VTBL_ENTRY _ZTI8S19256C9[];
extern  VTBL_ENTRY _ZTV8S19256C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C9[];
Class_Descriptor cd_S19256C9 = {  "S19256C9", // class name
  bases_S19256C9, 8,
  &(vtc_S19256C9[0]), // expected_vtbl_contents
  &(vtt_S19256C9[0]), // expected_vtt_contents
  ABISELECT(46176,23120), // object size
  NSPAIRA(_ZTI8S19256C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19256C9),27, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C9),11, //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  S19256C13  : S19256C3 , virtual S19256C2 {
  ::S19256C8 s19256c13f0;
  int s19256c13f1;
  void *s19256c13f2;
  ::S19256C7 s19256c13f3;
  int s19256c13f4;
  ::S19256C7 s19256c13f5;
  virtual  ~S19256C13(); // _ZN9S19256C13D2Ev
  S19256C13(); // tgen
};
//SIG(-1 S19256C13) C1{ BC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ BC2 v3 FC2 FC4{ VBC2 vd Fp FC2} FC2} vd FC5{ VBC2 Fp Fs} Fi Fp FC6{ VBC5 VBC4 BC2 VBC3 vd FC3 Fp Fl[8] FL[2] Fc FC3[7]} Fi FC6}


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

static void Test_S19256C13()
{
  extern Class_Descriptor cd_S19256C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1175,2349)];
    init_test(&cd_S19256C13, buf);
    S19256C13 *dp, &lv = *(dp=new (buf) S19256C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(18784,9392), "sizeof(S19256C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C13)");
    /*is_ambiguous_... S19256C13::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*), 0, "S19256C13");
    check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(17888,8944), "S19256C13");
    check_base_class_offset(lv, (S19256C2*), ABISELECT(17888,8944), "S19256C13");
    check_field_offset(lv, s19256c13f0, ABISELECT(176,88), "S19256C13.s19256c13f0");
    check_field_offset(lv, s19256c13f1, ABISELECT(384,188), "S19256C13.s19256c13f1");
    check_field_offset(lv, s19256c13f2, ABISELECT(392,192), "S19256C13.s19256c13f2");
    check_field_offset(lv, s19256c13f3, ABISELECT(400,196), "S19256C13.s19256c13f3");
    check_field_offset(lv, s19256c13f4, ABISELECT(9136,4568), "S19256C13.s19256c13f4");
    check_field_offset(lv, s19256c13f5, ABISELECT(9152,4572), "S19256C13.s19256c13f5");
    test_class_info(&lv, &cd_S19256C13);
    dp->~S19256C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C13(Test_S19256C13, "S19256C13", ABISELECT(18784,9392));

#else // __cplusplus

extern void _ZN9S19256C13C1Ev();
extern void _ZN9S19256C13D2Ev();
Name_Map name_map_S19256C13[] = {
  NSPAIR(_ZN9S19256C13C1Ev),
  NSPAIR(_ZN9S19256C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
static Base_Class bases_S19256C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19256C3,    ABISELECT(17888,8944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(17888,8944), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19256C13[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C13D1Ev();
extern void _ZN9S19256C13D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY vtc_S19256C13[] = {
  ABISELECT(17888,8944),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D0Ev,
  0,
  0,
  0,
  ABISELECT(-17888,-8944),
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern VTBL_ENTRY _ZTV9S19256C13[];
static  VTT_ENTRY vtt_S19256C13[] = {
  {&(_ZTV9S19256C13[3]),  3,15},
  {&(_ZTV9S19256C13[12]),  12,15},
};
extern VTBL_ENTRY _ZTI9S19256C13[];
extern  VTBL_ENTRY _ZTV9S19256C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C13[];
Class_Descriptor cd_S19256C13 = {  "S19256C13", // class name
  bases_S19256C13, 3,
  &(vtc_S19256C13[0]), // expected_vtbl_contents
  &(vtt_S19256C13[0]), // expected_vtt_contents
  ABISELECT(18784,9392), // object size
  NSPAIRA(_ZTI9S19256C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19256C13),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19256C13),2, //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  S19256C12  : virtual S19256C13 , S19256C6 {
  void *s19256c12f0;
  short s19256c12f1;
  ::S19256C13 s19256c12f2;
  ::S19256C6 s19256c12f3[5];
  int s19256c12f4;
  virtual  ~S19256C12(); // _ZN9S19256C12D2Ev
  virtual void  v5(); // _ZN9S19256C122v5Ev
  S19256C12(); // tgen
};
//SIG(-1 S19256C12) C1{ VBC2{ BC3{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ BC3 v4 FC3 FC5{ VBC3 vd Fp FC3} FC3} vd FC6{ VBC3 Fp Fs} Fi Fp FC7{ VBC6 VBC5 BC3 VBC4 vd FC4 Fp Fl[8] FL[2] Fc FC4[7]} Fi FC7} BC8{ VBC3 VBC5 BC7 BC6 BC4 Fp Fc} vd v1 Fp Fs FC2 FC8[5] Fi}


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

static void Test_S19256C12()
{
  extern Class_Descriptor cd_S19256C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5925,11848)];
    init_test(&cd_S19256C12, buf);
    S19256C12 *dp, &lv = *(dp=new (buf) S19256C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(94784,47388), "sizeof(S19256C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C12)");
    /*is_ambiguous_... S19256C13::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C13*), ABISELECT(75600,37800), "S19256C12");
    /*is_ambiguous_... S19256C12::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(93488,46744), "S19256C12");
    check_base_class_offset(lv, (S19256C2*)(S19256C13*), ABISELECT(93488,46744), "S19256C12");
    check_base_class_offset(lv, (S19256C2*)(S19256C7*)(S19256C6*), ABISELECT(93488,46744), "S19256C12");
    check_base_class_offset(lv, (S19256C13*), ABISELECT(75600,37800), "S19256C12");
    /*is_ambiguous_... S19256C6::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C6*), ABISELECT(94384,47192), "S19256C12");
    check_base_class_offset(lv, (S19256C3*)(S19256C4*), ABISELECT(94384,47192), "S19256C12");
    /*is_ambiguous_... S19256C12::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(94384,47192), "S19256C12");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C6*), ABISELECT(94384,47192), "S19256C12");
    check_base_class_offset(lv, (S19256C4*)(S19256C6*), ABISELECT(94560,47280), "S19256C12");
    check_base_class_offset(lv, (S19256C4*)(S19256C7*)(S19256C6*), ABISELECT(94560,47280), "S19256C12");
    check_base_class_offset(lv, (S19256C8*)(S19256C7*)(S19256C6*), ABISELECT(94752,47376), "S19256C12");
    /*is_ambiguous_... S19256C7::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C7*)(S19256C6*), 0, "S19256C12");
    check_base_class_offset(lv, (S19256C7*)(S19256C6*), 0, "S19256C12");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C6*), ABISELECT(7440,3728), "S19256C12");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C6*), ABISELECT(7472,3740), "S19256C12");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C6*), ABISELECT(7472,3740), "S19256C12");
    check_base_class_offset(lv, (S19256C6*), 0, "S19256C12");
    check_field_offset(lv, s19256c12f0, ABISELECT(8384,4196), "S19256C12.s19256c12f0");
    check_field_offset(lv, s19256c12f1, ABISELECT(8392,4200), "S19256C12.s19256c12f1");
    check_field_offset(lv, s19256c12f2, ABISELECT(8400,4204), "S19256C12.s19256c12f2");
    check_field_offset(lv, s19256c12f3, ABISELECT(27184,13596), "S19256C12.s19256c12f3");
    check_field_offset(lv, s19256c12f4, ABISELECT(75584,37796), "S19256C12.s19256c12f4");
    test_class_info(&lv, &cd_S19256C12);
    dp->~S19256C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C12(Test_S19256C12, "S19256C12", ABISELECT(94784,47388));

#else // __cplusplus

extern void _ZN9S19256C12C1Ev();
extern void _ZN9S19256C12D2Ev();
Name_Map name_map_S19256C12[] = {
  NSPAIR(_ZN9S19256C12C1Ev),
  NSPAIR(_ZN9S19256C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C13;
extern VTBL_ENTRY _ZTI9S19256C13[];
extern  VTBL_ENTRY _ZTV9S19256C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C13[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C7;
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C6;
extern VTBL_ENTRY _ZTI8S19256C6[];
extern  VTBL_ENTRY _ZTV8S19256C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C6[];
static Base_Class bases_S19256C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(75600,37800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19256C3,    ABISELECT(93488,46744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(93488,46744), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19256C13,    ABISELECT(75600,37800), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C3,    ABISELECT(94384,47192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19256C4,    ABISELECT(94560,47280), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19256C8,    ABISELECT(94752,47376), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19256C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(7440,3728), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(7472,3740), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19256C6,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19256C12[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C12D1Ev();
extern void _ZN9S19256C12D0Ev();
extern void _ZN9S19256C122v5Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev)();
extern void ABISELECT(_ZThn75600_N9S19256C12D1Ev,_ZThn37800_N9S19256C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev)();
extern void ABISELECT(_ZThn75600_N9S19256C12D0Ev,_ZThn37800_N9S19256C12D0Ev)() __attribute__((weak));
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev)();
extern void ABISELECT(_ZThn94560_N9S19256C12D1Ev,_ZThn47280_N9S19256C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev)();
extern void ABISELECT(_ZThn94560_N9S19256C12D0Ev,_ZThn47280_N9S19256C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19256C12[] = {
  ABISELECT(75600,37800),
  ABISELECT(93488,46744),
  ABISELECT(94560,47280),
  ABISELECT(94384,47192),
  ABISELECT(94752,47376),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19256C122v5Ev,
  ABISELECT(86944,43464),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  ABISELECT(-75600,-37800),
  0,
  0,
  ABISELECT(17888,8944),
  ABISELECT(-75600,-37800),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev),
  0,
  0,
  0,
  ABISELECT(-93488,-46744),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  0,
  0,
  ABISELECT(-94384,-47192),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(-94560,-47280),
  ABISELECT(-176,-88),
  ABISELECT(-94560,-47280),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-94752,-47376),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
};
extern VTBL_ENTRY _ZTV9S19256C12[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C6D1Ev();
extern void _ZN8S19256C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C6__9S19256C12[] = {
  ABISELECT(93488,46744),
  ABISELECT(94560,47280),
  ABISELECT(94384,47192),
  ABISELECT(94752,47376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C78S19256C6__9S19256C12[] = {
  ABISELECT(93488,46744),
  ABISELECT(94560,47280),
  ABISELECT(94384,47192),
  ABISELECT(94752,47376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C78S19256C6__9S19256C12[] = {
  ABISELECT(-368,-184),
  ABISELECT(-94752,-47376),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C78S19256C6__9S19256C12[] = {
  0,
  0,
  ABISELECT(-94384,-47192),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZThn94560_N8S19256C7D1Ev,_ZThn47280_N8S19256C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
extern void ABISELECT(_ZThn94560_N8S19256C7D0Ev,_ZThn47280_N8S19256C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C78S19256C6__9S19256C12[] = {
  ABISELECT(-94560,-47280),
  ABISELECT(-176,-88),
  ABISELECT(-94560,-47280),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C78S19256C6__9S19256C12[] = {
  0,
  0,
  0,
  ABISELECT(-93488,-46744),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C6__A1__9S19256C12[] = {
  ABISELECT(86944,43464),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C88S19256C6__A1__9S19256C12[] = {
  0,
  0,
  ABISELECT(-86944,-43464),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C6__9S19256C12[] = {
  0,
  0,
  ABISELECT(-94384,-47192),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev)();
extern void ABISELECT(_ZThn94560_N8S19256C6D1Ev,_ZThn47280_N8S19256C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev)();
extern void ABISELECT(_ZThn94560_N8S19256C6D0Ev,_ZThn47280_N8S19256C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C6__9S19256C12[] = {
  ABISELECT(-94560,-47280),
  ABISELECT(-176,-88),
  ABISELECT(-94560,-47280),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C6__9S19256C12[] = {
  ABISELECT(-368,-184),
  ABISELECT(-94752,-47376),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C6__9S19256C12[] = {
  0,
  0,
  0,
  ABISELECT(-93488,-46744),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__A__8S19256C6__9S19256C12[] = {
  ABISELECT(86944,43464),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C13D1Ev();
extern void _ZN9S19256C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C13__9S19256C12[] = {
  ABISELECT(17888,8944),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__9S19256C13__9S19256C12[] = {
  0,
  0,
  0,
  ABISELECT(-17888,-8944),
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C4__9S19256C12[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C4__9S19256C12[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C12[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__9S19256C12[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTT_ENTRY vtt_S19256C12[] = {
  {&(_ZTV9S19256C12[7]),  7,53},
  {&(_tg__ZTV8S19256C6__9S19256C12[6]),  6,10},
  {&(_tg__ZTV8S19256C78S19256C6__9S19256C12[6]),  6,10},
  {&(_tg__ZTV8S19256C8__8S19256C78S19256C6__9S19256C12[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C78S19256C6__9S19256C12[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C78S19256C6__9S19256C12[4]),  4,6},
  {&(_tg__ZTV8S19256C2__8S19256C78S19256C6__9S19256C12[5]),  5,8},
  {&(_tg__ZTV8S19256C88S19256C6__A1__9S19256C12[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C88S19256C6__A1__9S19256C12[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C6__9S19256C12[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C6__9S19256C12[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C6__9S19256C12[3]),  3,3},
  {&(_tg__ZTV8S19256C2__8S19256C6__9S19256C12[5]),  5,8},
  {&(_tg__ZTV8S19256C8__A__8S19256C6__9S19256C12[3]),  3,3},
  {&(_ZTV9S19256C12[26]),  26,53},
  {&(_ZTV9S19256C12[35]),  35,53},
  {&(_ZTV9S19256C12[42]),  42,53},
  {&(_ZTV9S19256C12[48]),  48,53},
  {&(_ZTV9S19256C12[53]),  53,53},
  {&(_ZTV9S19256C12[15]),  15,53},
  {&(_tg__ZTV9S19256C13__9S19256C12[3]),  3,7},
  {&(_tg__ZTV8S19256C2__9S19256C13__9S19256C12[5]),  5,8},
  {&(_tg__ZTV8S19256C4__9S19256C12[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C4__9S19256C12[4]),  4,6},
  {&(_tg__ZTV8S19256C8__9S19256C12[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__9S19256C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19256C12[];
extern  VTBL_ENTRY _ZTV9S19256C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C12[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N8S19256C6D0Ev,_ZThn47280_N8S19256C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N8S19256C6D1Ev,_ZThn47280_N8S19256C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N8S19256C7D0Ev,_ZThn47280_N8S19256C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N8S19256C7D1Ev,_ZThn47280_N8S19256C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N9S19256C12D0Ev,_ZThn47280_N9S19256C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94560_N9S19256C12D1Ev,_ZThn47280_N9S19256C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S19256C12D0Ev,_ZThn37800_N9S19256C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S19256C12D1Ev,_ZThn37800_N9S19256C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19256C12 = {  "S19256C12", // class name
  bases_S19256C12, 13,
  &(vtc_S19256C12[0]), // expected_vtbl_contents
  &(vtt_S19256C12[0]), // expected_vtt_contents
  ABISELECT(94784,47388), // object size
  NSPAIRA(_ZTI9S19256C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19256C12),53, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19256C12),26, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19256C5  : virtual S19256C3 , S19256C6 , S19256C9 , virtual S19256C12 {
  void *s19256c5f0[2];
  short s19256c5f1;
  void *s19256c5f2[4];
  short s19256c5f3[2];
  ~S19256C5(); // tgen
  S19256C5(); // tgen
};
//SIG(-1 S19256C5) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC3{ VBC2 VBC4{ VBC2 vd Fp FC2} BC5{ VBC6{ VBC2 Fp Fs} VBC4 BC2 VBC7{ BC2 v3 FC2 FC4 FC2} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} BC8{ BC4 BC9{ VBC10{ m Fp} BC7 BC2 BC6 v4 Fs FC7 Fp[2] FL FC5[5] Fi} vd FC10[9] Fi Fl FD} VBC11{ VBC12{ BC2 VBC7 vd FC6 Fi Fp FC5 Fi FC5} BC3 vd v5 Fp Fs FC12 FC3[5] Fi} Fp[2] Fs Fp[4] Fs[2]}


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

static void Test_S19256C5()
{
  extern Class_Descriptor cd_S19256C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9329,18663)];
    init_test(&cd_S19256C5, buf);
    S19256C5 *dp, &lv = *(dp=new (buf) S19256C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(149248,74648), "sizeof(S19256C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C5)");
    /*is_ambiguous_... S19256C5::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C6*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C4 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C4*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C6*), ABISELECT(54448,27256), "S19256C5");
    check_base_class_offset(lv, (S19256C3*)(S19256C4*)(S19256C9*), ABISELECT(54448,27256), "S19256C5");
    check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C10*)(S19256C9*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C6::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C6*)(S19256C12*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C6*)(S19256C12*), ABISELECT(54448,27256), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C4*)(S19256C6*), ABISELECT(54624,27344), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C4*)(S19256C7*)(S19256C6*), ABISELECT(54624,27344), "S19256C5");
    check_base_class_offset(lv, (S19256C4*)(S19256C6*)(S19256C12*), ABISELECT(54624,27344), "S19256C5");
    check_base_class_offset(lv, (S19256C4*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(54624,27344), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C7*)(S19256C6*), ABISELECT(54816,27440), "S19256C5");
    check_base_class_offset(lv, (S19256C8*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(54816,27440), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C7*)(S19256C6*), 0, "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(54848,27452), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C7*)(S19256C6*), ABISELECT(54848,27452), "S19256C5");
    check_base_class_offset(lv, (S19256C2*)(S19256C13*), ABISELECT(54848,27452), "S19256C5");
    check_base_class_offset(lv, (S19256C2*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(54848,27452), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C7*)(S19256C6*), 0, "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C6*), ABISELECT(7440,3728), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C6*), ABISELECT(7472,3740), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C6*), ABISELECT(7472,3740), "S19256C5");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C6*), 0, "S19256C5");
    check_base_class_offset(lv, (S19256C4*)(S19256C9*), ABISELECT(8384,4196), "S19256C5");
    check_base_class_offset(lv, (S4224C43_nt*)(S19256C10*)(S19256C9*), ABISELECT(55744,27900), "S19256C5");
    check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C10*)(S19256C9*), ABISELECT(8576,4292), "S19256C5");
    check_base_class_offset(lv, (S19256C2*)(S19256C10*)(S19256C9*), ABISELECT(8576,4292), "S19256C5");
    /*is_ambiguous_... S19256C10::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C10*)(S19256C9*), ABISELECT(9472,4740), "S19256C5");
    check_base_class_offset(lv, (S19256C8*)(S19256C10*)(S19256C9*), ABISELECT(9640,4828), "S19256C5");
    check_base_class_offset(lv, (S19256C10*)(S19256C9*), ABISELECT(8576,4292), "S19256C5");
    check_base_class_offset(lv, (S19256C9*), ABISELECT(8384,4196), "S19256C5");
    /*is_ambiguous_... S19256C13::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C13*), ABISELECT(131360,65704), "S19256C5");
    check_base_class_offset(lv, (S19256C13*)(S19256C12*), ABISELECT(131360,65704), "S19256C5");
    /*is_ambiguous_... S19256C7::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(55760,27904), "S19256C5");
    check_base_class_offset(lv, (S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(55760,27904), "S19256C5");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C6*)(S19256C12*), ABISELECT(63200,31632), "S19256C5");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C6*)(S19256C12*), ABISELECT(63232,31644), "S19256C5");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C6*)(S19256C12*), ABISELECT(63232,31644), "S19256C5");
    check_base_class_offset(lv, (S19256C6*)(S19256C12*), ABISELECT(55760,27904), "S19256C5");
    check_base_class_offset(lv, (S19256C12*), ABISELECT(55760,27904), "S19256C5");
    check_field_offset(lv, s19256c5f0, ABISELECT(54384,27224), "S19256C5.s19256c5f0");
    check_field_offset(lv, s19256c5f1, ABISELECT(54400,27232), "S19256C5.s19256c5f1");
    check_field_offset(lv, s19256c5f2, ABISELECT(54408,27236), "S19256C5.s19256c5f2");
    check_field_offset(lv, s19256c5f3, ABISELECT(54440,27252), "S19256C5.s19256c5f3");
    test_class_info(&lv, &cd_S19256C5);
    dp->~S19256C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C5(Test_S19256C5, "S19256C5", ABISELECT(149248,74648));

#else // __cplusplus

extern void _ZN8S19256C5C1Ev();
extern void _ZN8S19256C5D1Ev();
Name_Map name_map_S19256C5[] = {
  NSPAIR(_ZN8S19256C5C1Ev),
  NSPAIR(_ZN8S19256C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C7;
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C6;
extern VTBL_ENTRY _ZTI8S19256C6[];
extern  VTBL_ENTRY _ZTV8S19256C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C6[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C10;
extern VTBL_ENTRY _ZTI9S19256C10[];
extern  VTBL_ENTRY _ZTV9S19256C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C10[];
extern Class_Descriptor cd_S19256C9;
extern VTBL_ENTRY _ZTI8S19256C9[];
extern  VTBL_ENTRY _ZTV8S19256C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C9[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C13;
extern VTBL_ENTRY _ZTI9S19256C13[];
extern  VTBL_ENTRY _ZTV9S19256C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C13[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C7;
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C6;
extern VTBL_ENTRY _ZTI8S19256C6[];
extern  VTBL_ENTRY _ZTV8S19256C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C6[];
extern Class_Descriptor cd_S19256C12;
extern VTBL_ENTRY _ZTI9S19256C12[];
extern  VTBL_ENTRY _ZTV9S19256C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C12[];
static Base_Class bases_S19256C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(54448,27256), //bcp->offset
    42, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C4,    ABISELECT(54624,27344), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19256C8,    ABISELECT(54816,27440), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(54848,27452), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19256C2,    ABISELECT(54848,27452), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19256C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(7440,3728), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(7472,3740), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19256C6,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19256C4,    ABISELECT(8384,4196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(55744,27900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19256C3,    ABISELECT(8576,4292), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(8576,4292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(9472,4740), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(9640,4828), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19256C10,    ABISELECT(8576,4292), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19256C9,    ABISELECT(8384,4196), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19256C3,    ABISELECT(131360,65704), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19256C13,    ABISELECT(131360,65704), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19256C3,    ABISELECT(55760,27904), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S19256C7,    ABISELECT(55760,27904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(63200,31632), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(63232,31644), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(63232,31644), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19256C6,    ABISELECT(55760,27904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19256C12,    ABISELECT(55760,27904), //bcp->offset
    65, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C5[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C5D1Ev();
extern void _ZN8S19256C5D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void ABISELECT(_ZThn8384_N8S19256C5D1Ev,_ZThn4196_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn8384_N8S19256C5D0Ev,_ZThn4196_N8S19256C5D0Ev)();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19256C5D1Ev,_ZTv0_n16_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn54624_N8S19256C5D1Ev,_ZThn27344_N8S19256C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C5D0Ev,_ZTv0_n16_N8S19256C5D0Ev)();
extern void ABISELECT(_ZThn54624_N8S19256C5D0Ev,_ZThn27344_N8S19256C5D0Ev)() __attribute__((weak));
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S19256C5D1Ev,_ZTv0_n40_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn55760_N8S19256C5D1Ev,_ZThn27904_N8S19256C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19256C5D0Ev,_ZTv0_n40_N8S19256C5D0Ev)();
extern void ABISELECT(_ZThn55760_N8S19256C5D0Ev,_ZThn27904_N8S19256C5D0Ev)() __attribute__((weak));
extern void _ZN9S19256C122v5Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19256C5D1Ev,_ZTv0_n24_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn131360_N8S19256C5D1Ev,_ZThn65704_N8S19256C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19256C5D0Ev,_ZTv0_n24_N8S19256C5D0Ev)();
extern void ABISELECT(_ZThn131360_N8S19256C5D0Ev,_ZThn65704_N8S19256C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19256C5[] = {
  ABISELECT(131360,65704),
  ABISELECT(55760,27904),
  ABISELECT(55744,27900),
  ABISELECT(54848,27452),
  ABISELECT(54624,27344),
  ABISELECT(54448,27256),
  ABISELECT(54816,27440),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C5D0Ev,
  ABISELECT(47008,23528),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  ABISELECT(47360,23704),
  ABISELECT(46064,23060),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N8S19256C5D1Ev,_ZThn4196_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N8S19256C5D0Ev,_ZThn4196_N8S19256C5D0Ev),
  ABISELECT(45872,22964),
  ABISELECT(47168,23608),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
  ABISELECT(-9472,-4740),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(44808,22428),
  ABISELECT(-9640,-4828),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  0,
  0,
  ABISELECT(-54448,-27256),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(-54624,-27344),
  ABISELECT(-176,-88),
  ABISELECT(-54624,-27344),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C5D1Ev,_ZTv0_n16_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C5D0Ev,_ZTv0_n16_N8S19256C5D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-54816,-27440),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  0,
  0,
  0,
  ABISELECT(-54848,-27452),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  0,
  ABISELECT(7472,3740),
  ABISELECT(-55760,-27904),
  0,
  0,
  ABISELECT(75600,37800),
  ABISELECT(-912,-452),
  ABISELECT(-1136,-560),
  ABISELECT(-1312,-648),
  ABISELECT(-944,-464),
  ABISELECT(-55760,-27904),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19256C5D1Ev,_ZTv0_n40_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19256C5D0Ev,_ZTv0_n40_N8S19256C5D0Ev),
  (VTBL_ENTRY)&_ZN9S19256C122v5Ev,
  ABISELECT(-8752,-4376),
  ABISELECT(-63200,-31632),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  ABISELECT(-63232,-31644),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  ABISELECT(-131360,-65704),
  0,
  0,
  ABISELECT(-76512,-38252),
  ABISELECT(-131360,-65704),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19256C5D1Ev,_ZTv0_n24_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19256C5D0Ev,_ZTv0_n24_N8S19256C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19256C5[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C6D1Ev();
extern void _ZN8S19256C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C6__8S19256C5[] = {
  ABISELECT(54848,27452),
  ABISELECT(54624,27344),
  ABISELECT(54448,27256),
  ABISELECT(54816,27440),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C78S19256C6__8S19256C5[] = {
  ABISELECT(54848,27452),
  ABISELECT(54624,27344),
  ABISELECT(54448,27256),
  ABISELECT(54816,27440),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C78S19256C6__8S19256C5[] = {
  ABISELECT(-368,-184),
  ABISELECT(-54816,-27440),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C78S19256C6__8S19256C5[] = {
  0,
  0,
  ABISELECT(-54448,-27256),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZThn54624_N8S19256C7D1Ev,_ZThn27344_N8S19256C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
extern void ABISELECT(_ZThn54624_N8S19256C7D0Ev,_ZThn27344_N8S19256C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C78S19256C6__8S19256C5[] = {
  ABISELECT(-54624,-27344),
  ABISELECT(-176,-88),
  ABISELECT(-54624,-27344),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C78S19256C6__8S19256C5[] = {
  0,
  0,
  0,
  ABISELECT(-54848,-27452),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C6__A1__8S19256C5[] = {
  ABISELECT(47008,23528),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C88S19256C6__A1__8S19256C5[] = {
  0,
  0,
  ABISELECT(-47008,-23528),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C6__8S19256C5[] = {
  0,
  0,
  ABISELECT(-54448,-27256),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev)();
extern void ABISELECT(_ZThn54624_N8S19256C6D1Ev,_ZThn27344_N8S19256C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev)();
extern void ABISELECT(_ZThn54624_N8S19256C6D0Ev,_ZThn27344_N8S19256C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C6__8S19256C5[] = {
  ABISELECT(-54624,-27344),
  ABISELECT(-176,-88),
  ABISELECT(-54624,-27344),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C6__8S19256C5[] = {
  ABISELECT(-368,-184),
  ABISELECT(-54816,-27440),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C6__8S19256C5[] = {
  0,
  0,
  0,
  ABISELECT(-54848,-27452),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__A__8S19256C6__8S19256C5[] = {
  ABISELECT(47008,23528),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C9D1Ev();
extern void _ZN8S19256C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C9__8S19256C5[] = {
  ABISELECT(47360,23704),
  ABISELECT(46064,23060),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C9D0Ev,
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C48S19256C9__A1__8S19256C5[] = {
  ABISELECT(46064,23060),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C48S19256C9__A1__8S19256C5[] = {
  0,
  0,
  ABISELECT(-46064,-23060),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C108S19256C9__8S19256C5[] = {
  ABISELECT(45872,22964),
  ABISELECT(47168,23608),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C89S19256C108S19256C9__A2__8S19256C5[] = {
  ABISELECT(44808,22428),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C89S19256C108S19256C9__A2__8S19256C5[] = {
  0,
  0,
  ABISELECT(-44808,-22428),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C108S19256C9__8S19256C5[] = {
  ABISELECT(44808,22428),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__A2__9S19256C108S19256C9__8S19256C5[] = {
  0,
  0,
  ABISELECT(-45872,-22964),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C9__8S19256C5[] = {
  0,
  0,
  ABISELECT(-46064,-23060),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C10__8S19256C9__8S19256C5[] = {
  ABISELECT(45872,22964),
  ABISELECT(47168,23608),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C89S19256C10__8S19256C9__8S19256C5[] = {
  ABISELECT(44808,22428),
  ABISELECT(-1256,-632),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C4__8S19256C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C5[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__8S19256C5[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C12D1Ev();
extern void _ZN9S19256C12D0Ev();
extern void _ZN9S19256C122v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C12__8S19256C5[] = {
  ABISELECT(75600,37800),
  ABISELECT(-912,-452),
  ABISELECT(-1136,-560),
  ABISELECT(-1312,-648),
  ABISELECT(-944,-464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19256C122v5Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C6D1Ev();
extern void _ZN8S19256C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(-912,-452),
  ABISELECT(-1136,-560),
  ABISELECT(-1312,-648),
  ABISELECT(-944,-464),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C78S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(-912,-452),
  ABISELECT(-1136,-560),
  ABISELECT(-1312,-648),
  ABISELECT(-944,-464),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C78S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(-368,-184),
  ABISELECT(944,464),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C78S19256C69S19256C12__A1__8S19256C5[] = {
  0,
  0,
  ABISELECT(1312,648),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C78S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(1136,560),
  ABISELECT(-176,-88),
  ABISELECT(1136,560),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C78S19256C69S19256C12__A1__8S19256C5[] = {
  0,
  0,
  0,
  ABISELECT(912,452),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C69S19256C12__A3__8S19256C5[] = {
  ABISELECT(-8752,-4376),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C88S19256C69S19256C12__A3__8S19256C5[] = {
  0,
  0,
  ABISELECT(8752,4376),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C69S19256C12__A1__8S19256C5[] = {
  0,
  0,
  ABISELECT(1312,648),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(1136,560),
  ABISELECT(-176,-88),
  ABISELECT(1136,560),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(-368,-184),
  ABISELECT(944,464),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C69S19256C12__A1__8S19256C5[] = {
  0,
  0,
  0,
  ABISELECT(912,452),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__A__8S19256C69S19256C12__A1__8S19256C5[] = {
  ABISELECT(-8752,-4376),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev)();
extern void ABISELECT(_ZThn75600_N9S19256C12D1Ev,_ZThn37800_N9S19256C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev)();
extern void ABISELECT(_ZThn75600_N9S19256C12D0Ev,_ZThn37800_N9S19256C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19256C13__9S19256C12__8S19256C5[] = {
  ABISELECT(-75600,-37800),
  0,
  0,
  ABISELECT(-76512,-38252),
  ABISELECT(-75600,-37800),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__9S19256C12__8S19256C5[] = {
  0,
  0,
  0,
  ABISELECT(912,452),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__A2__9S19256C12__8S19256C5[] = {
  0,
  0,
  ABISELECT(1312,648),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C4__9S19256C12__8S19256C5[] = {
  ABISELECT(1136,560),
  ABISELECT(-176,-88),
  ABISELECT(1136,560),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C12__8S19256C5[] = {
  ABISELECT(-368,-184),
  ABISELECT(944,464),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C6__A1__9S19256C12__8S19256C5[] = {
  ABISELECT(-8752,-4376),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C13D1Ev();
extern void _ZN9S19256C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C13__8S19256C5[] = {
  ABISELECT(-76512,-38252),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__9S19256C13__8S19256C5[] = {
  0,
  0,
  0,
  ABISELECT(76512,38252),
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTT_ENTRY vtt_S19256C5[] = {
  {&(_ZTV8S19256C5[9]),  9,100},
  {&(_tg__ZTV8S19256C6__8S19256C5[6]),  6,10},
  {&(_tg__ZTV8S19256C78S19256C6__8S19256C5[6]),  6,10},
  {&(_tg__ZTV8S19256C8__8S19256C78S19256C6__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C78S19256C6__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C78S19256C6__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C2__8S19256C78S19256C6__8S19256C5[5]),  5,8},
  {&(_tg__ZTV8S19256C88S19256C6__A1__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C88S19256C6__A1__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C6__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C6__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C6__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C2__8S19256C6__8S19256C5[5]),  5,8},
  {&(_tg__ZTV8S19256C8__A__8S19256C6__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C9__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C48S19256C9__A1__8S19256C5[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C48S19256C9__A1__8S19256C5[4]),  4,6},
  {&(_tg__ZTV9S19256C108S19256C9__8S19256C5[4]),  4,8},
  {&(_tg__ZTV8S19256C89S19256C108S19256C9__A2__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C89S19256C108S19256C9__A2__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C8__9S19256C108S19256C9__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__A2__9S19256C108S19256C9__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C9__8S19256C5[4]),  4,6},
  {&(_tg__ZTV9S19256C10__8S19256C9__8S19256C5[4]),  4,8},
  {&(_tg__ZTV8S19256C89S19256C10__8S19256C9__8S19256C5[3]),  3,3},
  {&(_ZTV8S19256C5[46]),  46,100},
  {&(_ZTV8S19256C5[52]),  52,100},
  {&(_ZTV8S19256C5[57]),  57,100},
  {&(_ZTV8S19256C5[62]),  62,100},
  {&(_ZTV8S19256C5[16]),  16,100},
  {&(_ZTV8S19256C5[25]),  25,100},
  {&(_ZTV8S19256C5[31]),  31,100},
  {&(_ZTV8S19256C5[42]),  42,100},
  {&(_ZTV8S19256C5[77]),  77,100},
  {&(_ZTV8S19256C5[96]),  96,100},
  {&(_ZTV8S19256C5[85]),  85,100},
  {&(_ZTV8S19256C5[87]),  87,100},
  {&(_tg__ZTV8S19256C4__8S19256C5[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C4__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__8S19256C5[4]),  4,6},
  {&(_tg__ZTV9S19256C12__8S19256C5[7]),  7,12},
  {&(_tg__ZTV8S19256C69S19256C12__A1__8S19256C5[6]),  6,10},
  {&(_tg__ZTV8S19256C78S19256C69S19256C12__A1__8S19256C5[6]),  6,10},
  {&(_tg__ZTV8S19256C8__8S19256C78S19256C69S19256C12__A1__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C78S19256C69S19256C12__A1__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C78S19256C69S19256C12__A1__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C2__8S19256C78S19256C69S19256C12__A1__8S19256C5[5]),  5,8},
  {&(_tg__ZTV8S19256C88S19256C69S19256C12__A3__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C88S19256C69S19256C12__A3__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C69S19256C12__A1__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C69S19256C12__A1__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C69S19256C12__A1__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C2__8S19256C69S19256C12__A1__8S19256C5[5]),  5,8},
  {&(_tg__ZTV8S19256C8__A__8S19256C69S19256C12__A1__8S19256C5[3]),  3,3},
  {&(_tg__ZTV9S19256C13__9S19256C12__8S19256C5[6]),  6,10},
  {&(_tg__ZTV8S19256C2__9S19256C12__8S19256C5[5]),  5,8},
  {&(_tg__ZTV8S19256C3__A2__9S19256C12__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C4__9S19256C12__8S19256C5[4]),  4,6},
  {&(_tg__ZTV8S19256C8__9S19256C12__8S19256C5[3]),  3,3},
  {&(_tg__ZTV8S19256C88S19256C6__A1__9S19256C12__8S19256C5[3]),  3,3},
  {&(_tg__ZTV9S19256C13__8S19256C5[3]),  3,7},
  {&(_tg__ZTV8S19256C2__9S19256C13__8S19256C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19256C5[];
extern  VTBL_ENTRY _ZTV8S19256C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C5[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S19256C12D0Ev,_ZThn37800_N9S19256C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S19256C12D1Ev,_ZThn37800_N9S19256C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54624_N8S19256C6D0Ev,_ZThn27344_N8S19256C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54624_N8S19256C6D1Ev,_ZThn27344_N8S19256C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54624_N8S19256C7D0Ev,_ZThn27344_N8S19256C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54624_N8S19256C7D1Ev,_ZThn27344_N8S19256C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19256C5D0Ev,_ZTv0_n24_N8S19256C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn131360_N8S19256C5D0Ev,_ZThn65704_N8S19256C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19256C5D1Ev,_ZTv0_n24_N8S19256C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn131360_N8S19256C5D1Ev,_ZThn65704_N8S19256C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19256C5D0Ev,_ZTv0_n40_N8S19256C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55760_N8S19256C5D0Ev,_ZThn27904_N8S19256C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19256C5D1Ev,_ZTv0_n40_N8S19256C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn55760_N8S19256C5D1Ev,_ZThn27904_N8S19256C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C5D0Ev,_ZTv0_n16_N8S19256C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54624_N8S19256C5D0Ev,_ZThn27344_N8S19256C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C5D1Ev,_ZTv0_n16_N8S19256C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54624_N8S19256C5D1Ev,_ZThn27344_N8S19256C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19256C5 = {  "S19256C5", // class name
  bases_S19256C5, 28,
  &(vtc_S19256C5[0]), // expected_vtbl_contents
  &(vtt_S19256C5[0]), // expected_vtt_contents
  ABISELECT(149248,74648), // object size
  NSPAIRA(_ZTI8S19256C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19256C5),100, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C5),63, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19256C1  : virtual S19256C2 , S19256C5 {
  int s19256c1f0;
  ::S21127C8 s19256c1f1;
  int s19256c1f2;
  ::S19256C12 s19256c1f3;
  __tsi64 s19256c1f4;
  int s19256c1f5;
  virtual  ~S19256C1(); // _ZN8S19256C1D2Ev
  S19256C1(); // tgen
};
//SIG(1 S19256C1) C1{ VBC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} v3 FC3 FC4{ VBC3 vd Fp FC3} FC3} BC5{ VBC3 BC6{ VBC3 VBC4 BC7{ VBC8{ VBC3 Fp Fs} VBC4 BC3 VBC2 vd FC2 Fp Fl[8] FL[2] Fc FC2[7]} BC8 BC2 Fp Fc} BC9{ BC4 BC10{ VBC11{ m Fp} BC2 BC3 BC8 v4 Fs FC2 Fp[2] FL FC7[5] Fi} vd FC11[9] Fi Fl FD} VBC12{ VBC13{ BC3 VBC2 vd FC8 Fi Fp FC7 Fi FC7} BC6 vd v5 Fp Fs FC13 FC6[5] Fi} Fp[2] Fs Fp[4] Fs[2]} vd Fi FC14{ BC15{ BC16{ v7 v8 Fl[10] FD Fc[2] FD Fp FL Fc} BC17{ VBC16 Fp Fs} Fi} VBC11 VBC18{ BC16 v9 FC16 FC19{ VBC16 vd Fp FC16} FC16} vd v6 FC15 FD Fp[7]} Fi FC12 FL Fi}


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

static void Test_S19256C1()
{
  extern Class_Descriptor cd_S19256C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15361,30734)];
    init_test(&cd_S19256C1, buf);
    S19256C1 *dp, &lv = *(dp=new (buf) S19256C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(245760,122932), "sizeof(S19256C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19256C1)");
    /*is_ambiguous_... S19256C1::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*), ABISELECT(150976,75540), "S19256C1");
    /*is_ambiguous_... S19256C1::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C2*), ABISELECT(150976,75540), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C7*)(S19256C6*)(S19256C5*), ABISELECT(150976,75540), "S19256C1");
    check_base_class_offset(lv, (S19256C2*)(S19256C13*), ABISELECT(150976,75540), "S19256C1");
    check_base_class_offset(lv, (S19256C2*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(150976,75540), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C5*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C6*)(S19256C5*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C1::S19256C4 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C4*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C1::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C6*)(S19256C5*), ABISELECT(151872,75988), "S19256C1");
    check_base_class_offset(lv, (S19256C3*)(S19256C4*)(S19256C9*)(S19256C5*), ABISELECT(151872,75988), "S19256C1");
    check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C6::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C6*)(S19256C12*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C8*)(S19256C6*)(S19256C12*), ABISELECT(151872,75988), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C4*)(S19256C6*)(S19256C5*), ABISELECT(152048,76076), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C4*)(S19256C7*)(S19256C6*)(S19256C5*), ABISELECT(152048,76076), "S19256C1");
    check_base_class_offset(lv, (S19256C4*)(S19256C6*)(S19256C12*), ABISELECT(152048,76076), "S19256C1");
    check_base_class_offset(lv, (S19256C4*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(152048,76076), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C7*)(S19256C6*)(S19256C5*), ABISELECT(152240,76172), "S19256C1");
    check_base_class_offset(lv, (S19256C8*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(152240,76172), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C7*)(S19256C6*)(S19256C5*), 0, "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C7*)(S19256C6*)(S19256C5*), 0, "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C6*)(S19256C5*), ABISELECT(7440,3728), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C6*)(S19256C5*), ABISELECT(7472,3740), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C6*)(S19256C5*), ABISELECT(7472,3740), "S19256C1");
    /*is_ambiguous_... S19256C5::S19256C6 */ AMB_check_base_class_offset(lv, (S19256C6*)(S19256C5*), 0, "S19256C1");
    check_base_class_offset(lv, (S19256C4*)(S19256C9*)(S19256C5*), ABISELECT(8384,4196), "S19256C1");
    check_base_class_offset(lv, (S4224C43_nt*)(S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(152264,76184), "S19256C1");
    check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(8576,4292), "S19256C1");
    check_base_class_offset(lv, (S19256C2*)(S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(8576,4292), "S19256C1");
    /*is_ambiguous_... S19256C10::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(9472,4740), "S19256C1");
    check_base_class_offset(lv, (S19256C8*)(S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(9640,4828), "S19256C1");
    check_base_class_offset(lv, (S19256C10*)(S19256C9*)(S19256C5*), ABISELECT(8576,4292), "S19256C1");
    check_base_class_offset(lv, (S19256C9*)(S19256C5*), ABISELECT(8384,4196), "S19256C1");
    /*is_ambiguous_... S19256C13::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C13*), ABISELECT(227872,113988), "S19256C1");
    check_base_class_offset(lv, (S19256C13*)(S19256C12*), ABISELECT(227872,113988), "S19256C1");
    /*is_ambiguous_... S19256C7::S19256C3 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(152272,76188), "S19256C1");
    check_base_class_offset(lv, (S19256C7*)(S19256C6*)(S19256C12*), ABISELECT(152272,76188), "S19256C1");
    /*is_ambiguous_... S19256C6::S19256C8 */ AMB_check_base_class_offset(lv, (S19256C8*)(S19256C6*)(S19256C12*), ABISELECT(159712,79916), "S19256C1");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C3*)(S19256C2*)(S19256C6*)(S19256C12*), ABISELECT(159744,79928), "S19256C1");
    /*is_ambiguous_... S19256C6::S19256C2 */ AMB_check_base_class_offset(lv, (S19256C2*)(S19256C6*)(S19256C12*), ABISELECT(159744,79928), "S19256C1");
    check_base_class_offset(lv, (S19256C6*)(S19256C12*), ABISELECT(152272,76188), "S19256C1");
    check_base_class_offset(lv, (S19256C12*)(S19256C5*), ABISELECT(152272,76188), "S19256C1");
    check_base_class_offset(lv, (S19256C5*), 0, "S19256C1");
    check_field_offset(lv, s19256c1f0, ABISELECT(54444,27256), "S19256C1.s19256c1f0");
    check_field_offset(lv, s19256c1f1, ABISELECT(54448,27260), "S19256C1.s19256c1f1");
    check_field_offset(lv, s19256c1f2, ABISELECT(56160,28136), "S19256C1.s19256c1f2");
    check_field_offset(lv, s19256c1f3, ABISELECT(56176,28140), "S19256C1.s19256c1f3");
    check_field_offset(lv, s19256c1f4, ABISELECT(150960,75528), "S19256C1.s19256c1f4");
    check_field_offset(lv, s19256c1f5, ABISELECT(150968,75536), "S19256C1.s19256c1f5");
    test_class_info(&lv, &cd_S19256C1);
    dp->~S19256C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19256C1(Test_S19256C1, "S19256C1", ABISELECT(245760,122932));

#else // __cplusplus

extern void _ZN8S19256C1C1Ev();
extern void _ZN8S19256C1D2Ev();
Name_Map name_map_S19256C1[] = {
  NSPAIR(_ZN8S19256C1C1Ev),
  NSPAIR(_ZN8S19256C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C7;
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C6;
extern VTBL_ENTRY _ZTI8S19256C6[];
extern  VTBL_ENTRY _ZTV8S19256C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C6[];
extern Class_Descriptor cd_S19256C4;
extern VTBL_ENTRY _ZTI8S19256C4[];
extern  VTBL_ENTRY _ZTV8S19256C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C4[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C10;
extern VTBL_ENTRY _ZTI9S19256C10[];
extern  VTBL_ENTRY _ZTV9S19256C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C10[];
extern Class_Descriptor cd_S19256C9;
extern VTBL_ENTRY _ZTI8S19256C9[];
extern  VTBL_ENTRY _ZTV8S19256C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C9[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C13;
extern VTBL_ENTRY _ZTI9S19256C13[];
extern  VTBL_ENTRY _ZTV9S19256C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C13[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C7;
extern VTBL_ENTRY _ZTI8S19256C7[];
extern  VTBL_ENTRY _ZTV8S19256C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C7[];
extern Class_Descriptor cd_S19256C8;
extern VTBL_ENTRY _ZTI8S19256C8[];
extern  VTBL_ENTRY _ZTV8S19256C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C8[];
extern Class_Descriptor cd_S19256C3;
extern VTBL_ENTRY _ZTI8S19256C3[];
extern  VTBL_ENTRY _ZTV8S19256C3[];
extern Class_Descriptor cd_S19256C2;
extern VTBL_ENTRY _ZTI8S19256C2[];
extern  VTBL_ENTRY _ZTV8S19256C2[];
extern Class_Descriptor cd_S19256C6;
extern VTBL_ENTRY _ZTI8S19256C6[];
extern  VTBL_ENTRY _ZTV8S19256C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C6[];
extern Class_Descriptor cd_S19256C12;
extern VTBL_ENTRY _ZTI9S19256C12[];
extern  VTBL_ENTRY _ZTV9S19256C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19256C12[];
extern Class_Descriptor cd_S19256C5;
extern VTBL_ENTRY _ZTI8S19256C5[];
extern  VTBL_ENTRY _ZTV8S19256C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C5[];
static Base_Class bases_S19256C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19256C3,    ABISELECT(150976,75540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(150976,75540), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19256C3,    ABISELECT(151872,75988), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19256C4,    ABISELECT(152048,76076), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19256C8,    ABISELECT(152240,76172), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19256C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19256C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(7440,3728), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(7472,3740), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19256C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19256C4,    ABISELECT(8384,4196), //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
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(152264,76184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19256C3,    ABISELECT(8576,4292), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(8576,4292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(9472,4740), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(9640,4828), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19256C10,    ABISELECT(8576,4292), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19256C9,    ABISELECT(8384,4196), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(227872,113988), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19256C13,    ABISELECT(227872,113988), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19256C3,    ABISELECT(152272,76188), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S19256C7,    ABISELECT(152272,76188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19256C8,    ABISELECT(159712,79916), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19256C3,    ABISELECT(159744,79928), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19256C2,    ABISELECT(159744,79928), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19256C6,    ABISELECT(152272,76188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19256C12,    ABISELECT(152272,76188), //bcp->offset
    65, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19256C5,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19256C1[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C1D1Ev();
extern void _ZN8S19256C1D0Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void ABISELECT(_ZThn8384_N8S19256C1D1Ev,_ZThn4196_N8S19256C1D1Ev)();
extern void ABISELECT(_ZThn8384_N8S19256C1D0Ev,_ZThn4196_N8S19256C1D0Ev)();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19256C1D1Ev,_ZTv0_n16_N8S19256C1D1Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C1D1Ev,_ZThn76076_N8S19256C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C1D0Ev,_ZTv0_n16_N8S19256C1D0Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C1D0Ev,_ZThn76076_N8S19256C1D0Ev)() __attribute__((weak));
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S19256C1D1Ev,_ZTv0_n40_N8S19256C1D1Ev)();
extern void ABISELECT(_ZThn152272_N8S19256C1D1Ev,_ZThn76188_N8S19256C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19256C1D0Ev,_ZTv0_n40_N8S19256C1D0Ev)();
extern void ABISELECT(_ZThn152272_N8S19256C1D0Ev,_ZThn76188_N8S19256C1D0Ev)() __attribute__((weak));
extern void _ZN9S19256C122v5Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19256C1D1Ev,_ZTv0_n24_N8S19256C1D1Ev)();
extern void ABISELECT(_ZThn227872_N8S19256C1D1Ev,_ZThn113988_N8S19256C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19256C1D0Ev,_ZTv0_n24_N8S19256C1D0Ev)();
extern void ABISELECT(_ZThn227872_N8S19256C1D0Ev,_ZThn113988_N8S19256C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19256C1[] = {
  ABISELECT(227872,113988),
  ABISELECT(152272,76188),
  ABISELECT(152264,76184),
  ABISELECT(150976,75540),
  ABISELECT(152048,76076),
  ABISELECT(151872,75988),
  ABISELECT(152240,76172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C1D0Ev,
  ABISELECT(144432,72260),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  ABISELECT(143880,71988),
  ABISELECT(143488,71792),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N8S19256C1D1Ev,_ZThn4196_N8S19256C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N8S19256C1D0Ev,_ZThn4196_N8S19256C1D0Ev),
  ABISELECT(143296,71696),
  ABISELECT(143688,71892),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
  ABISELECT(-9472,-4740),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(142232,71160),
  ABISELECT(-9640,-4828),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  0,
  0,
  0,
  ABISELECT(-150976,-75540),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  0,
  0,
  ABISELECT(-151872,-75988),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  ABISELECT(-152048,-76076),
  ABISELECT(-176,-88),
  ABISELECT(-152048,-76076),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C1D1Ev,_ZTv0_n16_N8S19256C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C1D0Ev,_ZTv0_n16_N8S19256C1D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-152240,-76172),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  0,
  ABISELECT(7472,3740),
  ABISELECT(-152272,-76188),
  0,
  0,
  ABISELECT(75600,37800),
  ABISELECT(-1296,-648),
  ABISELECT(-224,-112),
  ABISELECT(-400,-200),
  ABISELECT(-32,-16),
  ABISELECT(-152272,-76188),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19256C1D1Ev,_ZTv0_n40_N8S19256C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19256C1D0Ev,_ZTv0_n40_N8S19256C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19256C122v5Ev,
  ABISELECT(-7840,-3928),
  ABISELECT(-159712,-79916),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  ABISELECT(-159744,-79928),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  ABISELECT(-227872,-113988),
  0,
  0,
  ABISELECT(-76896,-38448),
  ABISELECT(-227872,-113988),
  (VTBL_ENTRY)&(_ZTI8S19256C1[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19256C1D1Ev,_ZTv0_n24_N8S19256C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19256C1D0Ev,_ZTv0_n24_N8S19256C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19256C1[];
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C5D1Ev();
extern void _ZN8S19256C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C5__8S19256C1[] = {
  ABISELECT(227872,113988),
  ABISELECT(152272,76188),
  ABISELECT(152264,76184),
  ABISELECT(150976,75540),
  ABISELECT(152048,76076),
  ABISELECT(151872,75988),
  ABISELECT(152240,76172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C5D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C6D1Ev();
extern void _ZN8S19256C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(150976,75540),
  ABISELECT(152048,76076),
  ABISELECT(151872,75988),
  ABISELECT(152240,76172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C78S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(150976,75540),
  ABISELECT(152048,76076),
  ABISELECT(151872,75988),
  ABISELECT(152240,76172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C78S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-152240,-76172),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C78S19256C68S19256C5__8S19256C1[] = {
  0,
  0,
  ABISELECT(-151872,-75988),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C7D1Ev,_ZThn76076_N8S19256C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C7D0Ev,_ZThn76076_N8S19256C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C78S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(-152048,-76076),
  ABISELECT(-176,-88),
  ABISELECT(-152048,-76076),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C78S19256C68S19256C5__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(-150976,-75540),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C68S19256C5__A1__8S19256C1[] = {
  ABISELECT(144432,72260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C88S19256C68S19256C5__A1__8S19256C1[] = {
  0,
  0,
  ABISELECT(-144432,-72260),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C68S19256C5__8S19256C1[] = {
  0,
  0,
  ABISELECT(-151872,-75988),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C6D1Ev,_ZThn76076_N8S19256C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C6D0Ev,_ZThn76076_N8S19256C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(-152048,-76076),
  ABISELECT(-176,-88),
  ABISELECT(-152048,-76076),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-152240,-76172),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C68S19256C5__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(-150976,-75540),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__A__8S19256C68S19256C5__8S19256C1[] = {
  ABISELECT(144432,72260),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C9D1Ev();
extern void _ZN8S19256C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C98S19256C5__8S19256C1[] = {
  ABISELECT(143880,71988),
  ABISELECT(143488,71792),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C9D0Ev,
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C48S19256C98S19256C5__A1__8S19256C1[] = {
  ABISELECT(143488,71792),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C48S19256C98S19256C5__A1__8S19256C1[] = {
  0,
  0,
  ABISELECT(-143488,-71792),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C108S19256C98S19256C5__8S19256C1[] = {
  ABISELECT(143296,71696),
  ABISELECT(143688,71892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C89S19256C108S19256C98S19256C5__A2__8S19256C1[] = {
  ABISELECT(142232,71160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C89S19256C108S19256C98S19256C5__A2__8S19256C1[] = {
  0,
  0,
  ABISELECT(-142232,-71160),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C108S19256C98S19256C5__8S19256C1[] = {
  ABISELECT(142232,71160),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__A2__9S19256C108S19256C98S19256C5__8S19256C1[] = {
  0,
  0,
  ABISELECT(-143296,-71696),
  (VTBL_ENTRY)&(_ZTI9S19256C10[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C98S19256C5__8S19256C1[] = {
  0,
  0,
  ABISELECT(-143488,-71792),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C10__8S19256C98S19256C5__8S19256C1[] = {
  ABISELECT(143296,71696),
  ABISELECT(143688,71892),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C89S19256C10__8S19256C98S19256C5__8S19256C1[] = {
  ABISELECT(142232,71160),
  ABISELECT(-1256,-632),
  (VTBL_ENTRY)&(_ZTI8S19256C9[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C5__8S19256C1[] = {
  0,
  0,
  ABISELECT(-151872,-75988),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C5D1Ev,_ZTv0_n16_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C5D1Ev,_ZThn76076_N8S19256C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19256C5D0Ev,_ZTv0_n16_N8S19256C5D0Ev)();
extern void ABISELECT(_ZThn152048_N8S19256C5D0Ev,_ZThn76076_N8S19256C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C5__8S19256C1[] = {
  ABISELECT(-152048,-76076),
  ABISELECT(-176,-88),
  ABISELECT(-152048,-76076),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C5D1Ev,_ZTv0_n16_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C5D0Ev,_ZTv0_n16_N8S19256C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C5__8S19256C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-152240,-76172),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C5__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(-150976,-75540),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C6__A1__8S19256C5__8S19256C1[] = {
  ABISELECT(144432,72260),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
};
extern void ABISELECT(_ZThn8384_N8S19256C5D1Ev,_ZThn4196_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn8384_N8S19256C5D0Ev,_ZThn4196_N8S19256C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C9__8S19256C5__8S19256C1[] = {
  ABISELECT(143880,71988),
  ABISELECT(143488,71792),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N8S19256C5D1Ev,_ZThn4196_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N8S19256C5D0Ev,_ZThn4196_N8S19256C5D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
extern void _ZN9S19256C102v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C108S19256C9__8S19256C5__8S19256C1[] = {
  ABISELECT(143296,71696),
  ABISELECT(143688,71892),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
  (VTBL_ENTRY)&_ZN9S19256C102v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C89S19256C108S19256C9__A2__8S19256C5__8S19256C1[] = {
  ABISELECT(142232,71160),
  ABISELECT(-9640,-4828),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S19256C5D1Ev,_ZTv0_n40_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn152272_N8S19256C5D1Ev,_ZThn76188_N8S19256C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19256C5D0Ev,_ZTv0_n40_N8S19256C5D0Ev)();
extern void ABISELECT(_ZThn152272_N8S19256C5D0Ev,_ZThn76188_N8S19256C5D0Ev)() __attribute__((weak));
extern void _ZN9S19256C122v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C12__8S19256C5__8S19256C1[] = {
  0,
  ABISELECT(7472,3740),
  ABISELECT(-152272,-76188),
  0,
  0,
  ABISELECT(75600,37800),
  ABISELECT(-1296,-648),
  ABISELECT(-224,-112),
  ABISELECT(-400,-200),
  ABISELECT(-32,-16),
  ABISELECT(-152272,-76188),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19256C5D1Ev,_ZTv0_n40_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19256C5D0Ev,_ZTv0_n40_N8S19256C5D0Ev),
  (VTBL_ENTRY)&_ZN9S19256C122v5Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19256C5D1Ev,_ZTv0_n24_N8S19256C5D1Ev)();
extern void ABISELECT(_ZThn227872_N8S19256C5D1Ev,_ZThn113988_N8S19256C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19256C5D0Ev,_ZTv0_n24_N8S19256C5D0Ev)();
extern void ABISELECT(_ZThn227872_N8S19256C5D0Ev,_ZThn113988_N8S19256C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19256C13__8S19256C5__8S19256C1[] = {
  ABISELECT(-227872,-113988),
  0,
  0,
  ABISELECT(-76896,-38448),
  ABISELECT(-227872,-113988),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19256C5D1Ev,_ZTv0_n24_N8S19256C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19256C5D0Ev,_ZTv0_n24_N8S19256C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C69S19256C12__A3__8S19256C5__8S19256C1[] = {
  ABISELECT(-7840,-3928),
  ABISELECT(-159712,-79916),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C28S19256C69S19256C12__A3__8S19256C5__8S19256C1[] = {
  ABISELECT(-159744,-79928),
  (VTBL_ENTRY)&(_ZTI8S19256C5[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern void _ZN8S19256C4D1Ev();
extern void _ZN8S19256C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C4D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C4__8S19256C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19256C4[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C1[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C8__8S19256C1[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C12D1Ev();
extern void _ZN9S19256C12D0Ev();
extern void _ZN9S19256C122v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C12__8S19256C1[] = {
  ABISELECT(75600,37800),
  ABISELECT(-1296,-648),
  ABISELECT(-224,-112),
  ABISELECT(-400,-200),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19256C122v5Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C6D1Ev();
extern void _ZN8S19256C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(-1296,-648),
  ABISELECT(-224,-112),
  ABISELECT(-400,-200),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C6D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C7D1Ev();
extern void _ZN8S19256C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C78S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(-1296,-648),
  ABISELECT(-224,-112),
  ABISELECT(-400,-200),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19256C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C78S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C78S19256C69S19256C12__A1__8S19256C1[] = {
  0,
  0,
  ABISELECT(400,200),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C78S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(224,112),
  ABISELECT(-176,-88),
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C78S19256C69S19256C12__A1__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(1296,648),
  (VTBL_ENTRY)&(_ZTI8S19256C7[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C69S19256C12__A3__8S19256C1[] = {
  ABISELECT(-7840,-3928),
  0,
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C88S19256C69S19256C12__A3__8S19256C1[] = {
  0,
  0,
  ABISELECT(7840,3928),
  (VTBL_ENTRY)&(_ZTI8S19256C8[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__8S19256C69S19256C12__A1__8S19256C1[] = {
  0,
  0,
  ABISELECT(400,200),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C4__8S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(224,112),
  ABISELECT(-176,-88),
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__8S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__8S19256C69S19256C12__A1__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(1296,648),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__A__8S19256C69S19256C12__A1__8S19256C1[] = {
  ABISELECT(-7840,-3928),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19256C6[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev)();
extern void ABISELECT(_ZThn75600_N9S19256C12D1Ev,_ZThn37800_N9S19256C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev)();
extern void ABISELECT(_ZThn75600_N9S19256C12D0Ev,_ZThn37800_N9S19256C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19256C13__9S19256C12__8S19256C1[] = {
  ABISELECT(-75600,-37800),
  0,
  0,
  ABISELECT(-76896,-38448),
  ABISELECT(-75600,-37800),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__9S19256C12__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(1296,648),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C3__A2__9S19256C12__8S19256C1[] = {
  0,
  0,
  ABISELECT(400,200),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19256C4__9S19256C12__8S19256C1[] = {
  ABISELECT(224,112),
  ABISELECT(-176,-88),
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19256C12D1Ev,_ZTv0_n16_N9S19256C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19256C12D0Ev,_ZTv0_n16_N9S19256C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19256C8__9S19256C12__8S19256C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19256C88S19256C6__A1__9S19256C12__8S19256C1[] = {
  ABISELECT(-7840,-3928),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19256C12[0]),
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN9S19256C13D1Ev();
extern void _ZN9S19256C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19256C13__8S19256C1[] = {
  ABISELECT(-76896,-38448),
  0,
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19256C13D0Ev,
};
extern void _ZN8S19256C32v1Ev();
extern void _ZN8S19256C32v2Ev();
extern void _ZN8S19256C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19256C2__9S19256C13__8S19256C1[] = {
  0,
  0,
  0,
  ABISELECT(76896,38448),
  (VTBL_ENTRY)&(_ZTI9S19256C13[0]),
  (VTBL_ENTRY)&_ZN8S19256C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19256C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19256C22v3Ev,
};
static  VTT_ENTRY vtt_S19256C1[] = {
  {&(_ZTV8S19256C1[9]),  9,100},
  {&(_tg__ZTV8S19256C5__8S19256C1[9]),  9,13},
  {&(_tg__ZTV8S19256C68S19256C5__8S19256C1[6]),  6,10},
  {&(_tg__ZTV8S19256C78S19256C68S19256C5__8S19256C1[6]),  6,10},
  {&(_tg__ZTV8S19256C8__8S19256C78S19256C68S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C78S19256C68S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C78S19256C68S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C2__8S19256C78S19256C68S19256C5__8S19256C1[5]),  5,8},
  {&(_tg__ZTV8S19256C88S19256C68S19256C5__A1__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C88S19256C68S19256C5__A1__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C68S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C68S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C68S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C2__8S19256C68S19256C5__8S19256C1[5]),  5,8},
  {&(_tg__ZTV8S19256C8__A__8S19256C68S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C98S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C48S19256C98S19256C5__A1__8S19256C1[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C48S19256C98S19256C5__A1__8S19256C1[4]),  4,6},
  {&(_tg__ZTV9S19256C108S19256C98S19256C5__8S19256C1[4]),  4,8},
  {&(_tg__ZTV8S19256C89S19256C108S19256C98S19256C5__A2__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C89S19256C108S19256C98S19256C5__A2__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C8__9S19256C108S19256C98S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__A2__9S19256C108S19256C98S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C98S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV9S19256C10__8S19256C98S19256C5__8S19256C1[4]),  4,8},
  {&(_tg__ZTV8S19256C89S19256C10__8S19256C98S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C2__8S19256C5__8S19256C1[5]),  5,8},
  {&(_tg__ZTV8S19256C88S19256C6__A1__8S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C9__8S19256C5__8S19256C1[4]),  4,6},
  {&(_tg__ZTV9S19256C108S19256C9__8S19256C5__8S19256C1[4]),  4,8},
  {&(_tg__ZTV8S19256C89S19256C108S19256C9__A2__8S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV9S19256C12__8S19256C5__8S19256C1[12]),  12,17},
  {&(_tg__ZTV9S19256C13__8S19256C5__8S19256C1[6]),  6,10},
  {&(_tg__ZTV8S19256C88S19256C69S19256C12__A3__8S19256C5__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C28S19256C69S19256C12__A3__8S19256C5__8S19256C1[2]),  2,5},
  {&(_ZTV8S19256C1[47]),  47,100},
  {&(_ZTV8S19256C1[54]),  54,100},
  {&(_ZTV8S19256C1[60]),  60,100},
  {&(_ZTV8S19256C1[65]),  65,100},
  {&(_ZTV8S19256C1[16]),  16,100},
  {&(_ZTV8S19256C1[25]),  25,100},
  {&(_ZTV8S19256C1[31]),  31,100},
  {&(_ZTV8S19256C1[42]),  42,100},
  {&(_ZTV8S19256C1[77]),  77,100},
  {&(_ZTV8S19256C1[96]),  96,100},
  {&(_ZTV8S19256C1[85]),  85,100},
  {&(_ZTV8S19256C1[87]),  87,100},
  {&(_tg__ZTV8S19256C4__8S19256C1[3]),  3,5},
  {&(_tg__ZTV8S19256C3__8S19256C4__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C8__8S19256C1[4]),  4,6},
  {&(_tg__ZTV9S19256C12__8S19256C1[7]),  7,12},
  {&(_tg__ZTV8S19256C69S19256C12__A1__8S19256C1[6]),  6,10},
  {&(_tg__ZTV8S19256C78S19256C69S19256C12__A1__8S19256C1[6]),  6,10},
  {&(_tg__ZTV8S19256C8__8S19256C78S19256C69S19256C12__A1__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C78S19256C69S19256C12__A1__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C78S19256C69S19256C12__A1__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C2__8S19256C78S19256C69S19256C12__A1__8S19256C1[5]),  5,8},
  {&(_tg__ZTV8S19256C88S19256C69S19256C12__A3__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C3__8S19256C88S19256C69S19256C12__A3__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C3__8S19256C69S19256C12__A1__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C4__8S19256C69S19256C12__A1__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C8__8S19256C69S19256C12__A1__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C2__8S19256C69S19256C12__A1__8S19256C1[5]),  5,8},
  {&(_tg__ZTV8S19256C8__A__8S19256C69S19256C12__A1__8S19256C1[3]),  3,3},
  {&(_tg__ZTV9S19256C13__9S19256C12__8S19256C1[6]),  6,10},
  {&(_tg__ZTV8S19256C2__9S19256C12__8S19256C1[5]),  5,8},
  {&(_tg__ZTV8S19256C3__A2__9S19256C12__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C4__9S19256C12__8S19256C1[4]),  4,6},
  {&(_tg__ZTV8S19256C8__9S19256C12__8S19256C1[3]),  3,3},
  {&(_tg__ZTV8S19256C88S19256C6__A1__9S19256C12__8S19256C1[3]),  3,3},
  {&(_tg__ZTV9S19256C13__8S19256C1[3]),  3,7},
  {&(_tg__ZTV8S19256C2__9S19256C13__8S19256C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19256C1[];
extern  VTBL_ENTRY _ZTV8S19256C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19256C1[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19256C12D0Ev,_ZTv0_n24_N9S19256C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S19256C12D0Ev,_ZThn37800_N9S19256C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19256C12D1Ev,_ZTv0_n24_N9S19256C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75600_N9S19256C12D1Ev,_ZThn37800_N9S19256C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19256C5D0Ev,_ZTv0_n24_N8S19256C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn227872_N8S19256C5D0Ev,_ZThn113988_N8S19256C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19256C5D1Ev,_ZTv0_n24_N8S19256C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn227872_N8S19256C5D1Ev,_ZThn113988_N8S19256C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19256C5D0Ev,_ZTv0_n40_N8S19256C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152272_N8S19256C5D0Ev,_ZThn76188_N8S19256C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19256C5D1Ev,_ZTv0_n40_N8S19256C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152272_N8S19256C5D1Ev,_ZThn76188_N8S19256C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C5D0Ev,_ZTv0_n16_N8S19256C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C5D0Ev,_ZThn76076_N8S19256C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C5D1Ev,_ZTv0_n16_N8S19256C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C5D1Ev,_ZThn76076_N8S19256C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D0Ev,_ZTv0_n16_N8S19256C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C6D0Ev,_ZThn76076_N8S19256C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C6D1Ev,_ZTv0_n16_N8S19256C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C6D1Ev,_ZThn76076_N8S19256C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D0Ev,_ZTv0_n16_N8S19256C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C7D0Ev,_ZThn76076_N8S19256C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C7D1Ev,_ZTv0_n16_N8S19256C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C7D1Ev,_ZThn76076_N8S19256C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19256C1D0Ev,_ZTv0_n24_N8S19256C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn227872_N8S19256C1D0Ev,_ZThn113988_N8S19256C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19256C1D1Ev,_ZTv0_n24_N8S19256C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn227872_N8S19256C1D1Ev,_ZThn113988_N8S19256C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19256C1D0Ev,_ZTv0_n40_N8S19256C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152272_N8S19256C1D0Ev,_ZThn76188_N8S19256C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19256C1D1Ev,_ZTv0_n40_N8S19256C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152272_N8S19256C1D1Ev,_ZThn76188_N8S19256C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C1D0Ev,_ZTv0_n16_N8S19256C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C1D0Ev,_ZThn76076_N8S19256C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19256C1D1Ev,_ZTv0_n16_N8S19256C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152048_N8S19256C1D1Ev,_ZThn76076_N8S19256C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19256C1 = {  "S19256C1", // class name
  bases_S19256C1, 29,
  &(vtc_S19256C1[0]), // expected_vtbl_contents
  &(vtt_S19256C1[0]), // expected_vtt_contents
  ABISELECT(245760,122932), // object size
  NSPAIRA(_ZTI8S19256C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19256C1),100, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19256C1),76, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6728C2  {
  int s6728c2f0;
  __tsi64 s6728c2f1;
  void *s6728c2f2[4];
  int s6728c2f3[2];
  void *s6728c2f4;
  ::S3281C4_nt s6728c2f5;
  void *s6728c2f6[2];
  virtual  ~S6728C2(); // _ZN7S6728C2D1Ev
  virtual void  v3(); // _ZN7S6728C22v3Ev
  virtual void  v4(); // _ZN7S6728C22v4Ev
  virtual void  v5(); // _ZN7S6728C22v5Ev
  virtual void  v6(); // _ZN7S6728C22v6Ev
  virtual void  v7(); // _ZN7S6728C22v7Ev
  virtual void  v8(); // _ZN7S6728C22v8Ev
  virtual void  v9(); // _ZN7S6728C22v9Ev
  virtual void  v10(); // _ZN7S6728C23v10Ev
  virtual void  v11(); // _ZN7S6728C23v11Ev
  virtual void  v12(); // _ZN7S6728C23v12Ev
  virtual void  v13(); // _ZN7S6728C23v13Ev
  virtual void  v14(); // _ZN7S6728C23v14Ev
  virtual void  v15(); // _ZN7S6728C23v15Ev
  virtual void  v16(); // _ZN7S6728C23v16Ev
  virtual void  v17(); // _ZN7S6728C23v17Ev
  virtual void  v18(); // _ZN7S6728C23v18Ev
  virtual void  v19(); // _ZN7S6728C23v19Ev
  virtual void  v20(); // _ZN7S6728C23v20Ev
  virtual void  v21(); // _ZN7S6728C23v21Ev
  virtual void  v22(); // _ZN7S6728C23v22Ev
  virtual void  v23(); // _ZN7S6728C23v23Ev
  virtual void  v24(); // _ZN7S6728C23v24Ev
  virtual void  v25(); // _ZN7S6728C23v25Ev
  virtual void  v26(); // _ZN7S6728C23v26Ev
  virtual void  v27(); // _ZN7S6728C23v27Ev
  virtual void  v28(); // _ZN7S6728C23v28Ev
  virtual void  v29(); // _ZN7S6728C23v29Ev
  virtual void  v30(); // _ZN7S6728C23v30Ev
  virtual void  v31(); // _ZN7S6728C23v31Ev
  virtual void  v32(); // _ZN7S6728C23v32Ev
  virtual void  v33(); // _ZN7S6728C23v33Ev
  virtual void  v34(); // _ZN7S6728C23v34Ev
  virtual void  v35(); // _ZN7S6728C23v35Ev
  virtual void  v36(); // _ZN7S6728C23v36Ev
  virtual void  v37(); // _ZN7S6728C23v37Ev
  virtual void  v38(); // _ZN7S6728C23v38Ev
  virtual void  v39(); // _ZN7S6728C23v39Ev
  virtual void  v40(); // _ZN7S6728C23v40Ev
  virtual void  v41(); // _ZN7S6728C23v41Ev
  virtual void  v42(); // _ZN7S6728C23v42Ev
  virtual void  v43(); // _ZN7S6728C23v43Ev
  virtual void  v44(); // _ZN7S6728C23v44Ev
  virtual void  v45(); // _ZN7S6728C23v45Ev
  virtual void  v46(); // _ZN7S6728C23v46Ev
  virtual void  v47(); // _ZN7S6728C23v47Ev
  virtual void  v48(); // _ZN7S6728C23v48Ev
  virtual void  v49(); // _ZN7S6728C23v49Ev
  virtual void  v50(); // _ZN7S6728C23v50Ev
  virtual void  v51(); // _ZN7S6728C23v51Ev
  virtual void  v52(); // _ZN7S6728C23v52Ev
  virtual void  v53(); // _ZN7S6728C23v53Ev
  virtual void  v54(); // _ZN7S6728C23v54Ev
  virtual void  v55(); // _ZN7S6728C23v55Ev
  virtual void  v56(); // _ZN7S6728C23v56Ev
  virtual void  v57(); // _ZN7S6728C23v57Ev
  virtual void  v58(); // _ZN7S6728C23v58Ev
  virtual void  v59(); // _ZN7S6728C23v59Ev
  virtual void  v60(); // _ZN7S6728C23v60Ev
  virtual void  v61(); // _ZN7S6728C23v61Ev
  virtual void  v62(); // _ZN7S6728C23v62Ev
  virtual void  v63(); // _ZN7S6728C23v63Ev
  virtual void  v64(); // _ZN7S6728C23v64Ev
  virtual void  v65(); // _ZN7S6728C23v65Ev
  virtual void  v66(); // _ZN7S6728C23v66Ev
  S6728C2(); // tgen
};
//SIG(-1 S6728C2) 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]}


 S6728C2 ::~S6728C2(){ note_dtor("S6728C2", this);}
void  S6728C2 ::v3(){vfunc_called(this, "_ZN7S6728C22v3Ev");}
void  S6728C2 ::v4(){vfunc_called(this, "_ZN7S6728C22v4Ev");}
void  S6728C2 ::v5(){vfunc_called(this, "_ZN7S6728C22v5Ev");}
void  S6728C2 ::v6(){vfunc_called(this, "_ZN7S6728C22v6Ev");}
void  S6728C2 ::v7(){vfunc_called(this, "_ZN7S6728C22v7Ev");}
void  S6728C2 ::v8(){vfunc_called(this, "_ZN7S6728C22v8Ev");}
void  S6728C2 ::v9(){vfunc_called(this, "_ZN7S6728C22v9Ev");}
void  S6728C2 ::v10(){vfunc_called(this, "_ZN7S6728C23v10Ev");}
void  S6728C2 ::v11(){vfunc_called(this, "_ZN7S6728C23v11Ev");}
void  S6728C2 ::v12(){vfunc_called(this, "_ZN7S6728C23v12Ev");}
void  S6728C2 ::v13(){vfunc_called(this, "_ZN7S6728C23v13Ev");}
void  S6728C2 ::v14(){vfunc_called(this, "_ZN7S6728C23v14Ev");}
void  S6728C2 ::v15(){vfunc_called(this, "_ZN7S6728C23v15Ev");}
void  S6728C2 ::v16(){vfunc_called(this, "_ZN7S6728C23v16Ev");}
void  S6728C2 ::v17(){vfunc_called(this, "_ZN7S6728C23v17Ev");}
void  S6728C2 ::v18(){vfunc_called(this, "_ZN7S6728C23v18Ev");}
void  S6728C2 ::v19(){vfunc_called(this, "_ZN7S6728C23v19Ev");}
void  S6728C2 ::v20(){vfunc_called(this, "_ZN7S6728C23v20Ev");}
void  S6728C2 ::v21(){vfunc_called(this, "_ZN7S6728C23v21Ev");}
void  S6728C2 ::v22(){vfunc_called(this, "_ZN7S6728C23v22Ev");}
void  S6728C2 ::v23(){vfunc_called(this, "_ZN7S6728C23v23Ev");}
void  S6728C2 ::v24(){vfunc_called(this, "_ZN7S6728C23v24Ev");}
void  S6728C2 ::v25(){vfunc_called(this, "_ZN7S6728C23v25Ev");}
void  S6728C2 ::v26(){vfunc_called(this, "_ZN7S6728C23v26Ev");}
void  S6728C2 ::v27(){vfunc_called(this, "_ZN7S6728C23v27Ev");}
void  S6728C2 ::v28(){vfunc_called(this, "_ZN7S6728C23v28Ev");}
void  S6728C2 ::v29(){vfunc_called(this, "_ZN7S6728C23v29Ev");}
void  S6728C2 ::v30(){vfunc_called(this, "_ZN7S6728C23v30Ev");}
void  S6728C2 ::v31(){vfunc_called(this, "_ZN7S6728C23v31Ev");}
void  S6728C2 ::v32(){vfunc_called(this, "_ZN7S6728C23v32Ev");}
void  S6728C2 ::v33(){vfunc_called(this, "_ZN7S6728C23v33Ev");}
void  S6728C2 ::v34(){vfunc_called(this, "_ZN7S6728C23v34Ev");}
void  S6728C2 ::v35(){vfunc_called(this, "_ZN7S6728C23v35Ev");}
void  S6728C2 ::v36(){vfunc_called(this, "_ZN7S6728C23v36Ev");}
void  S6728C2 ::v37(){vfunc_called(this, "_ZN7S6728C23v37Ev");}
void  S6728C2 ::v38(){vfunc_called(this, "_ZN7S6728C23v38Ev");}
void  S6728C2 ::v39(){vfunc_called(this, "_ZN7S6728C23v39Ev");}
void  S6728C2 ::v40(){vfunc_called(this, "_ZN7S6728C23v40Ev");}
void  S6728C2 ::v41(){vfunc_called(this, "_ZN7S6728C23v41Ev");}
void  S6728C2 ::v42(){vfunc_called(this, "_ZN7S6728C23v42Ev");}
void  S6728C2 ::v43(){vfunc_called(this, "_ZN7S6728C23v43Ev");}
void  S6728C2 ::v44(){vfunc_called(this, "_ZN7S6728C23v44Ev");}
void  S6728C2 ::v45(){vfunc_called(this, "_ZN7S6728C23v45Ev");}
void  S6728C2 ::v46(){vfunc_called(this, "_ZN7S6728C23v46Ev");}
void  S6728C2 ::v47(){vfunc_called(this, "_ZN7S6728C23v47Ev");}
void  S6728C2 ::v48(){vfunc_called(this, "_ZN7S6728C23v48Ev");}
void  S6728C2 ::v49(){vfunc_called(this, "_ZN7S6728C23v49Ev");}
void  S6728C2 ::v50(){vfunc_called(this, "_ZN7S6728C23v50Ev");}
void  S6728C2 ::v51(){vfunc_called(this, "_ZN7S6728C23v51Ev");}
void  S6728C2 ::v52(){vfunc_called(this, "_ZN7S6728C23v52Ev");}
void  S6728C2 ::v53(){vfunc_called(this, "_ZN7S6728C23v53Ev");}
void  S6728C2 ::v54(){vfunc_called(this, "_ZN7S6728C23v54Ev");}
void  S6728C2 ::v55(){vfunc_called(this, "_ZN7S6728C23v55Ev");}
void  S6728C2 ::v56(){vfunc_called(this, "_ZN7S6728C23v56Ev");}
void  S6728C2 ::v57(){vfunc_called(this, "_ZN7S6728C23v57Ev");}
void  S6728C2 ::v58(){vfunc_called(this, "_ZN7S6728C23v58Ev");}
void  S6728C2 ::v59(){vfunc_called(this, "_ZN7S6728C23v59Ev");}
void  S6728C2 ::v60(){vfunc_called(this, "_ZN7S6728C23v60Ev");}
void  S6728C2 ::v61(){vfunc_called(this, "_ZN7S6728C23v61Ev");}
void  S6728C2 ::v62(){vfunc_called(this, "_ZN7S6728C23v62Ev");}
void  S6728C2 ::v63(){vfunc_called(this, "_ZN7S6728C23v63Ev");}
void  S6728C2 ::v64(){vfunc_called(this, "_ZN7S6728C23v64Ev");}
void  S6728C2 ::v65(){vfunc_called(this, "_ZN7S6728C23v65Ev");}
void  S6728C2 ::v66(){vfunc_called(this, "_ZN7S6728C23v66Ev");}
S6728C2 ::S6728C2(){ note_ctor("S6728C2", this);} // tgen

static void Test_S6728C2()
{
  extern Class_Descriptor cd_S6728C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6728C2, buf);
    S6728C2 *dp, &lv = *(dp=new (buf) S6728C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6728C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6728C2)");
    check_field_offset(lv, s6728c2f0, ABISELECT(8,4), "S6728C2.s6728c2f0");
    check_field_offset(lv, s6728c2f1, ABISELECT(16,8), "S6728C2.s6728c2f1");
    check_field_offset(lv, s6728c2f2, ABISELECT(24,16), "S6728C2.s6728c2f2");
    check_field_offset(lv, s6728c2f3, ABISELECT(56,32), "S6728C2.s6728c2f3");
    check_field_offset(lv, s6728c2f4, ABISELECT(64,40), "S6728C2.s6728c2f4");
    check_field_offset(lv, s6728c2f5, ABISELECT(72,44), "S6728C2.s6728c2f5");
    check_field_offset(lv, s6728c2f6, ABISELECT(80,52), "S6728C2.s6728c2f6");
    test_class_info(&lv, &cd_S6728C2);
    dp->~S6728C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6728C2(Test_S6728C2, "S6728C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6728C2C1Ev();
extern void _ZN7S6728C2D1Ev();
Name_Map name_map_S6728C2[] = {
  NSPAIR(_ZN7S6728C2C1Ev),
  NSPAIR(_ZN7S6728C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6728C2[];
extern void _ZN7S6728C2D1Ev();
extern void _ZN7S6728C2D0Ev();
extern void _ZN7S6728C22v3Ev();
extern void _ZN7S6728C22v4Ev();
extern void _ZN7S6728C22v5Ev();
extern void _ZN7S6728C22v6Ev();
extern void _ZN7S6728C22v7Ev();
extern void _ZN7S6728C22v8Ev();
extern void _ZN7S6728C22v9Ev();
extern void _ZN7S6728C23v10Ev();
extern void _ZN7S6728C23v11Ev();
extern void _ZN7S6728C23v12Ev();
extern void _ZN7S6728C23v13Ev();
extern void _ZN7S6728C23v14Ev();
extern void _ZN7S6728C23v15Ev();
extern void _ZN7S6728C23v16Ev();
extern void _ZN7S6728C23v17Ev();
extern void _ZN7S6728C23v18Ev();
extern void _ZN7S6728C23v19Ev();
extern void _ZN7S6728C23v20Ev();
extern void _ZN7S6728C23v21Ev();
extern void _ZN7S6728C23v22Ev();
extern void _ZN7S6728C23v23Ev();
extern void _ZN7S6728C23v24Ev();
extern void _ZN7S6728C23v25Ev();
extern void _ZN7S6728C23v26Ev();
extern void _ZN7S6728C23v27Ev();
extern void _ZN7S6728C23v28Ev();
extern void _ZN7S6728C23v29Ev();
extern void _ZN7S6728C23v30Ev();
extern void _ZN7S6728C23v31Ev();
extern void _ZN7S6728C23v32Ev();
extern void _ZN7S6728C23v33Ev();
extern void _ZN7S6728C23v34Ev();
extern void _ZN7S6728C23v35Ev();
extern void _ZN7S6728C23v36Ev();
extern void _ZN7S6728C23v37Ev();
extern void _ZN7S6728C23v38Ev();
extern void _ZN7S6728C23v39Ev();
extern void _ZN7S6728C23v40Ev();
extern void _ZN7S6728C23v41Ev();
extern void _ZN7S6728C23v42Ev();
extern void _ZN7S6728C23v43Ev();
extern void _ZN7S6728C23v44Ev();
extern void _ZN7S6728C23v45Ev();
extern void _ZN7S6728C23v46Ev();
extern void _ZN7S6728C23v47Ev();
extern void _ZN7S6728C23v48Ev();
extern void _ZN7S6728C23v49Ev();
extern void _ZN7S6728C23v50Ev();
extern void _ZN7S6728C23v51Ev();
extern void _ZN7S6728C23v52Ev();
extern void _ZN7S6728C23v53Ev();
extern void _ZN7S6728C23v54Ev();
extern void _ZN7S6728C23v55Ev();
extern void _ZN7S6728C23v56Ev();
extern void _ZN7S6728C23v57Ev();
extern void _ZN7S6728C23v58Ev();
extern void _ZN7S6728C23v59Ev();
extern void _ZN7S6728C23v60Ev();
extern void _ZN7S6728C23v61Ev();
extern void _ZN7S6728C23v62Ev();
extern void _ZN7S6728C23v63Ev();
extern void _ZN7S6728C23v64Ev();
extern void _ZN7S6728C23v65Ev();
extern void _ZN7S6728C23v66Ev();
static  VTBL_ENTRY vtc_S6728C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6728C2[0]),
  (VTBL_ENTRY)&_ZN7S6728C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6728C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v66Ev,
};
extern VTBL_ENTRY _ZTI7S6728C2[];
extern  VTBL_ENTRY _ZTV7S6728C2[];
Class_Descriptor cd_S6728C2 = {  "S6728C2", // class name
  0,0,//no base classes
  &(vtc_S6728C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6728C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6728C2),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  S6728C5_nt  {
  int s6728c5f0[3];
  void  mf6728c5(); // _ZN10S6728C5_nt8mf6728c5Ev
};
//SIG(-1 S6728C5_nt) C1{ m Fi[3]}


void  S6728C5_nt ::mf6728c5(){}

//skip512 S6728C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6728C1  : S6728C2 {
  void *s6728c1f0;
  int s6728c1f1[2];
  unsigned int s6728c1f2:1;
  unsigned int s6728c1f3:1;
  unsigned int s6728c1f4:1;
  unsigned int s6728c1f5:1;
  unsigned int s6728c1f6:1;
  unsigned int s6728c1f7:1;
  char s6728c1f8;
  char s6728c1f9;
  ::S3281C13_nt s6728c1f10;
  ::S3281C13_nt s6728c1f11;
  ::S3281C13_nt s6728c1f12;
  ::S3281C13_nt s6728c1f13;
  ::S3281C13_nt s6728c1f14;
  ::S3281C13_nt s6728c1f15;
  ::S3281C13_nt s6728c1f16;
  ::S3281C13_nt s6728c1f17;
  ::S3281C13_nt s6728c1f18;
  ::S6728C5_nt s6728c1f19;
  void *s6728c1f20[2];
  int s6728c1f21[2];
  virtual  ~S6728C1(); // _ZN7S6728C1D1Ev
  virtual void  v1(); // _ZN7S6728C12v1Ev
  virtual void  v2(); // _ZN7S6728C12v2Ev
  S6728C1(); // tgen
};
//SIG(1 S6728C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 Fp Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[2] FC4{ m Fi[3]} FC4 FC4 FC4 FC4 FC4 FC4 FC4 FC4 FC5{ m Fi[3]} Fp[2] Fi[2]}


 S6728C1 ::~S6728C1(){ note_dtor("S6728C1", this);}
void  S6728C1 ::v1(){vfunc_called(this, "_ZN7S6728C12v1Ev");}
void  S6728C1 ::v2(){vfunc_called(this, "_ZN7S6728C12v2Ev");}
S6728C1 ::S6728C1(){ note_ctor("S6728C1", this);} // tgen

static void Test_S6728C1()
{
  extern Class_Descriptor cd_S6728C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,54)];
    init_test(&cd_S6728C1, buf);
    S6728C1 *dp, &lv = *(dp=new (buf) S6728C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,212), "sizeof(S6728C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6728C1)");
    check_base_class_offset(lv, (S6728C2*), 0, "S6728C1");
    check_field_offset(lv, s6728c1f0, ABISELECT(96,60), "S6728C1.s6728c1f0");
    check_field_offset(lv, s6728c1f1, ABISELECT(104,64), "S6728C1.s6728c1f1");
    set_bf_and_test(lv, s6728c1f2, ABISELECT(112,72), 0, 1, 1, "S6728C1");
    set_bf_and_test(lv, s6728c1f3, ABISELECT(112,72), 1, 1, 1, "S6728C1");
    set_bf_and_test(lv, s6728c1f4, ABISELECT(112,72), 2, 1, 1, "S6728C1");
    set_bf_and_test(lv, s6728c1f5, ABISELECT(112,72), 3, 1, 1, "S6728C1");
    set_bf_and_test(lv, s6728c1f6, ABISELECT(112,72), 4, 1, 1, "S6728C1");
    set_bf_and_test(lv, s6728c1f7, ABISELECT(112,72), 5, 1, 1, "S6728C1");
    check_field_offset(lv, s6728c1f8, ABISELECT(113,73), "S6728C1.s6728c1f8");
    check_field_offset(lv, s6728c1f9, ABISELECT(114,74), "S6728C1.s6728c1f9");
    check_field_offset(lv, s6728c1f10, ABISELECT(116,76), "S6728C1.s6728c1f10");
    check_field_offset(lv, s6728c1f11, ABISELECT(128,88), "S6728C1.s6728c1f11");
    check_field_offset(lv, s6728c1f12, ABISELECT(140,100), "S6728C1.s6728c1f12");
    check_field_offset(lv, s6728c1f13, ABISELECT(152,112), "S6728C1.s6728c1f13");
    check_field_offset(lv, s6728c1f14, ABISELECT(164,124), "S6728C1.s6728c1f14");
    check_field_offset(lv, s6728c1f15, ABISELECT(176,136), "S6728C1.s6728c1f15");
    check_field_offset(lv, s6728c1f16, ABISELECT(188,148), "S6728C1.s6728c1f16");
    check_field_offset(lv, s6728c1f17, ABISELECT(200,160), "S6728C1.s6728c1f17");
    check_field_offset(lv, s6728c1f18, ABISELECT(212,172), "S6728C1.s6728c1f18");
    check_field_offset(lv, s6728c1f19, ABISELECT(224,184), "S6728C1.s6728c1f19");
    check_field_offset(lv, s6728c1f20, ABISELECT(240,196), "S6728C1.s6728c1f20");
    check_field_offset(lv, s6728c1f21, ABISELECT(256,204), "S6728C1.s6728c1f21");
    test_class_info(&lv, &cd_S6728C1);
    dp->~S6728C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6728C1(Test_S6728C1, "S6728C1", ABISELECT(264,212));

#else // __cplusplus

extern void _ZN7S6728C1C1Ev();
extern void _ZN7S6728C1D1Ev();
Name_Map name_map_S6728C1[] = {
  NSPAIR(_ZN7S6728C1C1Ev),
  NSPAIR(_ZN7S6728C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6728C2;
extern VTBL_ENTRY _ZTI7S6728C2[];
extern  VTBL_ENTRY _ZTV7S6728C2[];
static Base_Class bases_S6728C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6728C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6728C1[];
extern void _ZN7S6728C1D1Ev();
extern void _ZN7S6728C1D0Ev();
extern void _ZN7S6728C22v3Ev();
extern void _ZN7S6728C22v4Ev();
extern void _ZN7S6728C22v5Ev();
extern void _ZN7S6728C22v6Ev();
extern void _ZN7S6728C22v7Ev();
extern void _ZN7S6728C22v8Ev();
extern void _ZN7S6728C22v9Ev();
extern void _ZN7S6728C23v10Ev();
extern void _ZN7S6728C23v11Ev();
extern void _ZN7S6728C23v12Ev();
extern void _ZN7S6728C23v13Ev();
extern void _ZN7S6728C23v14Ev();
extern void _ZN7S6728C23v15Ev();
extern void _ZN7S6728C23v16Ev();
extern void _ZN7S6728C23v17Ev();
extern void _ZN7S6728C23v18Ev();
extern void _ZN7S6728C23v19Ev();
extern void _ZN7S6728C23v20Ev();
extern void _ZN7S6728C23v21Ev();
extern void _ZN7S6728C23v22Ev();
extern void _ZN7S6728C23v23Ev();
extern void _ZN7S6728C23v24Ev();
extern void _ZN7S6728C23v25Ev();
extern void _ZN7S6728C23v26Ev();
extern void _ZN7S6728C23v27Ev();
extern void _ZN7S6728C23v28Ev();
extern void _ZN7S6728C23v29Ev();
extern void _ZN7S6728C23v30Ev();
extern void _ZN7S6728C23v31Ev();
extern void _ZN7S6728C23v32Ev();
extern void _ZN7S6728C23v33Ev();
extern void _ZN7S6728C23v34Ev();
extern void _ZN7S6728C23v35Ev();
extern void _ZN7S6728C23v36Ev();
extern void _ZN7S6728C23v37Ev();
extern void _ZN7S6728C23v38Ev();
extern void _ZN7S6728C23v39Ev();
extern void _ZN7S6728C23v40Ev();
extern void _ZN7S6728C23v41Ev();
extern void _ZN7S6728C23v42Ev();
extern void _ZN7S6728C23v43Ev();
extern void _ZN7S6728C23v44Ev();
extern void _ZN7S6728C23v45Ev();
extern void _ZN7S6728C23v46Ev();
extern void _ZN7S6728C23v47Ev();
extern void _ZN7S6728C23v48Ev();
extern void _ZN7S6728C23v49Ev();
extern void _ZN7S6728C23v50Ev();
extern void _ZN7S6728C23v51Ev();
extern void _ZN7S6728C23v52Ev();
extern void _ZN7S6728C23v53Ev();
extern void _ZN7S6728C23v54Ev();
extern void _ZN7S6728C23v55Ev();
extern void _ZN7S6728C23v56Ev();
extern void _ZN7S6728C23v57Ev();
extern void _ZN7S6728C23v58Ev();
extern void _ZN7S6728C23v59Ev();
extern void _ZN7S6728C23v60Ev();
extern void _ZN7S6728C23v61Ev();
extern void _ZN7S6728C23v62Ev();
extern void _ZN7S6728C23v63Ev();
extern void _ZN7S6728C23v64Ev();
extern void _ZN7S6728C23v65Ev();
extern void _ZN7S6728C23v66Ev();
extern void _ZN7S6728C12v1Ev();
extern void _ZN7S6728C12v2Ev();
static  VTBL_ENTRY vtc_S6728C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6728C1[0]),
  (VTBL_ENTRY)&_ZN7S6728C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6728C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6728C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6728C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6728C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6728C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6728C1[];
extern  VTBL_ENTRY _ZTV7S6728C1[];
Class_Descriptor cd_S6728C1 = {  "S6728C1", // class name
  bases_S6728C1, 1,
  &(vtc_S6728C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,212), // object size
  NSPAIRA(_ZTI7S6728C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6728C1),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20973C5_nt  {
  virtual void  v4(); // _ZN11S20973C5_nt2v4Ev
  virtual void  v5(); // _ZN11S20973C5_nt2v5Ev
  ~S20973C5_nt(); // tgen
  S20973C5_nt(); // tgen
};
//SIG(-1 S20973C5_nt) C1{ v1 v2}


void  S20973C5_nt ::v4(){vfunc_called(this, "_ZN11S20973C5_nt2v4Ev");}
void  S20973C5_nt ::v5(){vfunc_called(this, "_ZN11S20973C5_nt2v5Ev");}
S20973C5_nt ::~S20973C5_nt(){ note_dtor("S20973C5_nt", this);} // tgen
S20973C5_nt ::S20973C5_nt(){ note_ctor("S20973C5_nt", this);} // tgen

//skip512 S20973C5_nt

#else // __cplusplus

extern void _ZN11S20973C5_ntC1Ev();
extern void _ZN11S20973C5_ntD1Ev();
Name_Map name_map_S20973C5_nt[] = {
  NSPAIR(_ZN11S20973C5_ntC1Ev),
  NSPAIR(_ZN11S20973C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY vtc_S20973C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20973C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
VTBL_ENTRY *P__ZTI11S20973C5_nt = _ZTI11S20973C5_nt; 
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
Class_Descriptor cd_S20973C5_nt = {  "S20973C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20973C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20973C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20973C5_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  S20973C4  : S20973C5_nt {
  virtual void  v6(); // _ZN8S20973C42v6Ev
  virtual void  v7(); // _ZN8S20973C42v7Ev
  ~S20973C4(); // tgen
  S20973C4(); // tgen
};
//SIG(-1 S20973C4) C1{ BC2{ v3 v4} v1 v2}


void  S20973C4 ::v6(){vfunc_called(this, "_ZN8S20973C42v6Ev");}
void  S20973C4 ::v7(){vfunc_called(this, "_ZN8S20973C42v7Ev");}
S20973C4 ::~S20973C4(){ note_dtor("S20973C4", this);} // tgen
S20973C4 ::S20973C4(){ note_ctor("S20973C4", this);} // tgen

static void Test_S20973C4()
{
  extern Class_Descriptor cd_S20973C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20973C4, buf);
    S20973C4 *dp, &lv = *(dp=new (buf) S20973C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20973C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C4)");
    check_base_class_offset(lv, (S20973C5_nt*), 0, "S20973C4");
    test_class_info(&lv, &cd_S20973C4);
    dp->~S20973C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C4(Test_S20973C4, "S20973C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20973C4C1Ev();
extern void _ZN8S20973C4D1Ev();
Name_Map name_map_S20973C4[] = {
  NSPAIR(_ZN8S20973C4C1Ev),
  NSPAIR(_ZN8S20973C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
static Base_Class bases_S20973C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20973C4[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY vtc_S20973C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C4[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
Class_Descriptor cd_S20973C4 = {  "S20973C4", // class name
  bases_S20973C4, 1,
  &(vtc_S20973C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20973C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20973C4),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  S20973C3  : virtual S20973C4 , S20973C5_nt {
  virtual void  v8(); // _ZN8S20973C32v8Ev
  virtual void  v9(); // _ZN8S20973C32v9Ev
  virtual void  v10(); // _ZN8S20973C33v10Ev
  virtual void  v11(); // _ZN8S20973C33v11Ev
  virtual void  v12(); // _ZN8S20973C33v12Ev
  virtual void  v13(); // _ZN8S20973C33v13Ev
  virtual void  v14(); // _ZN8S20973C33v14Ev
  virtual void  v15(); // _ZN8S20973C33v15Ev
  ~S20973C3(); // tgen
  S20973C3(); // tgen
};
//SIG(-1 S20973C3) C1{ VBC2{ BC3{ v9 v10} v11 v12} BC3 v1 v2 v3 v4 v5 v6 v7 v8}


void  S20973C3 ::v8(){vfunc_called(this, "_ZN8S20973C32v8Ev");}
void  S20973C3 ::v9(){vfunc_called(this, "_ZN8S20973C32v9Ev");}
void  S20973C3 ::v10(){vfunc_called(this, "_ZN8S20973C33v10Ev");}
void  S20973C3 ::v11(){vfunc_called(this, "_ZN8S20973C33v11Ev");}
void  S20973C3 ::v12(){vfunc_called(this, "_ZN8S20973C33v12Ev");}
void  S20973C3 ::v13(){vfunc_called(this, "_ZN8S20973C33v13Ev");}
void  S20973C3 ::v14(){vfunc_called(this, "_ZN8S20973C33v14Ev");}
void  S20973C3 ::v15(){vfunc_called(this, "_ZN8S20973C33v15Ev");}
S20973C3 ::~S20973C3(){ note_dtor("S20973C3", this);} // tgen
S20973C3 ::S20973C3(){ note_ctor("S20973C3", this);} // tgen

static void Test_S20973C3()
{
  extern Class_Descriptor cd_S20973C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20973C3, buf);
    S20973C3 *dp, &lv = *(dp=new (buf) S20973C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20973C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C3)");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(8,4), "S20973C3");
    check_base_class_offset(lv, (S20973C4*), ABISELECT(8,4), "S20973C3");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*), 0, "S20973C3");
    test_class_info(&lv, &cd_S20973C3);
    dp->~S20973C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C3(Test_S20973C3, "S20973C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20973C3C1Ev();
extern void _ZN8S20973C3D1Ev();
Name_Map name_map_S20973C3[] = {
  NSPAIR(_ZN8S20973C3C1Ev),
  NSPAIR(_ZN8S20973C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
static Base_Class bases_S20973C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(8,4), //bcp->offset
    13, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20973C3[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY vtc_S20973C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20973C3[];
static  VTT_ENTRY vtt_S20973C3[] = {
  {&(_ZTV8S20973C3[3]),  3,23},
  {&(_ZTV8S20973C3[19]),  19,23},
};
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
Class_Descriptor cd_S20973C3 = {  "S20973C3", // class name
  bases_S20973C3, 3,
  &(vtc_S20973C3[0]), // expected_vtbl_contents
  &(vtt_S20973C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20973C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20973C3),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20973C3),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20973C6  : S20973C4 , S20973C5_nt {
  __tsi64 s20973c6f0;
  virtual void  v16(); // _ZN8S20973C63v16Ev
  virtual void  v17(); // _ZN8S20973C63v17Ev
  virtual void  v18(); // _ZN8S20973C63v18Ev
  virtual void  v19(); // _ZN8S20973C63v19Ev
  ~S20973C6(); // tgen
  S20973C6(); // tgen
};
//SIG(-1 S20973C6) C1{ BC2{ BC3{ v5 v6} v7 v8} BC3 v1 v2 v3 v4 FL}


void  S20973C6 ::v16(){vfunc_called(this, "_ZN8S20973C63v16Ev");}
void  S20973C6 ::v17(){vfunc_called(this, "_ZN8S20973C63v17Ev");}
void  S20973C6 ::v18(){vfunc_called(this, "_ZN8S20973C63v18Ev");}
void  S20973C6 ::v19(){vfunc_called(this, "_ZN8S20973C63v19Ev");}
S20973C6 ::~S20973C6(){ note_dtor("S20973C6", this);} // tgen
S20973C6 ::S20973C6(){ note_ctor("S20973C6", this);} // tgen

static void Test_S20973C6()
{
  extern Class_Descriptor cd_S20973C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20973C6, buf);
    S20973C6 *dp, &lv = *(dp=new (buf) S20973C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20973C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C6)");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), 0, "S20973C6");
    check_base_class_offset(lv, (S20973C4*), 0, "S20973C6");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*), ABISELECT(8,4), "S20973C6");
    check_field_offset(lv, s20973c6f0, ABISELECT(16,8), "S20973C6.s20973c6f0");
    test_class_info(&lv, &cd_S20973C6);
    dp->~S20973C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C6(Test_S20973C6, "S20973C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20973C6C1Ev();
extern void _ZN8S20973C6D1Ev();
Name_Map name_map_S20973C6[] = {
  NSPAIR(_ZN8S20973C6C1Ev),
  NSPAIR(_ZN8S20973C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
static Base_Class bases_S20973C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20973C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20973C5_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20973C6[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY vtc_S20973C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C6[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20973C6[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
Class_Descriptor cd_S20973C6 = {  "S20973C6", // class name
  bases_S20973C6, 3,
  &(vtc_S20973C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20973C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20973C6),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20973C2  : virtual S20973C3 , virtual S20973C6 {
  int s20973c2f0[2];
  virtual void  v20(); // _ZN8S20973C23v20Ev
  virtual void  v21(); // _ZN8S20973C23v21Ev
  virtual void  v22(); // _ZN8S20973C23v22Ev
  virtual void  v23(); // _ZN8S20973C23v23Ev
  virtual void  v24(); // _ZN8S20973C23v24Ev
  virtual void  v25(); // _ZN8S20973C23v25Ev
  ~S20973C2(); // tgen
  S20973C2(); // tgen
};
//SIG(-1 S20973C2) C1{ VBC2{ VBC3{ BC4{ v7 v8} v9 v10} BC4 v11 v12 v13 v14 v15 v16 v17 v18} VBC5{ BC3 BC4 v19 v20 v21 v22 FL} v1 v2 v3 v4 v5 v6 Fi[2]}


void  S20973C2 ::v20(){vfunc_called(this, "_ZN8S20973C23v20Ev");}
void  S20973C2 ::v21(){vfunc_called(this, "_ZN8S20973C23v21Ev");}
void  S20973C2 ::v22(){vfunc_called(this, "_ZN8S20973C23v22Ev");}
void  S20973C2 ::v23(){vfunc_called(this, "_ZN8S20973C23v23Ev");}
void  S20973C2 ::v24(){vfunc_called(this, "_ZN8S20973C23v24Ev");}
void  S20973C2 ::v25(){vfunc_called(this, "_ZN8S20973C23v25Ev");}
S20973C2 ::~S20973C2(){ note_dtor("S20973C2", this);} // tgen
S20973C2 ::S20973C2(){ note_ctor("S20973C2", this);} // tgen

static void Test_S20973C2()
{
  extern Class_Descriptor cd_S20973C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20973C2, buf);
    S20973C2 *dp, &lv = *(dp=new (buf) S20973C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20973C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C2)");
    /*is_ambiguous_... S20973C2::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(16,12), "S20973C2");
    check_base_class_offset(lv, (S20973C4*)(S20973C3*), ABISELECT(16,12), "S20973C2");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*), 0, "S20973C2");
    check_base_class_offset(lv, (S20973C3*), 0, "S20973C2");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(24,16), "S20973C2");
    check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(24,16), "S20973C2");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(32,20), "S20973C2");
    check_base_class_offset(lv, (S20973C6*), ABISELECT(24,16), "S20973C2");
    check_field_offset(lv, s20973c2f0, ABISELECT(8,4), "S20973C2.s20973c2f0");
    test_class_info(&lv, &cd_S20973C2);
    dp->~S20973C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C2(Test_S20973C2, "S20973C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20973C2C1Ev();
extern void _ZN8S20973C2D1Ev();
Name_Map name_map_S20973C2[] = {
  NSPAIR(_ZN8S20973C2C1Ev),
  NSPAIR(_ZN8S20973C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
static Base_Class bases_S20973C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(16,12), //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20973C3,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20973C4,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(32,20), //bcp->offset
    59, //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(24,16), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    4, //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 _ZTI8S20973C2[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY vtc_S20973C2[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S20973C2[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__8S20973C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C3__8S20973C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
static  VTT_ENTRY vtt_S20973C2[] = {
  {&(_ZTV8S20973C2[15]),  15,63},
  {&(_ZTV8S20973C2[15]),  15,63},
  {&(_ZTV8S20973C2[37]),  37,63},
  {&(_ZTV8S20973C2[51]),  51,63},
  {&(_ZTV8S20973C2[61]),  61,63},
  {&(_tg__ZTV8S20973C3__8S20973C2[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C3__8S20973C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20973C2[];
extern  VTBL_ENTRY _ZTV8S20973C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C2[];
Class_Descriptor cd_S20973C2 = {  "S20973C2", // class name
  bases_S20973C2, 8,
  &(vtc_S20973C2[0]), // expected_vtbl_contents
  &(vtt_S20973C2[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20973C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20973C2),63, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20973C2),7, //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  S20973C7  {
  __tsi64 s20973c7f0[10];
  void *s20973c7f1;
  __tsi64 s20973c7f2;
  virtual void  v26(); // _ZN8S20973C73v26Ev
  virtual void  v27(); // _ZN8S20973C73v27Ev
  virtual void  v28(); // _ZN8S20973C73v28Ev
  virtual void  v29(); // _ZN8S20973C73v29Ev
  virtual void  v30(); // _ZN8S20973C73v30Ev
  virtual void  v31(); // _ZN8S20973C73v31Ev
  virtual void  v32(); // _ZN8S20973C73v32Ev
  ~S20973C7(); // tgen
  S20973C7(); // tgen
};
//SIG(-1 S20973C7) C1{ v1 v2 v3 v4 v5 v6 v7 FL[10] Fp FL}


void  S20973C7 ::v26(){vfunc_called(this, "_ZN8S20973C73v26Ev");}
void  S20973C7 ::v27(){vfunc_called(this, "_ZN8S20973C73v27Ev");}
void  S20973C7 ::v28(){vfunc_called(this, "_ZN8S20973C73v28Ev");}
void  S20973C7 ::v29(){vfunc_called(this, "_ZN8S20973C73v29Ev");}
void  S20973C7 ::v30(){vfunc_called(this, "_ZN8S20973C73v30Ev");}
void  S20973C7 ::v31(){vfunc_called(this, "_ZN8S20973C73v31Ev");}
void  S20973C7 ::v32(){vfunc_called(this, "_ZN8S20973C73v32Ev");}
S20973C7 ::~S20973C7(){ note_dtor("S20973C7", this);} // tgen
S20973C7 ::S20973C7(){ note_ctor("S20973C7", this);} // tgen

static void Test_S20973C7()
{
  extern Class_Descriptor cd_S20973C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,25)];
    init_test(&cd_S20973C7, buf);
    S20973C7 *dp, &lv = *(dp=new (buf) S20973C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,96), "sizeof(S20973C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C7)");
    check_field_offset(lv, s20973c7f0, ABISELECT(8,4), "S20973C7.s20973c7f0");
    check_field_offset(lv, s20973c7f1, ABISELECT(88,84), "S20973C7.s20973c7f1");
    check_field_offset(lv, s20973c7f2, ABISELECT(96,88), "S20973C7.s20973c7f2");
    test_class_info(&lv, &cd_S20973C7);
    dp->~S20973C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C7(Test_S20973C7, "S20973C7", ABISELECT(104,96));

#else // __cplusplus

extern void _ZN8S20973C7C1Ev();
extern void _ZN8S20973C7D1Ev();
Name_Map name_map_S20973C7[] = {
  NSPAIR(_ZN8S20973C7C1Ev),
  NSPAIR(_ZN8S20973C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20973C7[];
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY vtc_S20973C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C7[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
Class_Descriptor cd_S20973C7 = {  "S20973C7", // class name
  0,0,//no base classes
  &(vtc_S20973C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,96), // object size
  NSPAIRA(_ZTI8S20973C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20973C7),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  S20973C10  : S20973C5_nt , S20973C7 , virtual S20973C6 {
  void *s20973c10f0;
  virtual void  v33(); // _ZN9S20973C103v33Ev
  virtual void  v34(); // _ZN9S20973C103v34Ev
  ~S20973C10(); // tgen
  S20973C10(); // tgen
};
//SIG(-1 S20973C10) C1{ BC2{ v3 v4} BC3{ v5 v6 v7 v8 v9 v10 v11 FL[10] Fp FL} VBC4{ BC5{ BC2 v12 v13} BC2 v14 v15 v16 v17 FL} v1 v2 Fp}


void  S20973C10 ::v33(){vfunc_called(this, "_ZN9S20973C103v33Ev");}
void  S20973C10 ::v34(){vfunc_called(this, "_ZN9S20973C103v34Ev");}
S20973C10 ::~S20973C10(){ note_dtor("S20973C10", this);} // tgen
S20973C10 ::S20973C10(){ note_ctor("S20973C10", this);} // tgen

static void Test_S20973C10()
{
  extern Class_Descriptor cd_S20973C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,31)];
    init_test(&cd_S20973C10, buf);
    S20973C10 *dp, &lv = *(dp=new (buf) S20973C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,120), "sizeof(S20973C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C10)");
    /*is_ambiguous_... S20973C10::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*), 0, "S20973C10");
    check_base_class_offset(lv, (S20973C7*), ABISELECT(8,4), "S20973C10");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(120,104), "S20973C10");
    check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(120,104), "S20973C10");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(128,108), "S20973C10");
    check_base_class_offset(lv, (S20973C6*), ABISELECT(120,104), "S20973C10");
    check_field_offset(lv, s20973c10f0, ABISELECT(112,100), "S20973C10.s20973c10f0");
    test_class_info(&lv, &cd_S20973C10);
    dp->~S20973C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C10(Test_S20973C10, "S20973C10", ABISELECT(144,120));

#else // __cplusplus

extern void _ZN9S20973C10C1Ev();
extern void _ZN9S20973C10D1Ev();
Name_Map name_map_S20973C10[] = {
  NSPAIR(_ZN9S20973C10C1Ev),
  NSPAIR(_ZN9S20973C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
static Base_Class bases_S20973C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20973C7,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20973C5_nt,    ABISELECT(120,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
    3, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(128,108), //bcp->offset
    34, //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
    5, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(120,104), //bcp->offset
    16, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20973C10[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY vtc_S20973C10[] = {
  ABISELECT(120,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV9S20973C10[];
static  VTT_ENTRY vtt_S20973C10[] = {
  {&(_ZTV9S20973C10[3]),  3,38},
  {&(_ZTV9S20973C10[26]),  26,38},
  {&(_ZTV9S20973C10[36]),  36,38},
};
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
Class_Descriptor cd_S20973C10 = {  "S20973C10", // class name
  bases_S20973C10, 6,
  &(vtc_S20973C10[0]), // expected_vtbl_contents
  &(vtt_S20973C10[0]), // expected_vtt_contents
  ABISELECT(144,120), // object size
  NSPAIRA(_ZTI9S20973C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20973C10),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20973C10),3, //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  S20973C9  : virtual S20973C7 , virtual S20973C6 , virtual S20973C10 , S20973C3 , S20973C4 {
  char s20973c9f0;
  short s20973c9f1;
  virtual void  v35(); // _ZN8S20973C93v35Ev
  virtual void  v36(); // _ZN8S20973C93v36Ev
  virtual void  v37(); // _ZN8S20973C93v37Ev
  virtual void  v38(); // _ZN8S20973C93v38Ev
  virtual void  v39(); // _ZN8S20973C93v39Ev
  virtual void  v40(); // _ZN8S20973C93v40Ev
  virtual void  v41(); // _ZN8S20973C93v41Ev
  ~S20973C9(); // tgen
  S20973C9(); // tgen
};
//SIG(-1 S20973C9) C1{ VBC2{ v8 v9 v10 v11 v12 v13 v14 FL[10] Fp FL} VBC3{ BC4{ BC5{ v15 v16} v17 v18} BC5 v19 v20 v21 v22 FL} VBC6{ BC5 BC2 VBC3 v23 v24 Fp} BC7{ VBC4 BC5 v25 v26 v27 v28 v29 v30 v31 v32} BC4 v1 v2 v3 v4 v5 v6 v7 Fc Fs}


void  S20973C9 ::v35(){vfunc_called(this, "_ZN8S20973C93v35Ev");}
void  S20973C9 ::v36(){vfunc_called(this, "_ZN8S20973C93v36Ev");}
void  S20973C9 ::v37(){vfunc_called(this, "_ZN8S20973C93v37Ev");}
void  S20973C9 ::v38(){vfunc_called(this, "_ZN8S20973C93v38Ev");}
void  S20973C9 ::v39(){vfunc_called(this, "_ZN8S20973C93v39Ev");}
void  S20973C9 ::v40(){vfunc_called(this, "_ZN8S20973C93v40Ev");}
void  S20973C9 ::v41(){vfunc_called(this, "_ZN8S20973C93v41Ev");}
S20973C9 ::~S20973C9(){ note_dtor("S20973C9", this);} // tgen
S20973C9 ::S20973C9(){ note_ctor("S20973C9", this);} // tgen

static void Test_S20973C9()
{
  extern Class_Descriptor cd_S20973C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,59)];
    init_test(&cd_S20973C9, buf);
    S20973C9 *dp, &lv = *(dp=new (buf) S20973C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,232), "sizeof(S20973C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C9)");
    /*is_ambiguous_... S20973C9::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*), ABISELECT(24,12), "S20973C9");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(128,108), "S20973C9");
    check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(128,108), "S20973C9");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(136,112), "S20973C9");
    check_base_class_offset(lv, (S20973C6*), ABISELECT(128,108), "S20973C9");
    check_base_class_offset(lv, (S20973C6*)(S20973C10*), ABISELECT(128,108), "S20973C9");
    /*is_ambiguous_... S20973C10::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*), ABISELECT(152,124), "S20973C9");
    check_base_class_offset(lv, (S20973C7*)(S20973C10*), ABISELECT(160,128), "S20973C9");
    check_base_class_offset(lv, (S20973C10*), ABISELECT(152,124), "S20973C9");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(272,228), "S20973C9");
    check_base_class_offset(lv, (S20973C4*)(S20973C3*), ABISELECT(272,228), "S20973C9");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*), 0, "S20973C9");
    check_base_class_offset(lv, (S20973C3*), 0, "S20973C9");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(8,4), "S20973C9");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*), ABISELECT(8,4), "S20973C9");
    check_field_offset(lv, s20973c9f0, ABISELECT(16,8), "S20973C9.s20973c9f0");
    check_field_offset(lv, s20973c9f1, ABISELECT(18,10), "S20973C9.s20973c9f1");
    test_class_info(&lv, &cd_S20973C9);
    dp->~S20973C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C9(Test_S20973C9, "S20973C9", ABISELECT(280,232));

#else // __cplusplus

extern void _ZN8S20973C9C1Ev();
extern void _ZN8S20973C9D1Ev();
Name_Map name_map_S20973C9[] = {
  NSPAIR(_ZN8S20973C9C1Ev),
  NSPAIR(_ZN8S20973C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
static Base_Class bases_S20973C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C7,    ABISELECT(24,12), //bcp->offset
    29, //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
  1, 1},
  {&cd_S20973C5_nt,    ABISELECT(128,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(128,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(136,112), //bcp->offset
    63, //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_S20973C6,    ABISELECT(128,108), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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_S20973C5_nt,    ABISELECT(152,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(160,128), //bcp->offset
    85, //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(152,124), //bcp->offset
    67, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_nt,    ABISELECT(272,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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(272,228), //bcp->offset
    94, //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
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20973C3,    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_S20973C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(8,4), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20973C9[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY vtc_S20973C9[] = {
  ABISELECT(152,124),
  ABISELECT(128,108),
  ABISELECT(24,12),
  ABISELECT(272,228),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20973C9[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__8S20973C9[] = {
  ABISELECT(272,228),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C3__8S20973C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C9[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C10__8S20973C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__8S20973C9[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20973C9[] = {
  {&(_ZTV8S20973C9[6]),  6,104},
  {&(_tg__ZTV8S20973C3__8S20973C9[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C3__8S20973C9[6]),  6,10},
  {&(_ZTV8S20973C9[38]),  38,104},
  {&(_ZTV8S20973C9[55]),  55,104},
  {&(_ZTV8S20973C9[65]),  65,104},
  {&(_ZTV8S20973C9[81]),  81,104},
  {&(_ZTV8S20973C9[87]),  87,104},
  {&(_ZTV8S20973C9[100]),  100,104},
  {&(_tg__ZTV9S20973C10__8S20973C9[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C10__8S20973C9[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__8S20973C9[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S20973C9[];
extern  VTBL_ENTRY _ZTV8S20973C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C9[];
Class_Descriptor cd_S20973C9 = {  "S20973C9", // class name
  bases_S20973C9, 14,
  &(vtc_S20973C9[0]), // expected_vtbl_contents
  &(vtt_S20973C9[0]), // expected_vtt_contents
  ABISELECT(280,232), // object size
  NSPAIRA(_ZTI8S20973C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20973C9),104, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20973C9),12, //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  S20973C8  : virtual S20973C4 , virtual S20973C9 , S20973C6 , S20973C2 {
  virtual void  v42(); // _ZN8S20973C83v42Ev
  virtual void  v43(); // _ZN8S20973C83v43Ev
  virtual void  v44(); // _ZN8S20973C83v44Ev
  ~S20973C8(); // tgen
  S20973C8(); // tgen
};
//SIG(-1 S20973C8) C1{ VBC2{ BC3{ v4 v5} v6 v7} VBC4{ VBC5{ v8 v9 v10 v11 v12 v13 v14 FL[10] Fp FL} VBC6{ BC2 BC3 v15 v16 v17 v18 FL} VBC7{ BC3 BC5 VBC6 v19 v20 Fp} BC8{ VBC2 BC3 v21 v22 v23 v24 v25 v26 v27 v28} BC2 v29 v30 v31 v32 v33 v34 v35 Fc Fs} BC6 BC9{ VBC8 VBC6 v36 v37 v38 v39 v40 v41 Fi[2]} v1 v2 v3}


void  S20973C8 ::v42(){vfunc_called(this, "_ZN8S20973C83v42Ev");}
void  S20973C8 ::v43(){vfunc_called(this, "_ZN8S20973C83v43Ev");}
void  S20973C8 ::v44(){vfunc_called(this, "_ZN8S20973C83v44Ev");}
S20973C8 ::~S20973C8(){ note_dtor("S20973C8", this);} // tgen
S20973C8 ::S20973C8(){ note_ctor("S20973C8", this);} // tgen

static void Test_S20973C8()
{
  extern Class_Descriptor cd_S20973C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,66)];
    init_test(&cd_S20973C8, buf);
    S20973C8 *dp, &lv = *(dp=new (buf) S20973C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,260), "sizeof(S20973C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C8)");
    /*is_ambiguous_... S20973C8::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(40,28), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*), ABISELECT(40,28), "S20973C8");
    check_base_class_offset(lv, (S20973C4*)(S20973C3*)(S20973C9*), ABISELECT(40,28), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C3*), ABISELECT(40,28), "S20973C8");
    /*is_ambiguous_... S20973C9::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C9*), ABISELECT(72,44), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(176,140), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(176,140), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(184,144), "S20973C8");
    check_base_class_offset(lv, (S20973C6*)(S20973C9*), ABISELECT(176,140), "S20973C8");
    check_base_class_offset(lv, (S20973C6*)(S20973C10*), ABISELECT(176,140), "S20973C8");
    check_base_class_offset(lv, (S20973C6*)(S20973C2*), ABISELECT(176,140), "S20973C8");
    /*is_ambiguous_... S20973C10::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*), ABISELECT(200,156), "S20973C8");
    check_base_class_offset(lv, (S20973C7*)(S20973C10*), ABISELECT(208,160), "S20973C8");
    check_base_class_offset(lv, (S20973C10*)(S20973C9*), ABISELECT(200,156), "S20973C8");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*)(S20973C9*), ABISELECT(48,32), "S20973C8");
    check_base_class_offset(lv, (S20973C3*)(S20973C9*), ABISELECT(48,32), "S20973C8");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C9*), ABISELECT(56,36), "S20973C8");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C9*), ABISELECT(56,36), "S20973C8");
    check_base_class_offset(lv, (S20973C9*), ABISELECT(48,32), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), 0, "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C6*), 0, "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(8,4), "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C6*), 0, "S20973C8");
    /*is_ambiguous_... S20973C8::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*), ABISELECT(24,16), "S20973C8");
    check_base_class_offset(lv, (S20973C3*)(S20973C2*), ABISELECT(24,16), "S20973C8");
    check_base_class_offset(lv, (S20973C2*), ABISELECT(24,16), "S20973C8");
    test_class_info(&lv, &cd_S20973C8);
    dp->~S20973C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C8(Test_S20973C8, "S20973C8", ABISELECT(320,260));

#else // __cplusplus

extern void _ZN8S20973C8C1Ev();
extern void _ZN8S20973C8D1Ev();
Name_Map name_map_S20973C8[] = {
  NSPAIR(_ZN8S20973C8C1Ev),
  NSPAIR(_ZN8S20973C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C9;
extern VTBL_ENTRY _ZTI8S20973C9[];
extern  VTBL_ENTRY _ZTV8S20973C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C9[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C2;
extern VTBL_ENTRY _ZTI8S20973C2[];
extern  VTBL_ENTRY _ZTV8S20973C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C2[];
static Base_Class bases_S20973C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(40,28), //bcp->offset
    54, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C7,    ABISELECT(72,44), //bcp->offset
    112, //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
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(176,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(184,144), //bcp->offset
    146, //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
    6, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(176,140), //bcp->offset
    128, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(200,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(208,160), //bcp->offset
    168, //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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(200,156), //bcp->offset
    150, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(56,36), //bcp->offset
    106, //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20973C9,    ABISELECT(48,32), //bcp->offset
    64, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20973C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20973C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20973C5_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
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20973C2,    ABISELECT(24,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //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 _ZTI8S20973C8[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN8S20973C83v42Ev();
extern void _ZN8S20973C83v43Ev();
extern void _ZN8S20973C83v44Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY vtc_S20973C8[] = {
  ABISELECT(24,16),
  ABISELECT(200,156),
  ABISELECT(176,140),
  ABISELECT(72,44),
  ABISELECT(48,32),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v44Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  ABISELECT(152,124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(152,124),
  ABISELECT(128,108),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-184,-144),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern VTBL_ENTRY _ZTV8S20973C8[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C2__8S20973C8[] = {
  ABISELECT(152,124),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C2__8S20973C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C2__8S20973C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A3__8S20973C2__8S20973C8[] = {
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C9__8S20973C8[] = {
  ABISELECT(152,124),
  ABISELECT(128,108),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C38S20973C9__8S20973C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C38S20973C9__8S20973C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__8S20973C9__8S20973C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C9__8S20973C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C9__8S20973C8[] = {
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C9__8S20973C8[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A1__8S20973C9__8S20973C8[] = {
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A1__8S20973C9__8S20973C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C10__8S20973C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__8S20973C8[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__8S20973C8[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C3__A1__8S20973C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
static  VTT_ENTRY vtt_S20973C8[] = {
  {&(_ZTV8S20973C8[8]),  8,177},
  {&(_tg__ZTV8S20973C2__8S20973C8[15]),  15,31},
  {&(_tg__ZTV8S20973C2__8S20973C8[15]),  15,31},
  {&(_tg__ZTV8S20973C4__8S20973C2__8S20973C8[6]),  6,10},
  {&(_tg__ZTV8S20973C6__8S20973C2__8S20973C8[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A3__8S20973C2__8S20973C8[2]),  2,4},
  {&(_ZTV8S20973C8[60]),  60,177},
  {&(_ZTV8S20973C8[89]),  89,177},
  {&(_ZTV8S20973C8[121]),  121,177},
  {&(_ZTV8S20973C8[138]),  138,177},
  {&(_ZTV8S20973C8[148]),  148,177},
  {&(_ZTV8S20973C8[164]),  164,177},
  {&(_ZTV8S20973C8[170]),  170,177},
  {&(_ZTV8S20973C8[108]),  108,177},
  {&(_ZTV8S20973C8[38]),  38,177},
  {&(_ZTV8S20973C8[38]),  38,177},
  {&(_tg__ZTV8S20973C9__8S20973C8[6]),  6,23},
  {&(_tg__ZTV8S20973C38S20973C9__8S20973C8[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C38S20973C9__8S20973C8[6]),  6,10},
  {&(_tg__ZTV8S20973C7__8S20973C9__8S20973C8[9]),  9,16},
  {&(_tg__ZTV8S20973C6__8S20973C9__8S20973C8[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C9__8S20973C8[2]),  2,4},
  {&(_tg__ZTV9S20973C10__8S20973C9__8S20973C8[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A1__8S20973C9__8S20973C8[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A1__8S20973C9__8S20973C8[6]),  6,10},
  {&(_tg__ZTV9S20973C10__8S20973C8[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C10__8S20973C8[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__8S20973C8[2]),  2,4},
  {&(_tg__ZTV8S20973C3__A1__8S20973C8[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C3__A1__8S20973C8[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20973C8[];
extern  VTBL_ENTRY _ZTV8S20973C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C8[];
Class_Descriptor cd_S20973C8 = {  "S20973C8", // class name
  bases_S20973C8, 22,
  &(vtc_S20973C8[0]), // expected_vtbl_contents
  &(vtt_S20973C8[0]), // expected_vtt_contents
  ABISELECT(320,260), // object size
  NSPAIRA(_ZTI8S20973C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20973C8),177, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20973C8),30, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20973C13  : virtual S20973C6 , S20973C4 {
  virtual void  v45(); // _ZN9S20973C133v45Ev
  virtual void  v46(); // _ZN9S20973C133v46Ev
  virtual void  v47(); // _ZN9S20973C133v47Ev
  ~S20973C13(); // tgen
  S20973C13(); // tgen
};
//SIG(-1 S20973C13) C1{ VBC2{ BC3{ BC4{ v4 v5} v6 v7} BC4 v8 v9 v10 v11 FL} BC3 v1 v2 v3}


void  S20973C13 ::v45(){vfunc_called(this, "_ZN9S20973C133v45Ev");}
void  S20973C13 ::v46(){vfunc_called(this, "_ZN9S20973C133v46Ev");}
void  S20973C13 ::v47(){vfunc_called(this, "_ZN9S20973C133v47Ev");}
S20973C13 ::~S20973C13(){ note_dtor("S20973C13", this);} // tgen
S20973C13 ::S20973C13(){ note_ctor("S20973C13", this);} // tgen

static void Test_S20973C13()
{
  extern Class_Descriptor cd_S20973C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20973C13, buf);
    S20973C13 *dp, &lv = *(dp=new (buf) S20973C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20973C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C13)");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(8,4), "S20973C13");
    check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(8,4), "S20973C13");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(16,8), "S20973C13");
    check_base_class_offset(lv, (S20973C6*), ABISELECT(8,4), "S20973C13");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), 0, "S20973C13");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*), 0, "S20973C13");
    test_class_info(&lv, &cd_S20973C13);
    dp->~S20973C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C13(Test_S20973C13, "S20973C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20973C13C1Ev();
extern void _ZN9S20973C13D1Ev();
Name_Map name_map_S20973C13[] = {
  NSPAIR(_ZN9S20973C13C1Ev),
  NSPAIR(_ZN9S20973C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
static Base_Class bases_S20973C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20973C5_nt,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(8,4), //bcp->offset
    10, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20973C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S20973C13[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY vtc_S20973C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV9S20973C13[];
static  VTT_ENTRY vtt_S20973C13[] = {
  {&(_ZTV9S20973C13[3]),  3,32},
  {&(_ZTV9S20973C13[20]),  20,32},
  {&(_ZTV9S20973C13[30]),  30,32},
};
extern VTBL_ENTRY _ZTI9S20973C13[];
extern  VTBL_ENTRY _ZTV9S20973C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C13[];
Class_Descriptor cd_S20973C13 = {  "S20973C13", // class name
  bases_S20973C13, 6,
  &(vtc_S20973C13[0]), // expected_vtbl_contents
  &(vtt_S20973C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20973C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20973C13),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20973C13),3, //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  S20973C12  : S20973C10 , virtual S20973C13 , S20973C9 , virtual S20973C3 {
  int s20973c12f0;
  virtual void  v48(); // _ZN9S20973C123v48Ev
  virtual void  v49(); // _ZN9S20973C123v49Ev
  ~S20973C12(); // tgen
  S20973C12(); // tgen
};
//SIG(-1 S20973C12) C1{ BC2{ BC3{ v3 v4} BC4{ v5 v6 v7 v8 v9 v10 v11 FL[10] Fp FL} VBC5{ BC6{ BC3 v12 v13} BC3 v14 v15 v16 v17 FL} v18 v19 Fp} VBC7{ VBC5 BC6 v20 v21 v22} BC8{ VBC4 VBC5 VBC2 BC9{ VBC6 BC3 v23 v24 v25 v26 v27 v28 v29 v30} BC6 v31 v32 v33 v34 v35 v36 v37 Fc Fs} VBC9 v1 v2 Fi}


void  S20973C12 ::v48(){vfunc_called(this, "_ZN9S20973C123v48Ev");}
void  S20973C12 ::v49(){vfunc_called(this, "_ZN9S20973C123v49Ev");}
S20973C12 ::~S20973C12(){ note_dtor("S20973C12", this);} // tgen
S20973C12 ::S20973C12(){ note_ctor("S20973C12", this);} // tgen

static void Test_S20973C12()
{
  extern Class_Descriptor cd_S20973C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(53,88)];
    init_test(&cd_S20973C12, buf);
    S20973C12 *dp, &lv = *(dp=new (buf) S20973C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,348), "sizeof(S20973C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C12)");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*), 0, "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C10*), ABISELECT(8,4), "S20973C12");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(144,120), "S20973C12");
    check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(144,120), "S20973C12");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(152,124), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C10*), ABISELECT(144,120), "S20973C12");
    check_base_class_offset(lv, (S20973C6*)(S20973C13*), ABISELECT(144,120), "S20973C12");
    check_base_class_offset(lv, (S20973C6*)(S20973C9*), ABISELECT(144,120), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C10*), ABISELECT(144,120), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C10*), 0, "S20973C12");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C13*), ABISELECT(168,136), "S20973C12");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C13*), ABISELECT(168,136), "S20973C12");
    check_base_class_offset(lv, (S20973C13*), ABISELECT(168,136), "S20973C12");
    /*is_ambiguous_... S20973C9::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C9*), ABISELECT(176,140), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*), ABISELECT(280,236), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C10*), ABISELECT(288,240), "S20973C12");
    check_base_class_offset(lv, (S20973C10*)(S20973C9*), ABISELECT(280,236), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(400,340), "S20973C12");
    check_base_class_offset(lv, (S20973C4*)(S20973C3*)(S20973C9*), ABISELECT(400,340), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C3*), ABISELECT(400,340), "S20973C12");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*)(S20973C9*), ABISELECT(120,104), "S20973C12");
    check_base_class_offset(lv, (S20973C3*)(S20973C9*), ABISELECT(120,104), "S20973C12");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C9*), ABISELECT(128,108), "S20973C12");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C9*), ABISELECT(128,108), "S20973C12");
    check_base_class_offset(lv, (S20973C9*), ABISELECT(120,104), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*), ABISELECT(408,344), "S20973C12");
    /*is_ambiguous_... S20973C12::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C3*), ABISELECT(408,344), "S20973C12");
    check_field_offset(lv, s20973c12f0, ABISELECT(140,116), "S20973C12.s20973c12f0");
    test_class_info(&lv, &cd_S20973C12);
    dp->~S20973C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C12(Test_S20973C12, "S20973C12", ABISELECT(416,348));

#else // __cplusplus

extern void _ZN9S20973C12C1Ev();
extern void _ZN9S20973C12D1Ev();
Name_Map name_map_S20973C12[] = {
  NSPAIR(_ZN9S20973C12C1Ev),
  NSPAIR(_ZN9S20973C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C13;
extern VTBL_ENTRY _ZTI9S20973C13[];
extern  VTBL_ENTRY _ZTV9S20973C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C13[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C9;
extern VTBL_ENTRY _ZTI8S20973C9[];
extern  VTBL_ENTRY _ZTV8S20973C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C9[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
static Base_Class bases_S20973C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(144,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
    3, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(144,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(152,124), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(144,120), //bcp->offset
    52, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20973C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20973C5_nt,    ABISELECT(168,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(168,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20973C13,    ABISELECT(168,136), //bcp->offset
    74, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C7,    ABISELECT(176,140), //bcp->offset
    91, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(280,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(288,240), //bcp->offset
    125, //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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(280,236), //bcp->offset
    107, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(400,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(400,340), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(120,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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(120,104), //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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(128,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
    21, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(128,108), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20973C9,    ABISELECT(120,104), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20973C5_nt,    ABISELECT(408,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
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(408,344), //bcp->offset
    144, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20973C12[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN9S20973C123v48Ev();
extern void _ZN9S20973C123v49Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY vtc_S20973C12[] = {
  ABISELECT(408,344),
  ABISELECT(400,340),
  ABISELECT(280,236),
  ABISELECT(176,140),
  ABISELECT(168,136),
  ABISELECT(144,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v49Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(160,132),
  ABISELECT(24,16),
  ABISELECT(56,36),
  ABISELECT(280,236),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  ABISELECT(-288,-240),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-340),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-408,-344),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern VTBL_ENTRY _ZTV9S20973C12[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__A__9S20973C12[] = {
  ABISELECT(144,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C10__A__9S20973C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__A__9S20973C12[] = {
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C9__9S20973C12[] = {
  ABISELECT(160,132),
  ABISELECT(24,16),
  ABISELECT(56,36),
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C38S20973C9__9S20973C12[] = {
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C38S20973C9__9S20973C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__8S20973C9__9S20973C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C9__9S20973C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C9__9S20973C12[] = {
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C9__9S20973C12[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-160,-132),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A1__8S20973C9__9S20973C12[] = {
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A1__8S20973C9__9S20973C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C13__9S20973C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C13__9S20973C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__9S20973C13__9S20973C12[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__A1__9S20973C12[] = {
  ABISELECT(-136,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C10__A1__9S20973C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,116),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__A1__9S20973C12[] = {
  ABISELECT(128,112),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__9S20973C12[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C3__A1__9S20973C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
static  VTT_ENTRY vtt_S20973C12[] = {
  {&(_ZTV9S20973C12[8]),  8,167},
  {&(_tg__ZTV9S20973C10__A__9S20973C12[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C10__A__9S20973C12[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__A__9S20973C12[2]),  2,4},
  {&(_tg__ZTV8S20973C9__9S20973C12[6]),  6,23},
  {&(_tg__ZTV8S20973C38S20973C9__9S20973C12[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C38S20973C9__9S20973C12[6]),  6,10},
  {&(_tg__ZTV8S20973C7__8S20973C9__9S20973C12[9]),  9,16},
  {&(_tg__ZTV8S20973C6__8S20973C9__9S20973C12[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C9__9S20973C12[2]),  2,4},
  {&(_tg__ZTV9S20973C10__8S20973C9__9S20973C12[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A1__8S20973C9__9S20973C12[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A1__8S20973C9__9S20973C12[6]),  6,10},
  {&(_ZTV9S20973C12[62]),  62,167},
  {&(_ZTV9S20973C12[72]),  72,167},
  {&(_ZTV9S20973C12[84]),  84,167},
  {&(_ZTV9S20973C12[29]),  29,167},
  {&(_ZTV9S20973C12[100]),  100,167},
  {&(_ZTV9S20973C12[121]),  121,167},
  {&(_ZTV9S20973C12[127]),  127,167},
  {&(_ZTV9S20973C12[140]),  140,167},
  {&(_ZTV9S20973C12[157]),  157,167},
  {&(_tg__ZTV9S20973C13__9S20973C12[3]),  3,10},
  {&(_tg__ZTV8S20973C6__9S20973C13__9S20973C12[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__9S20973C13__9S20973C12[2]),  2,4},
  {&(_tg__ZTV9S20973C10__A1__9S20973C12[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C10__A1__9S20973C12[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__A1__9S20973C12[2]),  2,4},
  {&(_tg__ZTV8S20973C3__A1__9S20973C12[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C3__A1__9S20973C12[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S20973C12[];
extern  VTBL_ENTRY _ZTV9S20973C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C12[];
Class_Descriptor cd_S20973C12 = {  "S20973C12", // class name
  bases_S20973C12, 23,
  &(vtc_S20973C12[0]), // expected_vtbl_contents
  &(vtt_S20973C12[0]), // expected_vtt_contents
  ABISELECT(416,348), // object size
  NSPAIRA(_ZTI9S20973C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20973C12),167, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20973C12),30, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20973C11  : S20973C7 , S20973C4 , virtual S20973C6 , S20973C12 {
  void *s20973c11f0;
  __tsi64 s20973c11f1[5];
  virtual  ~S20973C11(); // _ZN9S20973C11D2Ev
  virtual void  v50(); // _ZN9S20973C113v50Ev
  virtual void  v51(); // _ZN9S20973C113v51Ev
  virtual void  v52(); // _ZN9S20973C113v52Ev
  S20973C11(); // tgen
};
//SIG(-1 S20973C11) C1{ BC2{ v4 v5 v6 v7 v8 v9 v10 FL[10] Fp FL} BC3{ BC4{ v11 v12} v13 v14} VBC5{ BC3 BC4 v15 v16 v17 v18 FL} BC6{ BC7{ BC4 BC2 VBC5 v19 v20 Fp} VBC8{ VBC5 BC3 v21 v22 v23} BC9{ VBC2 VBC5 VBC7 BC10{ VBC3 BC4 v24 v25 v26 v27 v28 v29 v30 v31} BC3 v32 v33 v34 v35 v36 v37 v38 Fc Fs} VBC10 v39 v40 Fi} vd v1 v2 v3 Fp FL[5]}


 S20973C11 ::~S20973C11(){ note_dtor("S20973C11", this);}
void  S20973C11 ::v50(){vfunc_called(this, "_ZN9S20973C113v50Ev");}
void  S20973C11 ::v51(){vfunc_called(this, "_ZN9S20973C113v51Ev");}
void  S20973C11 ::v52(){vfunc_called(this, "_ZN9S20973C113v52Ev");}
S20973C11 ::S20973C11(){ note_ctor("S20973C11", this);} // tgen

static void Test_S20973C11()
{
  extern Class_Descriptor cd_S20973C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,124)];
    init_test(&cd_S20973C11, buf);
    S20973C11 *dp, &lv = *(dp=new (buf) S20973C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,492), "sizeof(S20973C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C11)");
    /*is_ambiguous_... S20973C11::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*), 0, "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(104,96), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*), ABISELECT(104,96), "S20973C11");
    check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(304,264), "S20973C11");
    check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(304,264), "S20973C11");
    /*is_ambiguous_... S20973C6::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(312,268), "S20973C11");
    check_base_class_offset(lv, (S20973C6*), ABISELECT(304,264), "S20973C11");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C10*)(S20973C12*), ABISELECT(304,264), "S20973C11");
    check_base_class_offset(lv, (S20973C6*)(S20973C13*), ABISELECT(304,264), "S20973C11");
    check_base_class_offset(lv, (S20973C6*)(S20973C9*)(S20973C12*), ABISELECT(304,264), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C10*), ABISELECT(304,264), "S20973C11");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*)(S20973C12*), ABISELECT(112,100), "S20973C11");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C10*)(S20973C12*), ABISELECT(120,104), "S20973C11");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C10*)(S20973C12*), ABISELECT(112,100), "S20973C11");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C13*), ABISELECT(328,280), "S20973C11");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C13*), ABISELECT(328,280), "S20973C11");
    check_base_class_offset(lv, (S20973C13*)(S20973C12*), ABISELECT(328,280), "S20973C11");
    /*is_ambiguous_... S20973C9::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C9*)(S20973C12*), ABISELECT(336,284), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*), ABISELECT(440,380), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C10*), ABISELECT(448,384), "S20973C11");
    check_base_class_offset(lv, (S20973C10*)(S20973C9*)(S20973C12*), ABISELECT(440,380), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), ABISELECT(560,484), "S20973C11");
    check_base_class_offset(lv, (S20973C4*)(S20973C3*)(S20973C9*)(S20973C12*), ABISELECT(560,484), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C3*), ABISELECT(560,484), "S20973C11");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*)(S20973C9*)(S20973C12*), ABISELECT(232,204), "S20973C11");
    check_base_class_offset(lv, (S20973C3*)(S20973C9*)(S20973C12*), ABISELECT(232,204), "S20973C11");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C9*)(S20973C12*), ABISELECT(240,208), "S20973C11");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C9*)(S20973C12*), ABISELECT(240,208), "S20973C11");
    check_base_class_offset(lv, (S20973C9*)(S20973C12*), ABISELECT(232,204), "S20973C11");
    /*is_ambiguous_... S20973C11::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*), ABISELECT(568,488), "S20973C11");
    /*is_ambiguous_... S20973C12::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C3*)(S20973C12*), ABISELECT(568,488), "S20973C11");
    check_base_class_offset(lv, (S20973C12*), ABISELECT(112,100), "S20973C11");
    check_field_offset(lv, s20973c11f0, ABISELECT(256,220), "S20973C11.s20973c11f0");
    check_field_offset(lv, s20973c11f1, ABISELECT(264,224), "S20973C11.s20973c11f1");
    test_class_info(&lv, &cd_S20973C11);
    dp->~S20973C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C11(Test_S20973C11, "S20973C11", ABISELECT(576,492));

#else // __cplusplus

extern void _ZN9S20973C11C1Ev();
extern void _ZN9S20973C11D2Ev();
Name_Map name_map_S20973C11[] = {
  NSPAIR(_ZN9S20973C11C1Ev),
  NSPAIR(_ZN9S20973C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C13;
extern VTBL_ENTRY _ZTI9S20973C13[];
extern  VTBL_ENTRY _ZTV9S20973C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C13[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C9;
extern VTBL_ENTRY _ZTI8S20973C9[];
extern  VTBL_ENTRY _ZTV8S20973C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C9[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C12;
extern VTBL_ENTRY _ZTI9S20973C12[];
extern  VTBL_ENTRY _ZTV9S20973C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C12[];
static Base_Class bases_S20973C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20973C5_nt,    ABISELECT(104,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
    17, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(104,96), //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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20973C5_nt,    ABISELECT(304,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(304,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(312,268), //bcp->offset
    96, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(304,264), //bcp->offset
    78, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_nt,    ABISELECT(112,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
    19, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(120,104), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(112,100), //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
    21, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(328,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(328,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
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20973C13,    ABISELECT(328,280), //bcp->offset
    100, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20973C7,    ABISELECT(336,284), //bcp->offset
    117, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(440,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(448,384), //bcp->offset
    151, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(440,380), //bcp->offset
    133, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(560,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
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(560,484), //bcp->offset
    160, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(232,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(232,204), //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
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(240,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
    24, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(240,208), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20973C9,    ABISELECT(232,204), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(568,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
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(568,488), //bcp->offset
    170, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20973C12,    ABISELECT(112,100), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //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 _ZTI9S20973C11[];
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN9S20973C11D1Ev();
extern void _ZN9S20973C11D0Ev();
extern void _ZN9S20973C113v50Ev();
extern void _ZN9S20973C113v51Ev();
extern void _ZN9S20973C113v52Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN9S20973C123v48Ev();
extern void _ZN9S20973C123v49Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY vtc_S20973C11[] = {
  ABISELECT(568,488),
  ABISELECT(560,484),
  ABISELECT(440,380),
  ABISELECT(336,284),
  ABISELECT(328,280),
  ABISELECT(304,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  (VTBL_ENTRY)&_ZN9S20973C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20973C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v50Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v51Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v52Ev,
  ABISELECT(-104,-96),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  ABISELECT(456,388),
  ABISELECT(448,384),
  ABISELECT(328,280),
  ABISELECT(224,184),
  ABISELECT(216,180),
  ABISELECT(192,164),
  ABISELECT(-112,-100),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v49Ev,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(208,176),
  ABISELECT(72,60),
  ABISELECT(104,80),
  ABISELECT(328,280),
  ABISELECT(-232,-204),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
  ABISELECT(-240,-208),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-264),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-312,-268),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-328,-280),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-284),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-440,-380),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  ABISELECT(-448,-384),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-484),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-568,-488),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern VTBL_ENTRY _ZTV9S20973C11[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN9S20973C123v48Ev();
extern void _ZN9S20973C123v49Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C12__9S20973C11[] = {
  ABISELECT(456,388),
  ABISELECT(448,384),
  ABISELECT(328,280),
  ABISELECT(224,184),
  ABISELECT(216,180),
  ABISELECT(192,164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v49Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C109S20973C12__9S20973C11[] = {
  ABISELECT(192,164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C109S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-164),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C109S20973C12__9S20973C11[] = {
  ABISELECT(-200,-168),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C99S20973C12__9S20973C11[] = {
  ABISELECT(208,176),
  ABISELECT(72,60),
  ABISELECT(104,80),
  ABISELECT(328,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C38S20973C99S20973C12__9S20973C11[] = {
  ABISELECT(328,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C38S20973C99S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-328,-280),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__8S20973C99S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C99S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C99S20973C12__9S20973C11[] = {
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C99S20973C12__9S20973C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-208,-176),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A1__8S20973C99S20973C12__9S20973C11[] = {
  ABISELECT(-216,-180),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A1__8S20973C99S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-328,-280),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-164),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C12__9S20973C11[] = {
  ABISELECT(-200,-168),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C13__9S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-180),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C9__9S20973C12__9S20973C11[] = {
  ABISELECT(208,176),
  ABISELECT(72,60),
  ABISELECT(104,80),
  ABISELECT(328,280),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__A1__9S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-184),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__A1__9S20973C12__9S20973C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-328,-280),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A2__9S20973C12__9S20973C11[] = {
  ABISELECT(-336,-284),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A2__9S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-448,-384),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__9S20973C12__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-456,-388),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C13__9S20973C11[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C13__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__9S20973C13__9S20973C11[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__A1__9S20973C11[] = {
  ABISELECT(-136,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C10__A1__9S20973C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,116),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__A1__9S20973C11[] = {
  ABISELECT(128,112),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__9S20973C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C3__A1__9S20973C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
static  VTT_ENTRY vtt_S20973C11[] = {
  {&(_ZTV9S20973C11[8]),  8,193},
  {&(_tg__ZTV9S20973C12__9S20973C11[8]),  8,14},
  {&(_tg__ZTV9S20973C109S20973C12__9S20973C11[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C109S20973C12__9S20973C11[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C109S20973C12__9S20973C11[2]),  2,4},
  {&(_tg__ZTV8S20973C99S20973C12__9S20973C11[6]),  6,23},
  {&(_tg__ZTV8S20973C38S20973C99S20973C12__9S20973C11[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C38S20973C99S20973C12__9S20973C11[6]),  6,10},
  {&(_tg__ZTV8S20973C7__8S20973C99S20973C12__9S20973C11[9]),  9,16},
  {&(_tg__ZTV8S20973C6__8S20973C99S20973C12__9S20973C11[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C99S20973C12__9S20973C11[2]),  2,4},
  {&(_tg__ZTV9S20973C10__8S20973C99S20973C12__9S20973C11[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A1__8S20973C99S20973C12__9S20973C11[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A1__8S20973C99S20973C12__9S20973C11[6]),  6,10},
  {&(_tg__ZTV8S20973C6__9S20973C12__9S20973C11[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C12__9S20973C11[2]),  2,4},
  {&(_tg__ZTV9S20973C13__9S20973C12__9S20973C11[10]),  10,17},
  {&(_tg__ZTV8S20973C9__9S20973C12__9S20973C11[6]),  6,23},
  {&(_tg__ZTV8S20973C7__A1__9S20973C12__9S20973C11[9]),  9,16},
  {&(_tg__ZTV9S20973C10__A1__9S20973C12__9S20973C11[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A2__9S20973C12__9S20973C11[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A2__9S20973C12__9S20973C11[6]),  6,10},
  {&(_tg__ZTV8S20973C3__A1__9S20973C12__9S20973C11[13]),  13,23},
  {&(_ZTV9S20973C11[88]),  88,193},
  {&(_ZTV9S20973C11[98]),  98,193},
  {&(_ZTV9S20973C11[34]),  34,193},
  {&(_ZTV9S20973C11[110]),  110,193},
  {&(_ZTV9S20973C11[55]),  55,193},
  {&(_ZTV9S20973C11[126]),  126,193},
  {&(_ZTV9S20973C11[147]),  147,193},
  {&(_ZTV9S20973C11[153]),  153,193},
  {&(_ZTV9S20973C11[166]),  166,193},
  {&(_ZTV9S20973C11[183]),  183,193},
  {&(_tg__ZTV9S20973C13__9S20973C11[3]),  3,10},
  {&(_tg__ZTV8S20973C6__9S20973C13__9S20973C11[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__9S20973C13__9S20973C11[2]),  2,4},
  {&(_tg__ZTV9S20973C10__A1__9S20973C11[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C10__A1__9S20973C11[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__A1__9S20973C11[2]),  2,4},
  {&(_tg__ZTV8S20973C3__A1__9S20973C11[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C3__A1__9S20973C11[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S20973C11[];
extern  VTBL_ENTRY _ZTV9S20973C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C11[];
Class_Descriptor cd_S20973C11 = {  "S20973C11", // class name
  bases_S20973C11, 27,
  &(vtc_S20973C11[0]), // expected_vtbl_contents
  &(vtt_S20973C11[0]), // expected_vtt_contents
  ABISELECT(576,492), // object size
  NSPAIRA(_ZTI9S20973C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20973C11),193, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20973C11),41, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20973C1  : virtual S20973C2 , virtual S20973C7 , virtual S20973C8 , virtual S20973C11 {
  virtual  ~S20973C1(); // _ZN8S20973C1D2Ev
  virtual void  v1(); // _ZN8S20973C12v1Ev
  virtual void  v2(); // _ZN8S20973C12v2Ev
  virtual void  v3(); // _ZN8S20973C12v3Ev
  S20973C1(); // tgen
};
//SIG(1 S20973C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v4 v5} v6 v7} BC5 v8 v9 v10 v11 v12 v13 v14 v15} VBC6{ BC4 BC5 v16 v17 v18 v19 FL} v20 v21 v22 v23 v24 v25 Fi[2]} VBC7{ v26 v27 v28 v29 v30 v31 v32 FL[10] Fp FL} VBC8{ VBC4 VBC9{ VBC7 VBC6 VBC10{ BC5 BC7 VBC6 v33 v34 Fp} BC3 BC4 v35 v36 v37 v38 v39 v40 v41 Fc Fs} BC6 BC2 v42 v43 v44} VBC11{ BC7 BC4 VBC6 BC12{ BC10 VBC13{ VBC6 BC4 v45 v46 v47} BC9 VBC3 v48 v49 Fi} vd v50 v51 v52 Fp FL[5]} vd v1 v2 v3}


 S20973C1 ::~S20973C1(){ note_dtor("S20973C1", this);}
void  S20973C1 ::v1(){vfunc_called(this, "_ZN8S20973C12v1Ev");}
void  S20973C1 ::v2(){vfunc_called(this, "_ZN8S20973C12v2Ev");}
void  S20973C1 ::v3(){vfunc_called(this, "_ZN8S20973C12v3Ev");}
S20973C1 ::S20973C1(){ note_ctor("S20973C1", this);} // tgen

static void Test_S20973C1()
{
  extern Class_Descriptor cd_S20973C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(82,136)];
    init_test(&cd_S20973C1, buf);
    S20973C1 *dp, &lv = *(dp=new (buf) S20973C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(648,540), "sizeof(S20973C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20973C1)");
    /*is_ambiguous_... S20973C1::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*), 0, "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C3*), 0, "S20973C1");
    /*is_ambiguous_... S20973C8::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C8*), 0, "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C3*)(S20973C9*), 0, "S20973C1");
    check_base_class_offset(lv, (S20973C4*)(S20973C3*)(S20973C9*)(S20973C12*)(S20973C11*), 0, "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*), ABISELECT(8,4), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C2 */ AMB_check_base_class_offset(lv, (S20973C3*)(S20973C2*), ABISELECT(8,4), "S20973C1");
    check_base_class_offset(lv, (S20973C3*)(S20973C2*)(S20973C8*), ABISELECT(8,4), "S20973C1");
    /*is_ambiguous_... S20973C12::S20973C3 */ AMB_check_base_class_offset(lv, (S20973C3*)(S20973C12*)(S20973C11*), ABISELECT(8,4), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*), ABISELECT(24,16), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C6*), ABISELECT(24,16), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*), ABISELECT(32,20), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C2 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C2*), ABISELECT(24,16), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C9*), ABISELECT(24,16), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C10*), ABISELECT(24,16), "S20973C1");
    check_base_class_offset(lv, (S20973C6*)(S20973C2*)(S20973C8*), ABISELECT(24,16), "S20973C1");
    check_base_class_offset(lv, (S20973C6*)(S20973C11*), ABISELECT(24,16), "S20973C1");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C10*)(S20973C12*)(S20973C11*), ABISELECT(24,16), "S20973C1");
    check_base_class_offset(lv, (S20973C6*)(S20973C13*), ABISELECT(24,16), "S20973C1");
    check_base_class_offset(lv, (S20973C6*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(24,16), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C2 */ AMB_check_base_class_offset(lv, (S20973C2*), ABISELECT(8,4), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*), ABISELECT(48,32), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C9*), ABISELECT(48,32), "S20973C1");
    /*is_ambiguous_... S20973C9::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(48,32), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*), ABISELECT(216,168), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C10*), ABISELECT(224,172), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C10*)(S20973C9*), ABISELECT(216,168), "S20973C1");
    check_base_class_offset(lv, (S20973C10*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(216,168), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*)(S20973C9*), ABISELECT(192,156), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C3*)(S20973C9*), ABISELECT(192,156), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C9*), ABISELECT(200,160), "S20973C1");
    /*is_ambiguous_... S20973C1::S20973C9 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C9*), ABISELECT(200,160), "S20973C1");
    check_base_class_offset(lv, (S20973C9*)(S20973C8*), ABISELECT(192,156), "S20973C1");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C6*)(S20973C8*), ABISELECT(152,128), "S20973C1");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C6*)(S20973C8*), ABISELECT(152,128), "S20973C1");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C6*)(S20973C8*), ABISELECT(160,132), "S20973C1");
    /*is_ambiguous_... S20973C8::S20973C6 */ AMB_check_base_class_offset(lv, (S20973C6*)(S20973C8*), ABISELECT(152,128), "S20973C1");
    check_base_class_offset(lv, (S20973C2*)(S20973C8*), ABISELECT(176,144), "S20973C1");
    check_base_class_offset(lv, (S20973C8*), ABISELECT(152,128), "S20973C1");
    /*is_ambiguous_... S20973C11::S20973C7 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C11*), ABISELECT(336,272), "S20973C1");
    /*is_ambiguous_... S20973C11::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C11*), ABISELECT(440,368), "S20973C1");
    /*is_ambiguous_... S20973C11::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C11*), ABISELECT(440,368), "S20973C1");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C10*)(S20973C12*)(S20973C11*), ABISELECT(448,372), "S20973C1");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C7*)(S20973C10*)(S20973C12*)(S20973C11*), ABISELECT(456,376), "S20973C1");
    /*is_ambiguous_... S20973C12::S20973C10 */ AMB_check_base_class_offset(lv, (S20973C10*)(S20973C12*)(S20973C11*), ABISELECT(448,372), "S20973C1");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C13*), ABISELECT(640,536), "S20973C1");
    /*is_ambiguous_... S20973C13::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C13*), ABISELECT(640,536), "S20973C1");
    check_base_class_offset(lv, (S20973C13*)(S20973C12*)(S20973C11*), ABISELECT(640,536), "S20973C1");
    /*is_ambiguous_... S20973C3::S20973C5_nt */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C3*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(568,476), "S20973C1");
    check_base_class_offset(lv, (S20973C3*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(568,476), "S20973C1");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C5_nt*)(S20973C4*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(576,480), "S20973C1");
    /*is_ambiguous_... S20973C9::S20973C4 */ AMB_check_base_class_offset(lv, (S20973C4*)(S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(576,480), "S20973C1");
    check_base_class_offset(lv, (S20973C9*)(S20973C12*)(S20973C11*), ABISELECT(568,476), "S20973C1");
    check_base_class_offset(lv, (S20973C12*)(S20973C11*), ABISELECT(448,372), "S20973C1");
    check_base_class_offset(lv, (S20973C11*), ABISELECT(336,272), "S20973C1");
    test_class_info(&lv, &cd_S20973C1);
    dp->~S20973C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20973C1(Test_S20973C1, "S20973C1", ABISELECT(648,540));

#else // __cplusplus

extern void _ZN8S20973C1C1Ev();
extern void _ZN8S20973C1D2Ev();
Name_Map name_map_S20973C1[] = {
  NSPAIR(_ZN8S20973C1C1Ev),
  NSPAIR(_ZN8S20973C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C2;
extern VTBL_ENTRY _ZTI8S20973C2[];
extern  VTBL_ENTRY _ZTV8S20973C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C2[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C9;
extern VTBL_ENTRY _ZTI8S20973C9[];
extern  VTBL_ENTRY _ZTV8S20973C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C9[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C6;
extern VTBL_ENTRY _ZTI8S20973C6[];
extern  VTBL_ENTRY _ZTV8S20973C6[];
extern Class_Descriptor cd_S20973C2;
extern VTBL_ENTRY _ZTI8S20973C2[];
extern  VTBL_ENTRY _ZTV8S20973C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C2[];
extern Class_Descriptor cd_S20973C8;
extern VTBL_ENTRY _ZTI8S20973C8[];
extern  VTBL_ENTRY _ZTV8S20973C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C8[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C7;
extern VTBL_ENTRY _ZTI8S20973C7[];
extern  VTBL_ENTRY _ZTV8S20973C7[];
extern Class_Descriptor cd_S20973C10;
extern VTBL_ENTRY _ZTI9S20973C10[];
extern  VTBL_ENTRY _ZTV9S20973C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C10[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C13;
extern VTBL_ENTRY _ZTI9S20973C13[];
extern  VTBL_ENTRY _ZTV9S20973C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C13[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C3;
extern VTBL_ENTRY _ZTI8S20973C3[];
extern  VTBL_ENTRY _ZTV8S20973C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C3[];
extern Class_Descriptor cd_S20973C5_nt;
extern VTBL_ENTRY _ZTI11S20973C5_nt[];
extern  VTBL_ENTRY _ZTV11S20973C5_nt[];
extern Class_Descriptor cd_S20973C4;
extern VTBL_ENTRY _ZTI8S20973C4[];
extern  VTBL_ENTRY _ZTV8S20973C4[];
extern Class_Descriptor cd_S20973C9;
extern VTBL_ENTRY _ZTI8S20973C9[];
extern  VTBL_ENTRY _ZTV8S20973C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C9[];
extern Class_Descriptor cd_S20973C12;
extern VTBL_ENTRY _ZTI9S20973C12[];
extern  VTBL_ENTRY _ZTV9S20973C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C12[];
extern Class_Descriptor cd_S20973C11;
extern VTBL_ENTRY _ZTI9S20973C11[];
extern  VTBL_ENTRY _ZTV9S20973C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20973C11[];
static Base_Class bases_S20973C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20973C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20973C4,    0, //bcp->offset
    -1, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20973C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20973C5_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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20973C4,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(32,20), //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(24,16), //bcp->offset
    62, //bcp->virtual_function_table_offset
    10, //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
    8, //immediately_derived
  0, 1},
  {&cd_S20973C2,    ABISELECT(8,4), //bcp->offset
    25, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C7,    ABISELECT(48,32), //bcp->offset
    84, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C5_nt,    ABISELECT(216,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(224,172), //bcp->offset
    237, //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
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(216,168), //bcp->offset
    219, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(192,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(192,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(200,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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(200,160), //bcp->offset
    213, //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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20973C9,    ABISELECT(192,156), //bcp->offset
    171, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(152,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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(152,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(160,132), //bcp->offset
    136, //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
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20973C6,    ABISELECT(152,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
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20973C2,    ABISELECT(176,144), //bcp->offset
    140, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20973C8,    ABISELECT(152,128), //bcp->offset
    100, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20973C7,    ABISELECT(336,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
    28, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(440,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(440,368), //bcp->offset
    300, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(448,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20973C7,    ABISELECT(456,376), //bcp->offset
    320, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20973C10,    ABISELECT(448,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(640,536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(640,536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20973C13,    ABISELECT(640,536), //bcp->offset
    358, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20973C5_nt,    ABISELECT(568,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20973C3,    ABISELECT(568,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20973C5_nt,    ABISELECT(576,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20973C4,    ABISELECT(576,480), //bcp->offset
    352, //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
    37, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20973C9,    ABISELECT(568,476), //bcp->offset
    329, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20973C12,    ABISELECT(448,372), //bcp->offset
    306, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20973C11,    ABISELECT(336,272), //bcp->offset
    246, //bcp->virtual_function_table_offset
    42, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20973C1[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C1D1Ev();
extern void _ZN8S20973C1D0Ev();
extern void _ZN8S20973C12v1Ev();
extern void _ZN8S20973C12v2Ev();
extern void _ZN8S20973C12v3Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN8S20973C83v42Ev();
extern void _ZN8S20973C83v43Ev();
extern void _ZN8S20973C83v44Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void ABISELECT(_ZTv0_n128_N8S20973C1D1Ev,_ZTv0_n64_N8S20973C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S20973C1D1Ev,_ZThn272_N8S20973C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20973C1D0Ev,_ZTv0_n64_N8S20973C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S20973C1D0Ev,_ZThn272_N8S20973C1D0Ev)() __attribute__((weak));
extern void _ZN9S20973C113v50Ev();
extern void _ZN9S20973C113v51Ev();
extern void _ZN9S20973C113v52Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN9S20973C123v48Ev();
extern void _ZN9S20973C123v49Ev();
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY vtc_S20973C1[] = {
  ABISELECT(640,536),
  ABISELECT(336,272),
  ABISELECT(216,168),
  ABISELECT(192,156),
  ABISELECT(152,128),
  ABISELECT(48,32),
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20973C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20973C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20973C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20973C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-124),
  ABISELECT(64,40),
  ABISELECT(-128,-112),
  ABISELECT(-104,-96),
  ABISELECT(40,28),
  ABISELECT(-152,-128),
  ABISELECT(-152,-128),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v44Ev,
  ABISELECT(-160,-132),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  ABISELECT(-152,-128),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-176,-144),
  ABISELECT(-176,-144),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-168,-140),
  ABISELECT(-144,-124),
  ABISELECT(-192,-156),
  ABISELECT(-192,-156),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
  ABISELECT(-200,-160),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-152),
  ABISELECT(-216,-168),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  ABISELECT(-224,-172),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(232,204),
  ABISELECT(112,100),
  ABISELECT(112,100),
  ABISELECT(112,100),
  ABISELECT(112,100),
  ABISELECT(104,96),
  ABISELECT(104,96),
  ABISELECT(104,96),
  ABISELECT(104,96),
  0,
  0,
  0,
  ABISELECT(-336,-272),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-268),
  ABISELECT(-336,-272),
  ABISELECT(-120,-104),
  ABISELECT(-288,-240),
  ABISELECT(304,264),
  ABISELECT(-312,-256),
  ABISELECT(-336,-272),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20973C1D1Ev,_ZTv0_n64_N8S20973C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20973C1D0Ev,_ZTv0_n64_N8S20973C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20973C113v50Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v51Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v52Ev,
  ABISELECT(-440,-368),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  ABISELECT(-440,-368),
  ABISELECT(-448,-372),
  ABISELECT(-232,-204),
  ABISELECT(-400,-340),
  ABISELECT(192,164),
  ABISELECT(-424,-356),
  ABISELECT(-448,-372),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v49Ev,
  ABISELECT(-456,-376),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  ABISELECT(-352,-308),
  ABISELECT(-544,-460),
  ABISELECT(-520,-444),
  ABISELECT(-568,-476),
  ABISELECT(-568,-476),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
  ABISELECT(-576,-480),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-616,-520),
  ABISELECT(-640,-536),
  (VTBL_ENTRY)&(_ZTI8S20973C1[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern VTBL_ENTRY _ZTV8S20973C1[];
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C2__8S20973C1[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C2__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C2__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A3__8S20973C2__8S20973C1[] = {
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__8S20973C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C3__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
extern void _ZN8S20973C83v42Ev();
extern void _ZN8S20973C83v43Ev();
extern void _ZN8S20973C83v44Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C8__8S20973C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(64,40),
  ABISELECT(-128,-112),
  ABISELECT(-104,-96),
  ABISELECT(40,28),
  ABISELECT(-152,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20973C83v44Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C28S20973C8__A1__8S20973C1[] = {
  ABISELECT(-152,-128),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-176,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__8S20973C28S20973C8__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(168,140),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C28S20973C8__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,144),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C28S20973C8__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(152,128),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A3__8S20973C28S20973C8__A1__8S20973C1[] = {
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S20973C2[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C8__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(152,128),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C9__8S20973C8__8S20973C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-168,-140),
  ABISELECT(-144,-124),
  ABISELECT(-192,-156),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__8S20973C8__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,96),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C8__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,112),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__8S20973C8__8S20973C1[] = {
  ABISELECT(120,108),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C8__8S20973C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-152),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A1__8S20973C8__8S20973C1[] = {
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C48S20973C9__A2__8S20973C8__8S20973C1[] = {
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C23v20Ev();
extern void _ZN8S20973C23v21Ev();
extern void _ZN8S20973C23v22Ev();
extern void _ZN8S20973C23v23Ev();
extern void _ZN8S20973C23v24Ev();
extern void _ZN8S20973C23v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C2__8S20973C8__8S20973C1[] = {
  ABISELECT(-152,-128),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-176,-144),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v24Ev,
  (VTBL_ENTRY)&_ZN8S20973C23v25Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__8S20973C8__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S20973C8[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C9__8S20973C1[] = {
  ABISELECT(24,12),
  ABISELECT(-168,-140),
  ABISELECT(-144,-124),
  ABISELECT(-192,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C38S20973C9__A1__8S20973C1[] = {
  ABISELECT(-192,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C38S20973C9__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,156),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__8S20973C9__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C9__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,140),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C9__8S20973C1[] = {
  ABISELECT(160,136),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C9__8S20973C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-152),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A1__8S20973C9__8S20973C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A1__8S20973C9__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,156),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C1[] = {
  ABISELECT(-192,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C10__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__8S20973C1[] = {
  ABISELECT(184,148),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
extern void _ZN9S20973C11D1Ev();
extern void _ZN9S20973C11D0Ev();
extern void _ZN9S20973C113v50Ev();
extern void _ZN9S20973C113v51Ev();
extern void _ZN9S20973C113v52Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C11__8S20973C1[] = {
  ABISELECT(-328,-268),
  ABISELECT(-336,-272),
  ABISELECT(-120,-104),
  ABISELECT(-288,-240),
  ABISELECT(304,264),
  ABISELECT(-312,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
  (VTBL_ENTRY)&_ZN9S20973C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20973C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v50Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v51Ev,
  (VTBL_ENTRY)&_ZN9S20973C113v52Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN9S20973C123v48Ev();
extern void _ZN9S20973C123v49Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C129S20973C11__8S20973C1[] = {
  ABISELECT(-440,-368),
  ABISELECT(-448,-372),
  ABISELECT(-232,-204),
  ABISELECT(-400,-340),
  ABISELECT(192,164),
  ABISELECT(-424,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v49Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C109S20973C129S20973C11__A1__8S20973C1[] = {
  ABISELECT(-424,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C109S20973C129S20973C11__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(424,356),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C109S20973C129S20973C11__A1__8S20973C1[] = {
  ABISELECT(416,352),
  (VTBL_ENTRY)&(_ZTI9S20973C10[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  ABISELECT(-352,-308),
  ABISELECT(-544,-460),
  ABISELECT(-520,-444),
  ABISELECT(-568,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C38S20973C99S20973C129S20973C11__A2__8S20973C1[] = {
  ABISELECT(-568,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__8S20973C38S20973C99S20973C129S20973C11__A2__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(568,476),
  (VTBL_ENTRY)&(_ZTI8S20973C3[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(520,444),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,460),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  ABISELECT(536,456),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-152),
  ABISELECT(352,308),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A1__8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  ABISELECT(344,304),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A1__8S20973C99S20973C129S20973C11__A1__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(568,476),
  (VTBL_ENTRY)&(_ZTI8S20973C9[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C129S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(424,356),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C129S20973C11__8S20973C1[] = {
  ABISELECT(416,352),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C13__9S20973C129S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-616,-520),
  ABISELECT(-192,-164),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C9__9S20973C129S20973C11__8S20973C1[] = {
  ABISELECT(-352,-308),
  ABISELECT(-544,-460),
  ABISELECT(-520,-444),
  ABISELECT(-568,-476),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__A1__9S20973C129S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(400,340),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__A1__9S20973C129S20973C11__8S20973C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-152),
  ABISELECT(232,204),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A2__9S20973C129S20973C11__8S20973C1[] = {
  ABISELECT(224,200),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A2__9S20973C129S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(448,372),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__9S20973C129S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(440,368),
  (VTBL_ENTRY)&(_ZTI9S20973C12[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(312,256),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C11__8S20973C1[] = {
  ABISELECT(304,252),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
extern void _ZN9S20973C123v48Ev();
extern void _ZN9S20973C123v49Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C12__9S20973C11__8S20973C1[] = {
  ABISELECT(-440,-368),
  ABISELECT(-448,-372),
  ABISELECT(-232,-204),
  ABISELECT(-400,-340),
  ABISELECT(192,164),
  ABISELECT(-424,-356),
  ABISELECT(-112,-100),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20973C123v49Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C13__9S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-616,-520),
  ABISELECT(-304,-264),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
extern void _ZN8S20973C93v35Ev();
extern void _ZN8S20973C93v36Ev();
extern void _ZN8S20973C93v37Ev();
extern void _ZN8S20973C93v38Ev();
extern void _ZN8S20973C93v39Ev();
extern void _ZN8S20973C93v40Ev();
extern void _ZN8S20973C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C99S20973C12__9S20973C11__8S20973C1[] = {
  ABISELECT(-352,-308),
  ABISELECT(-544,-460),
  ABISELECT(-520,-444),
  ABISELECT(-568,-476),
  ABISELECT(-232,-204),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v39Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20973C93v41Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C7__A2__9S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(288,240),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN9S20973C103v33Ev();
extern void _ZN9S20973C103v34Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C10__A1__9S20973C11__8S20973C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-152),
  ABISELECT(120,104),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20973C103v34Ev,
};
extern void _ZN8S20973C73v26Ev();
extern void _ZN8S20973C73v27Ev();
extern void _ZN8S20973C73v28Ev();
extern void _ZN8S20973C73v29Ev();
extern void _ZN8S20973C73v30Ev();
extern void _ZN8S20973C73v31Ev();
extern void _ZN8S20973C73v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C79S20973C10__A3__9S20973C11__8S20973C1[] = {
  ABISELECT(112,100),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN8S20973C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v28Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v29Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v30Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v31Ev,
  (VTBL_ENTRY)&_ZN8S20973C73v32Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C4__A3__9S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(336,272),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C32v8Ev();
extern void _ZN8S20973C32v9Ev();
extern void _ZN8S20973C33v10Ev();
extern void _ZN8S20973C33v11Ev();
extern void _ZN8S20973C33v12Ev();
extern void _ZN8S20973C33v13Ev();
extern void _ZN8S20973C33v14Ev();
extern void _ZN8S20973C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C3__A1__9S20973C11__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(328,268),
  (VTBL_ENTRY)&(_ZTI9S20973C11[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20973C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20973C33v15Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN9S20973C133v45Ev();
extern void _ZN9S20973C133v46Ev();
extern void _ZN9S20973C133v47Ev();
static  VTBL_ENTRY _tg__ZTV9S20973C13__8S20973C1[] = {
  ABISELECT(-616,-520),
  0,
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v45Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v46Ev,
  (VTBL_ENTRY)&_ZN9S20973C133v47Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
extern void _ZN8S20973C42v6Ev();
extern void _ZN8S20973C42v7Ev();
extern void _ZN8S20973C63v16Ev();
extern void _ZN8S20973C63v17Ev();
extern void _ZN8S20973C63v18Ev();
extern void _ZN8S20973C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20973C6__9S20973C13__8S20973C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(616,520),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20973C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20973C63v19Ev,
};
extern void _ZN11S20973C5_nt2v4Ev();
extern void _ZN11S20973C5_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S20973C5_nt8S20973C6__A1__9S20973C13__8S20973C1[] = {
  ABISELECT(608,516),
  (VTBL_ENTRY)&(_ZTI9S20973C13[0]),
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20973C5_nt2v5Ev,
};
static  VTT_ENTRY vtt_S20973C1[] = {
  {&(_ZTV8S20973C1[16]),  16,375},
  {&(_ZTV8S20973C1[46]),  46,375},
  {&(_ZTV8S20973C1[46]),  46,375},
  {&(_ZTV8S20973C1[16]),  16,375},
  {&(_ZTV8S20973C1[72]),  72,375},
  {&(_ZTV8S20973C1[82]),  82,375},
  {&(_ZTV8S20973C1[93]),  93,375},
  {&(_ZTV8S20973C1[125]),  125,375},
  {&(_ZTV8S20973C1[196]),  196,375},
  {&(_ZTV8S20973C1[233]),  233,375},
  {&(_ZTV8S20973C1[239]),  239,375},
  {&(_ZTV8S20973C1[215]),  215,375},
  {&(_ZTV8S20973C1[138]),  138,375},
  {&(_ZTV8S20973C1[155]),  155,375},
  {&(_ZTV8S20973C1[288]),  288,375},
  {&(_ZTV8S20973C1[302]),  302,375},
  {&(_ZTV8S20973C1[314]),  314,375},
  {&(_ZTV8S20973C1[322]),  322,375},
  {&(_ZTV8S20973C1[368]),  368,375},
  {&(_ZTV8S20973C1[335]),  335,375},
  {&(_ZTV8S20973C1[354]),  354,375},
  {&(_tg__ZTV8S20973C2__8S20973C1[15]),  15,31},
  {&(_tg__ZTV8S20973C2__8S20973C1[15]),  15,31},
  {&(_tg__ZTV8S20973C4__8S20973C2__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C6__8S20973C2__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A3__8S20973C2__8S20973C1[2]),  2,4},
  {&(_tg__ZTV8S20973C3__8S20973C1[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C3__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C8__8S20973C1[8]),  8,19},
  {&(_tg__ZTV8S20973C28S20973C8__A1__8S20973C1[15]),  15,31},
  {&(_tg__ZTV8S20973C3__8S20973C28S20973C8__A1__8S20973C1[13]),  13,23},
  {&(_tg__ZTV8S20973C4__8S20973C28S20973C8__A1__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C6__8S20973C28S20973C8__A1__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A3__8S20973C28S20973C8__A1__8S20973C1[2]),  2,4},
  {&(_tg__ZTV8S20973C4__8S20973C8__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C9__8S20973C8__8S20973C1[25]),  25,42},
  {&(_tg__ZTV8S20973C7__8S20973C8__8S20973C1[9]),  9,16},
  {&(_tg__ZTV8S20973C6__8S20973C8__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__8S20973C8__8S20973C1[2]),  2,4},
  {&(_tg__ZTV9S20973C10__8S20973C8__8S20973C1[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A1__8S20973C8__8S20973C1[2]),  2,9},
  {&(_tg__ZTV8S20973C48S20973C9__A2__8S20973C8__8S20973C1[2]),  2,6},
  {&(_tg__ZTV8S20973C2__8S20973C8__8S20973C1[15]),  15,31},
  {&(_tg__ZTV8S20973C3__A1__8S20973C8__8S20973C1[13]),  13,23},
  {&(_tg__ZTV8S20973C9__8S20973C1[6]),  6,23},
  {&(_tg__ZTV8S20973C38S20973C9__A1__8S20973C1[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C38S20973C9__A1__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C7__8S20973C9__8S20973C1[9]),  9,16},
  {&(_tg__ZTV8S20973C6__8S20973C9__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C9__8S20973C1[2]),  2,4},
  {&(_tg__ZTV9S20973C10__8S20973C9__8S20973C1[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A1__8S20973C9__8S20973C1[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A1__8S20973C9__8S20973C1[6]),  6,10},
  {&(_tg__ZTV9S20973C10__8S20973C1[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C10__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C10__8S20973C1[2]),  2,4},
  {&(_tg__ZTV9S20973C11__8S20973C1[8]),  8,20},
  {&(_tg__ZTV9S20973C129S20973C11__8S20973C1[8]),  8,14},
  {&(_tg__ZTV9S20973C109S20973C129S20973C11__A1__8S20973C1[3]),  3,7},
  {&(_tg__ZTV8S20973C6__9S20973C109S20973C129S20973C11__A1__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C109S20973C129S20973C11__A1__8S20973C1[2]),  2,4},
  {&(_tg__ZTV8S20973C99S20973C129S20973C11__A1__8S20973C1[6]),  6,23},
  {&(_tg__ZTV8S20973C38S20973C99S20973C129S20973C11__A2__8S20973C1[3]),  3,13},
  {&(_tg__ZTV8S20973C4__8S20973C38S20973C99S20973C129S20973C11__A2__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C7__8S20973C99S20973C129S20973C11__A1__8S20973C1[9]),  9,16},
  {&(_tg__ZTV8S20973C6__8S20973C99S20973C129S20973C11__A1__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__8S20973C99S20973C129S20973C11__A1__8S20973C1[2]),  2,4},
  {&(_tg__ZTV9S20973C10__8S20973C99S20973C129S20973C11__A1__8S20973C1[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A1__8S20973C99S20973C129S20973C11__A1__8S20973C1[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A1__8S20973C99S20973C129S20973C11__A1__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C6__9S20973C129S20973C11__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C129S20973C11__8S20973C1[2]),  2,4},
  {&(_tg__ZTV9S20973C13__9S20973C129S20973C11__8S20973C1[10]),  10,17},
  {&(_tg__ZTV8S20973C9__9S20973C129S20973C11__8S20973C1[6]),  6,23},
  {&(_tg__ZTV8S20973C7__A1__9S20973C129S20973C11__8S20973C1[9]),  9,16},
  {&(_tg__ZTV9S20973C10__A1__9S20973C129S20973C11__8S20973C1[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A2__9S20973C129S20973C11__8S20973C1[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A2__9S20973C129S20973C11__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C3__A1__9S20973C129S20973C11__8S20973C1[13]),  13,23},
  {&(_tg__ZTV8S20973C6__9S20973C11__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A2__9S20973C11__8S20973C1[2]),  2,4},
  {&(_tg__ZTV9S20973C12__9S20973C11__8S20973C1[8]),  8,14},
  {&(_tg__ZTV9S20973C13__9S20973C11__8S20973C1[10]),  10,17},
  {&(_tg__ZTV8S20973C99S20973C12__9S20973C11__8S20973C1[6]),  6,23},
  {&(_tg__ZTV8S20973C7__A2__9S20973C11__8S20973C1[9]),  9,16},
  {&(_tg__ZTV9S20973C10__A1__9S20973C11__8S20973C1[14]),  14,18},
  {&(_tg__ZTV8S20973C79S20973C10__A3__9S20973C11__8S20973C1[2]),  2,9},
  {&(_tg__ZTV8S20973C4__A3__9S20973C11__8S20973C1[6]),  6,10},
  {&(_tg__ZTV8S20973C3__A1__9S20973C11__8S20973C1[13]),  13,23},
  {&(_tg__ZTV9S20973C13__8S20973C1[3]),  3,10},
  {&(_tg__ZTV8S20973C6__9S20973C13__8S20973C1[10]),  10,18},
  {&(_tg__ZTV11S20973C5_nt8S20973C6__A1__9S20973C13__8S20973C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S20973C1[];
extern  VTBL_ENTRY _ZTV8S20973C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20973C1[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20973C1D0Ev,_ZTv0_n64_N8S20973C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20973C1D0Ev,_ZThn272_N8S20973C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20973C1D1Ev,_ZTv0_n64_N8S20973C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20973C1D1Ev,_ZThn272_N8S20973C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20973C1 = {  "S20973C1", // class name
  bases_S20973C1, 40,
  &(vtc_S20973C1[0]), // expected_vtbl_contents
  &(vtt_S20973C1[0]), // expected_vtt_contents
  ABISELECT(648,540), // object size
  NSPAIRA(_ZTI8S20973C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20973C1),375, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20973C1),92, //virtual table table var
  40, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C2_nt  {
  void *s7093c2f0;
  virtual void  v7(); // _ZN10S7093C2_nt2v7Ev
  virtual void  v8(); // _ZN10S7093C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7093C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7093C2_nt3v10Ev
  virtual void  v11(); // _ZN10S7093C2_nt3v11Ev
  virtual void  v12(); // _ZN10S7093C2_nt3v12Ev
  ~S7093C2_nt(); // tgen
  S7093C2_nt(); // tgen
};
//SIG(-1 S7093C2_nt) C1{ v1 v2 v3 v4 v5 v6 Fp}


void  S7093C2_nt ::v7(){vfunc_called(this, "_ZN10S7093C2_nt2v7Ev");}
void  S7093C2_nt ::v8(){vfunc_called(this, "_ZN10S7093C2_nt2v8Ev");}
void  S7093C2_nt ::v9(){vfunc_called(this, "_ZN10S7093C2_nt2v9Ev");}
void  S7093C2_nt ::v10(){vfunc_called(this, "_ZN10S7093C2_nt3v10Ev");}
void  S7093C2_nt ::v11(){vfunc_called(this, "_ZN10S7093C2_nt3v11Ev");}
void  S7093C2_nt ::v12(){vfunc_called(this, "_ZN10S7093C2_nt3v12Ev");}
S7093C2_nt ::~S7093C2_nt(){ note_dtor("S7093C2_nt", this);} // tgen
S7093C2_nt ::S7093C2_nt(){ note_ctor("S7093C2_nt", this);} // tgen

//skip512 S7093C2_nt

#else // __cplusplus

extern void _ZN10S7093C2_ntC1Ev();
extern void _ZN10S7093C2_ntD1Ev();
Name_Map name_map_S7093C2_nt[] = {
  NSPAIR(_ZN10S7093C2_ntC1Ev),
  NSPAIR(_ZN10S7093C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7093C2_nt[];
extern void _ZN10S7093C2_nt2v7Ev();
extern void _ZN10S7093C2_nt2v8Ev();
extern void _ZN10S7093C2_nt2v9Ev();
extern void _ZN10S7093C2_nt3v10Ev();
extern void _ZN10S7093C2_nt3v11Ev();
extern void _ZN10S7093C2_nt3v12Ev();
static  VTBL_ENTRY vtc_S7093C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7093C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S7093C2_nt[];
VTBL_ENTRY *P__ZTI10S7093C2_nt = _ZTI10S7093C2_nt; 
extern  VTBL_ENTRY _ZTV10S7093C2_nt[];
Class_Descriptor cd_S7093C2_nt = {  "S7093C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7093C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7093C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7093C2_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C4  {
  void *s7093c4f0;
  int s7093c4f1;
  virtual  ~S7093C4(); // _ZN7S7093C4D1Ev
  virtual void  v13(); // _ZN7S7093C43v13Ev
  virtual void  v14(); // _ZN7S7093C43v14Ev
  S7093C4(); // tgen
};
//SIG(-1 S7093C4) C1{ vd v1 v2 Fp Fi}


 S7093C4 ::~S7093C4(){ note_dtor("S7093C4", this);}
void  S7093C4 ::v13(){vfunc_called(this, "_ZN7S7093C43v13Ev");}
void  S7093C4 ::v14(){vfunc_called(this, "_ZN7S7093C43v14Ev");}
S7093C4 ::S7093C4(){ note_ctor("S7093C4", this);} // tgen

static void Test_S7093C4()
{
  extern Class_Descriptor cd_S7093C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7093C4, buf);
    S7093C4 *dp, &lv = *(dp=new (buf) S7093C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7093C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C4)");
    check_field_offset(lv, s7093c4f0, ABISELECT(8,4), "S7093C4.s7093c4f0");
    check_field_offset(lv, s7093c4f1, ABISELECT(16,8), "S7093C4.s7093c4f1");
    test_class_info(&lv, &cd_S7093C4);
    dp->~S7093C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C4(Test_S7093C4, "S7093C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7093C4C1Ev();
extern void _ZN7S7093C4D1Ev();
Name_Map name_map_S7093C4[] = {
  NSPAIR(_ZN7S7093C4C1Ev),
  NSPAIR(_ZN7S7093C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7093C4[];
extern void _ZN7S7093C4D1Ev();
extern void _ZN7S7093C4D0Ev();
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
static  VTBL_ENTRY vtc_S7093C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C4[0]),
  (VTBL_ENTRY)&_ZN7S7093C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
};
extern VTBL_ENTRY _ZTI7S7093C4[];
extern  VTBL_ENTRY _ZTV7S7093C4[];
Class_Descriptor cd_S7093C4 = {  "S7093C4", // class name
  0,0,//no base classes
  &(vtc_S7093C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7093C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7093C4),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  S7093C5  {
  int s7093c5f0;
  virtual  ~S7093C5(); // _ZN7S7093C5D1Ev
  virtual void  v15(); // _ZN7S7093C53v15Ev
  virtual void  v16(); // _ZN7S7093C53v16Ev
  virtual void  v17(); // _ZN7S7093C53v17Ev
  virtual void  v18(); // _ZN7S7093C53v18Ev
  virtual void  v19(); // _ZN7S7093C53v19Ev
  virtual void  v20(); // _ZN7S7093C53v20Ev
  virtual void  v21(); // _ZN7S7093C53v21Ev
  S7093C5(); // tgen
};
//SIG(-1 S7093C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S7093C5 ::~S7093C5(){ note_dtor("S7093C5", this);}
void  S7093C5 ::v15(){vfunc_called(this, "_ZN7S7093C53v15Ev");}
void  S7093C5 ::v16(){vfunc_called(this, "_ZN7S7093C53v16Ev");}
void  S7093C5 ::v17(){vfunc_called(this, "_ZN7S7093C53v17Ev");}
void  S7093C5 ::v18(){vfunc_called(this, "_ZN7S7093C53v18Ev");}
void  S7093C5 ::v19(){vfunc_called(this, "_ZN7S7093C53v19Ev");}
void  S7093C5 ::v20(){vfunc_called(this, "_ZN7S7093C53v20Ev");}
void  S7093C5 ::v21(){vfunc_called(this, "_ZN7S7093C53v21Ev");}
S7093C5 ::S7093C5(){ note_ctor("S7093C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7093C5C1Ev();
extern void _ZN7S7093C5D1Ev();
Name_Map name_map_S7093C5[] = {
  NSPAIR(_ZN7S7093C5C1Ev),
  NSPAIR(_ZN7S7093C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7093C5[];
extern void _ZN7S7093C5D1Ev();
extern void _ZN7S7093C5D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY vtc_S7093C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C5[0]),
  (VTBL_ENTRY)&_ZN7S7093C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
Class_Descriptor cd_S7093C5 = {  "S7093C5", // class name
  0,0,//no base classes
  &(vtc_S7093C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7093C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7093C5),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  S7093C7_nt  {
  int s7093c7f0;
  virtual void  v22(); // _ZN10S7093C7_nt3v22Ev
  virtual void  v23(); // _ZN10S7093C7_nt3v23Ev
  virtual void  v24(); // _ZN10S7093C7_nt3v24Ev
  virtual void  v25(); // _ZN10S7093C7_nt3v25Ev
  virtual void  v26(); // _ZN10S7093C7_nt3v26Ev
  virtual void  v27(); // _ZN10S7093C7_nt3v27Ev
  virtual void  v28(); // _ZN10S7093C7_nt3v28Ev
  ~S7093C7_nt(); // tgen
  S7093C7_nt(); // tgen
};
//SIG(-1 S7093C7_nt) C1{ v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7093C7_nt ::v22(){vfunc_called(this, "_ZN10S7093C7_nt3v22Ev");}
void  S7093C7_nt ::v23(){vfunc_called(this, "_ZN10S7093C7_nt3v23Ev");}
void  S7093C7_nt ::v24(){vfunc_called(this, "_ZN10S7093C7_nt3v24Ev");}
void  S7093C7_nt ::v25(){vfunc_called(this, "_ZN10S7093C7_nt3v25Ev");}
void  S7093C7_nt ::v26(){vfunc_called(this, "_ZN10S7093C7_nt3v26Ev");}
void  S7093C7_nt ::v27(){vfunc_called(this, "_ZN10S7093C7_nt3v27Ev");}
void  S7093C7_nt ::v28(){vfunc_called(this, "_ZN10S7093C7_nt3v28Ev");}
S7093C7_nt ::~S7093C7_nt(){ note_dtor("S7093C7_nt", this);} // tgen
S7093C7_nt ::S7093C7_nt(){ note_ctor("S7093C7_nt", this);} // tgen

//skip512 S7093C7_nt

#else // __cplusplus

extern void _ZN10S7093C7_ntC1Ev();
extern void _ZN10S7093C7_ntD1Ev();
Name_Map name_map_S7093C7_nt[] = {
  NSPAIR(_ZN10S7093C7_ntC1Ev),
  NSPAIR(_ZN10S7093C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
static  VTBL_ENTRY vtc_S7093C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7093C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
VTBL_ENTRY *P__ZTI10S7093C7_nt = _ZTI10S7093C7_nt; 
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
Class_Descriptor cd_S7093C7_nt = {  "S7093C7_nt", // class name
  0,0,//no base classes
  &(vtc_S7093C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7093C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7093C7_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  S7093C8  : S7093C5 {
  void *s7093c8f0;
  char s7093c8f1;
  virtual void  v29(); // _ZN7S7093C83v29Ev
  virtual void  v30(); // _ZN7S7093C83v30Ev
  virtual void  v31(); // _ZN7S7093C83v31Ev
  virtual void  v32(); // _ZN7S7093C83v32Ev
  virtual void  v33(); // _ZN7S7093C83v33Ev
  ~S7093C8(); // tgen
  S7093C8(); // tgen
};
//SIG(-1 S7093C8) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fi} v1 v2 v3 v4 v5 Fp Fc}


void  S7093C8 ::v29(){vfunc_called(this, "_ZN7S7093C83v29Ev");}
void  S7093C8 ::v30(){vfunc_called(this, "_ZN7S7093C83v30Ev");}
void  S7093C8 ::v31(){vfunc_called(this, "_ZN7S7093C83v31Ev");}
void  S7093C8 ::v32(){vfunc_called(this, "_ZN7S7093C83v32Ev");}
void  S7093C8 ::v33(){vfunc_called(this, "_ZN7S7093C83v33Ev");}
S7093C8 ::~S7093C8(){ note_dtor("S7093C8", this);} // tgen
S7093C8 ::S7093C8(){ note_ctor("S7093C8", this);} // tgen

static void Test_S7093C8()
{
  extern Class_Descriptor cd_S7093C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7093C8, buf);
    S7093C8 *dp, &lv = *(dp=new (buf) S7093C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7093C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C8)");
    check_base_class_offset(lv, (S7093C5*), 0, "S7093C8");
    check_field_offset(lv, s7093c8f0, ABISELECT(16,8), "S7093C8.s7093c8f0");
    check_field_offset(lv, s7093c8f1, ABISELECT(24,12), "S7093C8.s7093c8f1");
    test_class_info(&lv, &cd_S7093C8);
    dp->~S7093C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C8(Test_S7093C8, "S7093C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7093C8C1Ev();
extern void _ZN7S7093C8D1Ev();
Name_Map name_map_S7093C8[] = {
  NSPAIR(_ZN7S7093C8C1Ev),
  NSPAIR(_ZN7S7093C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
static Base_Class bases_S7093C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7093C8[];
extern void _ZN7S7093C8D1Ev();
extern void _ZN7S7093C8D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
static  VTBL_ENTRY vtc_S7093C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C8[0]),
  (VTBL_ENTRY)&_ZN7S7093C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
};
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
Class_Descriptor cd_S7093C8 = {  "S7093C8", // class name
  bases_S7093C8, 1,
  &(vtc_S7093C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7093C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7093C8),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C6  : S7093C7_nt , S7093C8 , virtual S7093C5 {
  int s7093c6f0:18;
  virtual void  v34(); // _ZN7S7093C63v34Ev
  virtual void  v35(); // _ZN7S7093C63v35Ev
  virtual void  v36(); // _ZN7S7093C63v36Ev
  virtual void  v37(); // _ZN7S7093C63v37Ev
  virtual void  v38(); // _ZN7S7093C63v38Ev
  virtual void  v39(); // _ZN7S7093C63v39Ev
  virtual void  v40(); // _ZN7S7093C63v40Ev
  virtual void  v41(); // _ZN7S7093C63v41Ev
  ~S7093C6(); // tgen
  S7093C6(); // tgen
};
//SIG(-1 S7093C6) C1{ BC2{ v9 v10 v11 v12 v13 v14 v15 Fi} BC3{ BC4{ vd v16 v17 v18 v19 v20 v21 v22 Fi} v23 v24 v25 v26 v27 Fp Fc} VBC4 v1 v2 v3 v4 v5 v6 v7 v8 Fi:18}


void  S7093C6 ::v34(){vfunc_called(this, "_ZN7S7093C63v34Ev");}
void  S7093C6 ::v35(){vfunc_called(this, "_ZN7S7093C63v35Ev");}
void  S7093C6 ::v36(){vfunc_called(this, "_ZN7S7093C63v36Ev");}
void  S7093C6 ::v37(){vfunc_called(this, "_ZN7S7093C63v37Ev");}
void  S7093C6 ::v38(){vfunc_called(this, "_ZN7S7093C63v38Ev");}
void  S7093C6 ::v39(){vfunc_called(this, "_ZN7S7093C63v39Ev");}
void  S7093C6 ::v40(){vfunc_called(this, "_ZN7S7093C63v40Ev");}
void  S7093C6 ::v41(){vfunc_called(this, "_ZN7S7093C63v41Ev");}
S7093C6 ::~S7093C6(){ note_dtor("S7093C6", this);} // tgen
S7093C6 ::S7093C6(){ note_ctor("S7093C6", this);} // tgen

static void Test_S7093C6()
{
  extern Class_Descriptor cd_S7093C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7093C6, buf);
    S7093C6 *dp, &lv = *(dp=new (buf) S7093C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7093C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C6)");
    check_base_class_offset(lv, (S7093C7_nt*), 0, "S7093C6");
    check_base_class_offset(lv, (S7093C5*)(S7093C8*), ABISELECT(16,8), "S7093C6");
    check_base_class_offset(lv, (S7093C8*), ABISELECT(16,8), "S7093C6");
    /*is_ambiguous_... S7093C6::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*), ABISELECT(48,24), "S7093C6");
    set_bf_and_test(lv, s7093c6f0, ABISELECT(41,21), 0, 18, 1, "S7093C6");
    set_bf_and_test(lv, s7093c6f0, ABISELECT(41,21), 0, 18, hide_sll(1LL<<17), "S7093C6");
    test_class_info(&lv, &cd_S7093C6);
    dp->~S7093C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C6(Test_S7093C6, "S7093C6", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7093C6C1Ev();
extern void _ZN7S7093C6D1Ev();
Name_Map name_map_S7093C6[] = {
  NSPAIR(_ZN7S7093C6C1Ev),
  NSPAIR(_ZN7S7093C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
static Base_Class bases_S7093C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7093C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7093C8,    ABISELECT(16,8), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7093C5,    ABISELECT(48,24), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7093C6[];
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
extern void ABISELECT(_ZThn16_N7S7093C6D1Ev,_ZThn8_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7093C6D0Ev,_ZThn8_N7S7093C6D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7093C6D1Ev,_ZThn24_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7093C6D0Ev,_ZThn24_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY vtc_S7093C6[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C6D1Ev,_ZThn8_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C6D0Ev,_ZThn8_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S7093C6[];
static  VTT_ENTRY vtt_S7093C6[] = {
  {&(_ZTV7S7093C6[3]),  3,55},
  {&(_ZTV7S7093C6[46]),  46,55},
};
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7093C6D0Ev,_ZThn24_N7S7093C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7093C6D1Ev,_ZThn24_N7S7093C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7093C6 = {  "S7093C6", // class name
  bases_S7093C6, 4,
  &(vtc_S7093C6[0]), // expected_vtbl_contents
  &(vtt_S7093C6[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7093C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7093C6),55, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7093C6),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C9  : S7093C8 , S7093C6 , S7093C2_nt {
  ::S7093C7_nt s7093c9f0;
  void *s7093c9f1;
  __tsi64 s7093c9f2[10];
  virtual  ~S7093C9(); // _ZN7S7093C9D2Ev
  virtual void  v42(); // _ZN7S7093C93v42Ev
  virtual void  v43(); // _ZN7S7093C93v43Ev
  virtual void  v44(); // _ZN7S7093C93v44Ev
  virtual void  v45(); // _ZN7S7093C93v45Ev
  virtual void  v46(); // _ZN7S7093C93v46Ev
  virtual void  v47(); // _ZN7S7093C93v47Ev
  S7093C9(); // tgen
};
//SIG(-1 S7093C9) C1{ BC2{ BC3{ vd v7 v8 v9 v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 Fp Fc} BC4{ BC5{ v19 v20 v21 v22 v23 v24 v25 Fi} BC2 VBC3 v26 v27 v28 v29 v30 v31 v32 v33 Fi:18} BC6{ v34 v35 v36 v37 v38 v39 Fp} vd v1 v2 v3 v4 v5 v6 FC5 Fp FL[10]}


 S7093C9 ::~S7093C9(){ note_dtor("S7093C9", this);}
void  S7093C9 ::v42(){vfunc_called(this, "_ZN7S7093C93v42Ev");}
void  S7093C9 ::v43(){vfunc_called(this, "_ZN7S7093C93v43Ev");}
void  S7093C9 ::v44(){vfunc_called(this, "_ZN7S7093C93v44Ev");}
void  S7093C9 ::v45(){vfunc_called(this, "_ZN7S7093C93v45Ev");}
void  S7093C9 ::v46(){vfunc_called(this, "_ZN7S7093C93v46Ev");}
void  S7093C9 ::v47(){vfunc_called(this, "_ZN7S7093C93v47Ev");}
S7093C9 ::S7093C9(){ note_ctor("S7093C9", this);} // tgen

static void Test_S7093C9()
{
  extern Class_Descriptor cd_S7093C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,38)];
    init_test(&cd_S7093C9, buf);
    S7093C9 *dp, &lv = *(dp=new (buf) S7093C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,148), "sizeof(S7093C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C9)");
    /*is_ambiguous_... S7093C9::S7093C8 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C8*), 0, "S7093C9");
    /*is_ambiguous_... S7093C9::S7093C8 */ AMB_check_base_class_offset(lv, (S7093C8*), 0, "S7093C9");
    check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*), ABISELECT(32,16), "S7093C9");
    check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*), ABISELECT(48,24), "S7093C9");
    check_base_class_offset(lv, (S7093C8*)(S7093C6*), ABISELECT(48,24), "S7093C9");
    /*is_ambiguous_... S7093C6::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*), ABISELECT(200,140), "S7093C9");
    check_base_class_offset(lv, (S7093C6*), ABISELECT(32,16), "S7093C9");
    check_base_class_offset(lv, (S7093C2_nt*), ABISELECT(80,40), "S7093C9");
    check_field_offset(lv, s7093c9f0, ABISELECT(96,48), "S7093C9.s7093c9f0");
    check_field_offset(lv, s7093c9f1, ABISELECT(112,56), "S7093C9.s7093c9f1");
    check_field_offset(lv, s7093c9f2, ABISELECT(120,60), "S7093C9.s7093c9f2");
    test_class_info(&lv, &cd_S7093C9);
    dp->~S7093C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C9(Test_S7093C9, "S7093C9", ABISELECT(216,148));

#else // __cplusplus

extern void _ZN7S7093C9C1Ev();
extern void _ZN7S7093C9D2Ev();
Name_Map name_map_S7093C9[] = {
  NSPAIR(_ZN7S7093C9C1Ev),
  NSPAIR(_ZN7S7093C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C2_nt;
extern VTBL_ENTRY _ZTI10S7093C2_nt[];
extern  VTBL_ENTRY _ZTV10S7093C2_nt[];
static Base_Class bases_S7093C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S7093C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7093C7_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
    6, //immediately_derived
  0, 0},
  {&cd_S7093C5,    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
    4, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(48,24), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(200,140), //bcp->offset
    67, //bcp->virtual_function_table_offset
    10, //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_S7093C6,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7093C2_nt,    ABISELECT(80,40), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7093C9[];
extern void _ZN7S7093C9D1Ev();
extern void _ZN7S7093C9D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN7S7093C93v42Ev();
extern void _ZN7S7093C93v43Ev();
extern void _ZN7S7093C93v44Ev();
extern void _ZN7S7093C93v45Ev();
extern void _ZN7S7093C93v46Ev();
extern void _ZN7S7093C93v47Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn32_N7S7093C9D1Ev,_ZThn16_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7093C9D0Ev,_ZThn16_N7S7093C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7093C9D1Ev,_ZThn24_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7093C9D0Ev,_ZThn24_N7S7093C9D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN10S7093C2_nt2v7Ev();
extern void _ZN10S7093C2_nt2v8Ev();
extern void _ZN10S7093C2_nt2v9Ev();
extern void _ZN10S7093C2_nt3v10Ev();
extern void _ZN10S7093C2_nt3v11Ev();
extern void _ZN10S7093C2_nt3v12Ev();
extern void ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn200_N7S7093C9D1Ev,_ZThn140_N7S7093C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev)();
extern void ABISELECT(_ZThn200_N7S7093C9D0Ev,_ZThn140_N7S7093C9D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY vtc_S7093C9[] = {
  ABISELECT(200,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN7S7093C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v42Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v43Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v44Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v45Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v46Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v47Ev,
  ABISELECT(168,124),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C9D1Ev,_ZThn16_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C9D0Ev,_ZThn16_N7S7093C9D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7093C9D1Ev,_ZThn24_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7093C9D0Ev,_ZThn24_N7S7093C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-200,-140),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S7093C9[];
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C6__7S7093C9[] = {
  ABISELECT(168,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S7093C6D1Ev,_ZThn124_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S7093C6D0Ev,_ZThn124_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C6__7S7093C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-124),
  ABISELECT(-168,-124),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
static  VTT_ENTRY vtt_S7093C9[] = {
  {&(_ZTV7S7093C9[3]),  3,86},
  {&(_tg__ZTV7S7093C6__7S7093C9[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C6__7S7093C9[10]),  10,19},
  {&(_ZTV7S7093C9[26]),  26,86},
  {&(_ZTV7S7093C9[77]),  77,86},
};
extern VTBL_ENTRY _ZTI7S7093C9[];
extern  VTBL_ENTRY _ZTV7S7093C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C9[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7093C6D0Ev,_ZThn124_N7S7093C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7093C6D1Ev,_ZThn124_N7S7093C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7093C9D0Ev,_ZThn140_N7S7093C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7093C9D1Ev,_ZThn140_N7S7093C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7093C9 = {  "S7093C9", // class name
  bases_S7093C9, 8,
  &(vtc_S7093C9[0]), // expected_vtbl_contents
  &(vtt_S7093C9[0]), // expected_vtt_contents
  ABISELECT(216,148), // object size
  NSPAIRA(_ZTI7S7093C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7093C9),86, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7093C9),5, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C3  : virtual S7093C4 , S7093C5 , S7093C6 , S7093C9 , S7093C7_nt {
  void *s7093c3f0;
  virtual void  v48(); // _ZN7S7093C33v48Ev
  virtual void  v49(); // _ZN7S7093C33v49Ev
  virtual void  v50(); // _ZN7S7093C33v50Ev
  virtual void  v51(); // _ZN7S7093C33v51Ev
  virtual void  v52(); // _ZN7S7093C33v52Ev
  virtual void  v53(); // _ZN7S7093C33v53Ev
  virtual void  v54(); // _ZN7S7093C33v54Ev
  virtual void  v55(); // _ZN7S7093C33v55Ev
  virtual void  v56(); // _ZN7S7093C33v56Ev
  ~S7093C3(); // tgen
  S7093C3(); // tgen
};
//SIG(-1 S7093C3) C1{ VBC2{ vd v10 v11 Fp Fi} BC3{ vd v12 v13 v14 v15 v16 v17 v18 Fi} BC4{ BC5{ v19 v20 v21 v22 v23 v24 v25 Fi} BC6{ BC3 v26 v27 v28 v29 v30 Fp Fc} VBC3 v31 v32 v33 v34 v35 v36 v37 v38 Fi:18} BC7{ BC6 BC4 BC8{ v39 v40 v41 v42 v43 v44 Fp} vd v45 v46 v47 v48 v49 v50 FC5 Fp FL[10]} BC5 v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp}


void  S7093C3 ::v48(){vfunc_called(this, "_ZN7S7093C33v48Ev");}
void  S7093C3 ::v49(){vfunc_called(this, "_ZN7S7093C33v49Ev");}
void  S7093C3 ::v50(){vfunc_called(this, "_ZN7S7093C33v50Ev");}
void  S7093C3 ::v51(){vfunc_called(this, "_ZN7S7093C33v51Ev");}
void  S7093C3 ::v52(){vfunc_called(this, "_ZN7S7093C33v52Ev");}
void  S7093C3 ::v53(){vfunc_called(this, "_ZN7S7093C33v53Ev");}
void  S7093C3 ::v54(){vfunc_called(this, "_ZN7S7093C33v54Ev");}
void  S7093C3 ::v55(){vfunc_called(this, "_ZN7S7093C33v55Ev");}
void  S7093C3 ::v56(){vfunc_called(this, "_ZN7S7093C33v56Ev");}
S7093C3 ::~S7093C3(){ note_dtor("S7093C3", this);} // tgen
S7093C3 ::S7093C3(){ note_ctor("S7093C3", this);} // tgen

static void Test_S7093C3()
{
  extern Class_Descriptor cd_S7093C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,52)];
    init_test(&cd_S7093C3, buf);
    S7093C3 *dp, &lv = *(dp=new (buf) S7093C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,204), "sizeof(S7093C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C3)");
    check_base_class_offset(lv, (S7093C4*), ABISELECT(288,184), "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*), 0, "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*), ABISELECT(16,8), "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*), ABISELECT(32,16), "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C8*)(S7093C6*), ABISELECT(32,16), "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*), ABISELECT(312,196), "S7093C3");
    /*is_ambiguous_... S7093C6::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*)(S7093C9*), ABISELECT(312,196), "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C6*), ABISELECT(16,8), "S7093C3");
    /*is_ambiguous_... S7093C9::S7093C8 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C9*), ABISELECT(64,32), "S7093C3");
    /*is_ambiguous_... S7093C9::S7093C8 */ AMB_check_base_class_offset(lv, (S7093C8*)(S7093C9*), ABISELECT(64,32), "S7093C3");
    check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*)(S7093C9*), ABISELECT(96,48), "S7093C3");
    check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*)(S7093C9*), ABISELECT(112,56), "S7093C3");
    check_base_class_offset(lv, (S7093C8*)(S7093C6*)(S7093C9*), ABISELECT(112,56), "S7093C3");
    check_base_class_offset(lv, (S7093C6*)(S7093C9*), ABISELECT(96,48), "S7093C3");
    check_base_class_offset(lv, (S7093C2_nt*)(S7093C9*), ABISELECT(144,72), "S7093C3");
    check_base_class_offset(lv, (S7093C9*), ABISELECT(64,32), "S7093C3");
    /*is_ambiguous_... S7093C3::S7093C7_nt */ AMB_check_base_class_offset(lv, (S7093C7_nt*), ABISELECT(264,172), "S7093C3");
    check_field_offset(lv, s7093c3f0, ABISELECT(280,180), "S7093C3.s7093c3f0");
    test_class_info(&lv, &cd_S7093C3);
    dp->~S7093C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C3(Test_S7093C3, "S7093C3", ABISELECT(328,204));

#else // __cplusplus

extern void _ZN7S7093C3C1Ev();
extern void _ZN7S7093C3D1Ev();
Name_Map name_map_S7093C3[] = {
  NSPAIR(_ZN7S7093C3C1Ev),
  NSPAIR(_ZN7S7093C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C4;
extern VTBL_ENTRY _ZTI7S7093C4[];
extern  VTBL_ENTRY _ZTV7S7093C4[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C2_nt;
extern VTBL_ENTRY _ZTI10S7093C2_nt[];
extern  VTBL_ENTRY _ZTV10S7093C2_nt[];
extern Class_Descriptor cd_S7093C9;
extern VTBL_ENTRY _ZTI7S7093C9[];
extern  VTBL_ENTRY _ZTV7S7093C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C9[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
static Base_Class bases_S7093C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C4,    ABISELECT(288,184), //bcp->offset
    134, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7093C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7093C7_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(32,16), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(312,196), //bcp->offset
    143, //bcp->virtual_function_table_offset
    10, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7093C6,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7093C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7093C8,    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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7093C7_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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7093C5,    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
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(112,56), //bcp->offset
    101, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7093C6,    ABISELECT(96,48), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7093C2_nt,    ABISELECT(144,72), //bcp->offset
    117, //bcp->virtual_function_table_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_S7093C9,    ABISELECT(64,32), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7093C7_nt,    ABISELECT(264,172), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7093C3[];
extern void _ZN7S7093C3D1Ev();
extern void _ZN7S7093C3D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C33v48Ev();
extern void _ZN7S7093C33v49Ev();
extern void _ZN7S7093C33v50Ev();
extern void _ZN7S7093C33v51Ev();
extern void _ZN7S7093C33v52Ev();
extern void _ZN7S7093C33v53Ev();
extern void _ZN7S7093C33v54Ev();
extern void _ZN7S7093C33v55Ev();
extern void _ZN7S7093C33v56Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn16_N7S7093C3D1Ev,_ZThn8_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7093C3D0Ev,_ZThn8_N7S7093C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S7093C3D1Ev,_ZThn16_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S7093C3D0Ev,_ZThn16_N7S7093C3D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void ABISELECT(_ZThn64_N7S7093C3D1Ev,_ZThn32_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7093C3D0Ev,_ZThn32_N7S7093C3D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN7S7093C93v42Ev();
extern void _ZN7S7093C93v43Ev();
extern void _ZN7S7093C93v44Ev();
extern void _ZN7S7093C93v45Ev();
extern void _ZN7S7093C93v46Ev();
extern void _ZN7S7093C93v47Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn96_N7S7093C3D1Ev,_ZThn48_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S7093C3D0Ev,_ZThn48_N7S7093C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7093C3D1Ev,_ZThn56_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7093C3D0Ev,_ZThn56_N7S7093C3D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN10S7093C2_nt2v7Ev();
extern void _ZN10S7093C2_nt2v8Ev();
extern void _ZN10S7093C2_nt2v9Ev();
extern void _ZN10S7093C2_nt3v10Ev();
extern void _ZN10S7093C2_nt3v11Ev();
extern void _ZN10S7093C2_nt3v12Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn288_N7S7093C3D1Ev,_ZThn184_N7S7093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev)();
extern void ABISELECT(_ZThn288_N7S7093C3D0Ev,_ZThn184_N7S7093C3D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
extern void ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn312_N7S7093C3D1Ev,_ZThn196_N7S7093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev)();
extern void ABISELECT(_ZThn312_N7S7093C3D0Ev,_ZThn196_N7S7093C3D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY vtc_S7093C3[] = {
  ABISELECT(312,196),
  ABISELECT(288,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN7S7093C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v48Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v49Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v50Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v51Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v52Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v53Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v54Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v55Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v56Ev,
  ABISELECT(296,188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C3D1Ev,_ZThn8_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C3D0Ev,_ZThn8_N7S7093C3D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C3D1Ev,_ZThn16_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C3D0Ev,_ZThn16_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  ABISELECT(248,164),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7093C3D1Ev,_ZThn32_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7093C3D0Ev,_ZThn32_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v42Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v43Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v44Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v45Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v46Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v47Ev,
  ABISELECT(216,148),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S7093C3D1Ev,_ZThn48_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S7093C3D0Ev,_ZThn48_N7S7093C3D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7093C3D1Ev,_ZThn56_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7093C3D0Ev,_ZThn56_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v12Ev,
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  0,
  0,
  ABISELECT(-288,-184),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S7093C3[];
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C6__7S7093C3[] = {
  ABISELECT(296,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn296_N7S7093C6D1Ev,_ZThn188_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn296_N7S7093C6D0Ev,_ZThn188_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C6__7S7093C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-188),
  ABISELECT(-296,-188),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN7S7093C9D1Ev();
extern void _ZN7S7093C9D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN7S7093C93v42Ev();
extern void _ZN7S7093C93v43Ev();
extern void _ZN7S7093C93v44Ev();
extern void _ZN7S7093C93v45Ev();
extern void _ZN7S7093C93v46Ev();
extern void _ZN7S7093C93v47Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C9__7S7093C3[] = {
  ABISELECT(248,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN7S7093C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v42Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v43Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v44Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v45Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v46Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v47Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C67S7093C9__A1__7S7093C3[] = {
  ABISELECT(216,148),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7093C6D1Ev,_ZThn148_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7093C6D0Ev,_ZThn148_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C67S7093C9__A1__7S7093C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-148),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn32_N7S7093C9D1Ev,_ZThn16_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7093C9D0Ev,_ZThn16_N7S7093C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7093C6__7S7093C9__7S7093C3[] = {
  ABISELECT(216,148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C9D1Ev,_ZThn16_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C9D0Ev,_ZThn16_N7S7093C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn248_N7S7093C9D1Ev,_ZThn164_N7S7093C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev)();
extern void ABISELECT(_ZThn248_N7S7093C9D0Ev,_ZThn164_N7S7093C9D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A2__7S7093C9__7S7093C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-164),
  ABISELECT(-248,-164),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
static  VTT_ENTRY vtt_S7093C3[] = {
  {&(_ZTV7S7093C3[4]),  4,162},
  {&(_tg__ZTV7S7093C6__7S7093C3[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C6__7S7093C3[10]),  10,19},
  {&(_tg__ZTV7S7093C9__7S7093C3[3]),  3,23},
  {&(_tg__ZTV7S7093C67S7093C9__A1__7S7093C3[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C67S7093C9__A1__7S7093C3[10]),  10,19},
  {&(_tg__ZTV7S7093C6__7S7093C9__7S7093C3[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A2__7S7093C9__7S7093C3[10]),  10,19},
  {&(_ZTV7S7093C3[139]),  139,162},
  {&(_ZTV7S7093C3[25]),  25,162},
  {&(_ZTV7S7093C3[153]),  153,162},
  {&(_ZTV7S7093C3[61]),  61,162},
  {&(_ZTV7S7093C3[84]),  84,162},
};
extern VTBL_ENTRY _ZTI7S7093C3[];
extern  VTBL_ENTRY _ZTV7S7093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C3[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7093C9D0Ev,_ZThn164_N7S7093C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7093C9D1Ev,_ZThn164_N7S7093C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7093C6D0Ev,_ZThn148_N7S7093C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7093C6D0Ev,_ZThn188_N7S7093C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7093C6D1Ev,_ZThn148_N7S7093C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7093C6D1Ev,_ZThn188_N7S7093C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7093C3D0Ev,_ZThn196_N7S7093C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7093C3D0Ev,_ZThn184_N7S7093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7093C3D1Ev,_ZThn196_N7S7093C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7093C3D1Ev,_ZThn184_N7S7093C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7093C3 = {  "S7093C3", // class name
  bases_S7093C3, 16,
  &(vtc_S7093C3[0]), // expected_vtbl_contents
  &(vtt_S7093C3[0]), // expected_vtt_contents
  ABISELECT(328,204), // object size
  NSPAIRA(_ZTI7S7093C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7093C3),162, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7093C3),13, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C11  : virtual S7093C4 , virtual S7093C6 {
  void *s7093c11f0[49];
  virtual void  v57(); // _ZN8S7093C113v57Ev
  virtual void  v58(); // _ZN8S7093C113v58Ev
  ~S7093C11(); // tgen
  S7093C11(); // tgen
};
//SIG(-1 S7093C11) C1{ VBC2{ vd v3 v4 Fp Fi} VBC3{ BC4{ v5 v6 v7 v8 v9 v10 v11 Fi} BC5{ BC6{ vd v12 v13 v14 v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 Fp Fc} VBC6 v24 v25 v26 v27 v28 v29 v30 v31 Fi:18} v1 v2 Fp[49]}


void  S7093C11 ::v57(){vfunc_called(this, "_ZN8S7093C113v57Ev");}
void  S7093C11 ::v58(){vfunc_called(this, "_ZN8S7093C113v58Ev");}
S7093C11 ::~S7093C11(){ note_dtor("S7093C11", this);} // tgen
S7093C11 ::S7093C11(){ note_ctor("S7093C11", this);} // tgen

static void Test_S7093C11()
{
  extern Class_Descriptor cd_S7093C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[62];
    init_test(&cd_S7093C11, buf);
    S7093C11 *dp, &lv = *(dp=new (buf) S7093C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(488,244), "sizeof(S7093C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C11)");
    check_base_class_offset(lv, (S7093C4*), ABISELECT(400,200), "S7093C11");
    check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*), ABISELECT(424,212), "S7093C11");
    check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*), ABISELECT(440,220), "S7093C11");
    check_base_class_offset(lv, (S7093C8*)(S7093C6*), ABISELECT(440,220), "S7093C11");
    /*is_ambiguous_... S7093C6::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*), ABISELECT(472,236), "S7093C11");
    check_base_class_offset(lv, (S7093C6*), ABISELECT(424,212), "S7093C11");
    check_field_offset(lv, s7093c11f0, ABISELECT(8,4), "S7093C11.s7093c11f0");
    test_class_info(&lv, &cd_S7093C11);
    dp->~S7093C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C11(Test_S7093C11, "S7093C11", ABISELECT(488,244));

#else // __cplusplus

extern void _ZN8S7093C11C1Ev();
extern void _ZN8S7093C11D1Ev();
Name_Map name_map_S7093C11[] = {
  NSPAIR(_ZN8S7093C11C1Ev),
  NSPAIR(_ZN8S7093C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C4;
extern VTBL_ENTRY _ZTI7S7093C4[];
extern  VTBL_ENTRY _ZTV7S7093C4[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
static Base_Class bases_S7093C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C4,    ABISELECT(400,200), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7093C7_nt,    ABISELECT(424,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(440,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
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(440,220), //bcp->offset
    66, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(472,236), //bcp->offset
    82, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7093C6,    ABISELECT(424,212), //bcp->offset
    18, //bcp->virtual_function_table_offset
    31, //num_negative_vtable_entries(t, bcp)
    3, //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 _ZTI8S7093C11[];
extern void _ZN8S7093C113v57Ev();
extern void _ZN8S7093C113v58Ev();
extern void _ZN8S7093C11D1Ev();
extern void _ZN8S7093C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev)();
extern void ABISELECT(_ZThn400_N8S7093C11D1Ev,_ZThn200_N8S7093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev)();
extern void ABISELECT(_ZThn400_N8S7093C11D0Ev,_ZThn200_N8S7093C11D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev)();
extern void ABISELECT(_ZThn424_N8S7093C11D1Ev,_ZThn212_N8S7093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev)();
extern void ABISELECT(_ZThn424_N8S7093C11D0Ev,_ZThn212_N8S7093C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n152_N8S7093C11D1Ev,_ZTvn8_n76_N8S7093C11D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N8S7093C11D0Ev,_ZTvn8_n76_N8S7093C11D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev)();
extern void ABISELECT(_ZThn472_N8S7093C11D1Ev,_ZThn236_N8S7093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev)();
extern void ABISELECT(_ZThn472_N8S7093C11D0Ev,_ZThn236_N8S7093C11D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY vtc_S7093C11[] = {
  ABISELECT(472,236),
  ABISELECT(424,212),
  ABISELECT(400,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&_ZN8S7093C113v57Ev,
  (VTBL_ENTRY)&_ZN8S7093C113v58Ev,
  (VTBL_ENTRY)&_ZN8S7093C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7093C11D0Ev,
  0,
  0,
  ABISELECT(-400,-200),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-424,-212),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-424,-212),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev),
  ABISELECT(-440,-220),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C11D1Ev,_ZTvn8_n76_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C11D0Ev,_ZTvn8_n76_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-472,-236),
  ABISELECT(-472,-236),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern VTBL_ENTRY _ZTV8S7093C11[];
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C6__8S7093C11[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7093C6D1Ev,_ZThn24_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7093C6D0Ev,_ZThn24_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C6__8S7093C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
static  VTT_ENTRY vtt_S7093C11[] = {
  {&(_ZTV8S7093C11[5]),  5,101},
  {&(_ZTV8S7093C11[14]),  14,101},
  {&(_ZTV8S7093C11[49]),  49,101},
  {&(_ZTV8S7093C11[68]),  68,101},
  {&(_ZTV8S7093C11[92]),  92,101},
  {&(_tg__ZTV7S7093C6__8S7093C11[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C6__8S7093C11[10]),  10,19},
};
extern VTBL_ENTRY _ZTI8S7093C11[];
extern  VTBL_ENTRY _ZTV8S7093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7093C11[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7093C6D0Ev,_ZThn24_N7S7093C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7093C6D1Ev,_ZThn24_N7S7093C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S7093C11D0Ev,_ZThn212_N8S7093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S7093C11D1Ev,_ZThn212_N8S7093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S7093C11D0Ev,_ZThn236_N8S7093C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7093C11D0Ev,_ZThn200_N8S7093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S7093C11D1Ev,_ZThn236_N8S7093C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7093C11D1Ev,_ZThn200_N8S7093C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7093C11 = {  "S7093C11", // class name
  bases_S7093C11, 6,
  &(vtc_S7093C11[0]), // expected_vtbl_contents
  &(vtt_S7093C11[0]), // expected_vtt_contents
  ABISELECT(488,244), // object size
  NSPAIRA(_ZTI8S7093C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7093C11),101, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7093C11),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C10  : virtual S7093C5 , virtual S7093C11 {
  ::S7093C2_nt s7093c10f0;
  virtual void  v59(); // _ZN8S7093C103v59Ev
  virtual void  v60(); // _ZN8S7093C103v60Ev
  virtual void  v61(); // _ZN8S7093C103v61Ev
  virtual void  v62(); // _ZN8S7093C103v62Ev
  virtual void  v63(); // _ZN8S7093C103v63Ev
  virtual void  v64(); // _ZN8S7093C103v64Ev
  ~S7093C10(); // tgen
  S7093C10(); // tgen
};
//SIG(-1 S7093C10) C1{ VBC2{ vd v7 v8 v9 v10 v11 v12 v13 Fi} VBC3{ VBC4{ vd v14 v15 Fp Fi} VBC5{ BC6{ v16 v17 v18 v19 v20 v21 v22 Fi} BC7{ BC2 v23 v24 v25 v26 v27 Fp Fc} VBC2 v28 v29 v30 v31 v32 v33 v34 v35 Fi:18} v36 v37 Fp[49]} v1 v2 v3 v4 v5 v6 FC8{ v38 v39 v40 v41 v42 v43 Fp}}


void  S7093C10 ::v59(){vfunc_called(this, "_ZN8S7093C103v59Ev");}
void  S7093C10 ::v60(){vfunc_called(this, "_ZN8S7093C103v60Ev");}
void  S7093C10 ::v61(){vfunc_called(this, "_ZN8S7093C103v61Ev");}
void  S7093C10 ::v62(){vfunc_called(this, "_ZN8S7093C103v62Ev");}
void  S7093C10 ::v63(){vfunc_called(this, "_ZN8S7093C103v63Ev");}
void  S7093C10 ::v64(){vfunc_called(this, "_ZN8S7093C103v64Ev");}
S7093C10 ::~S7093C10(){ note_dtor("S7093C10", this);} // tgen
S7093C10 ::S7093C10(){ note_ctor("S7093C10", this);} // tgen

static void Test_S7093C10()
{
  extern Class_Descriptor cd_S7093C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[65];
    init_test(&cd_S7093C10, buf);
    S7093C10 *dp, &lv = *(dp=new (buf) S7093C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,256), "sizeof(S7093C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C10)");
    /*is_ambiguous_... S7093C10::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*), ABISELECT(24,12), "S7093C10");
    /*is_ambiguous_... S7093C6::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*), ABISELECT(24,12), "S7093C10");
    check_base_class_offset(lv, (S7093C4*)(S7093C11*), ABISELECT(440,220), "S7093C10");
    check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*), ABISELECT(464,232), "S7093C10");
    check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*), ABISELECT(480,240), "S7093C10");
    check_base_class_offset(lv, (S7093C8*)(S7093C6*), ABISELECT(480,240), "S7093C10");
    check_base_class_offset(lv, (S7093C6*)(S7093C11*), ABISELECT(464,232), "S7093C10");
    check_base_class_offset(lv, (S7093C11*), ABISELECT(40,20), "S7093C10");
    check_field_offset(lv, s7093c10f0, ABISELECT(8,4), "S7093C10.s7093c10f0");
    test_class_info(&lv, &cd_S7093C10);
    dp->~S7093C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C10(Test_S7093C10, "S7093C10", ABISELECT(512,256));

#else // __cplusplus

extern void _ZN8S7093C10C1Ev();
extern void _ZN8S7093C10D1Ev();
Name_Map name_map_S7093C10[] = {
  NSPAIR(_ZN8S7093C10C1Ev),
  NSPAIR(_ZN8S7093C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C4;
extern VTBL_ENTRY _ZTI7S7093C4[];
extern  VTBL_ENTRY _ZTV7S7093C4[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C11;
extern VTBL_ENTRY _ZTI8S7093C11[];
extern  VTBL_ENTRY _ZTV8S7093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7093C11[];
static Base_Class bases_S7093C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C5,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7093C4,    ABISELECT(440,220), //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7093C7_nt,    ABISELECT(464,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(480,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(480,240), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7093C6,    ABISELECT(464,232), //bcp->offset
    54, //bcp->virtual_function_table_offset
    31, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7093C11,    ABISELECT(40,20), //bcp->offset
    33, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7093C10[];
extern void _ZN8S7093C103v59Ev();
extern void _ZN8S7093C103v60Ev();
extern void _ZN8S7093C103v61Ev();
extern void _ZN8S7093C103v62Ev();
extern void _ZN8S7093C103v63Ev();
extern void _ZN8S7093C103v64Ev();
extern void _ZN8S7093C10D1Ev();
extern void _ZN8S7093C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn24_N8S7093C10D1Ev,_ZThn12_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn24_N8S7093C10D0Ev,_ZThn12_N8S7093C10D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN8S7093C113v57Ev();
extern void _ZN8S7093C113v58Ev();
extern void ABISELECT(_ZTv0_n64_N8S7093C10D1Ev,_ZTv0_n32_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S7093C10D1Ev,_ZThn20_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7093C10D0Ev,_ZTv0_n32_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S7093C10D0Ev,_ZThn20_N8S7093C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn440_N8S7093C10D1Ev,_ZThn220_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn440_N8S7093C10D0Ev,_ZThn220_N8S7093C10D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTv0_n152_N8S7093C10D1Ev,_ZTv0_n76_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn464_N8S7093C10D1Ev,_ZThn232_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N8S7093C10D0Ev,_ZTv0_n76_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn464_N8S7093C10D0Ev,_ZThn232_N8S7093C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n152_N8S7093C10D1Ev,_ZTvn8_n76_N8S7093C10D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N8S7093C10D0Ev,_ZTvn8_n76_N8S7093C10D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
static  VTBL_ENTRY vtc_S7093C10[] = {
  ABISELECT(464,232),
  ABISELECT(440,220),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&_ZN8S7093C103v59Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v60Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v61Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v62Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v63Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v64Ev,
  (VTBL_ENTRY)&_ZN8S7093C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7093C10D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  ABISELECT(-40,-20),
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(424,212),
  ABISELECT(400,200),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&_ZN8S7093C113v57Ev,
  (VTBL_ENTRY)&_ZN8S7093C113v58Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7093C10D1Ev,_ZTv0_n32_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7093C10D0Ev,_ZTv0_n32_N8S7093C10D0Ev),
  0,
  0,
  ABISELECT(-440,-220),
  ABISELECT(-440,-220),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-464,-232),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-220),
  ABISELECT(-464,-232),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C10D1Ev,_ZTv0_n76_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C10D0Ev,_ZTv0_n76_N8S7093C10D0Ev),
  ABISELECT(-480,-240),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C10D1Ev,_ZTvn8_n76_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C10D0Ev,_ZTvn8_n76_N8S7093C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
};
extern VTBL_ENTRY _ZTV8S7093C10[];
extern void _ZN8S7093C113v57Ev();
extern void _ZN8S7093C113v58Ev();
extern void _ZN8S7093C11D1Ev();
extern void _ZN8S7093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7093C11__8S7093C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(424,212),
  ABISELECT(400,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&_ZN8S7093C113v57Ev,
  (VTBL_ENTRY)&_ZN8S7093C113v58Ev,
  (VTBL_ENTRY)&_ZN8S7093C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7093C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev)();
extern void ABISELECT(_ZThn400_N8S7093C11D1Ev,_ZThn200_N8S7093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev)();
extern void ABISELECT(_ZThn400_N8S7093C11D0Ev,_ZThn200_N8S7093C11D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C4__8S7093C11__8S7093C10[] = {
  0,
  0,
  ABISELECT(-400,-200),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev)();
extern void ABISELECT(_ZThn424_N8S7093C11D1Ev,_ZThn212_N8S7093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev)();
extern void ABISELECT(_ZThn424_N8S7093C11D0Ev,_ZThn212_N8S7093C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7093C6__8S7093C11__8S7093C10[] = {
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-424,-212),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-220),
  ABISELECT(-424,-212),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n152_N8S7093C11D1Ev,_ZTvn8_n76_N8S7093C11D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N8S7093C11D0Ev,_ZTvn8_n76_N8S7093C11D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C87S7093C6__8S7093C11__8S7093C10[] = {
  ABISELECT(-440,-220),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C11D1Ev,_ZTvn8_n76_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C11D0Ev,_ZTvn8_n76_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__8S7093C11__8S7093C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C6__8S7093C10[] = {
  ABISELECT(-440,-220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C6__8S7093C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(440,220),
  ABISELECT(440,220),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
static  VTT_ENTRY vtt_S7093C10[] = {
  {&(_ZTV8S7093C10[6]),  6,118},
  {&(_ZTV8S7093C10[24]),  24,118},
  {&(_ZTV8S7093C10[41]),  41,118},
  {&(_ZTV8S7093C10[50]),  50,118},
  {&(_ZTV8S7093C10[85]),  85,118},
  {&(_ZTV8S7093C10[104]),  104,118},
  {&(_tg__ZTV8S7093C11__8S7093C10[5]),  5,9},
  {&(_tg__ZTV7S7093C4__8S7093C11__8S7093C10[5]),  5,9},
  {&(_tg__ZTV7S7093C6__8S7093C11__8S7093C10[31]),  31,48},
  {&(_tg__ZTV7S7093C87S7093C6__8S7093C11__8S7093C10[2]),  2,16},
  {&(_tg__ZTV7S7093C5__A1__8S7093C11__8S7093C10[10]),  10,19},
  {&(_tg__ZTV7S7093C6__8S7093C10[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C6__8S7093C10[10]),  10,19},
};
extern VTBL_ENTRY _ZTI8S7093C10[];
extern  VTBL_ENTRY _ZTV8S7093C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7093C10[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S7093C11D0Ev,_ZThn212_N8S7093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S7093C11D1Ev,_ZThn212_N8S7093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7093C11D0Ev,_ZThn200_N8S7093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7093C11D1Ev,_ZThn200_N8S7093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C10D0Ev,_ZTv0_n76_N8S7093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S7093C10D0Ev,_ZThn232_N8S7093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C10D1Ev,_ZTv0_n76_N8S7093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S7093C10D1Ev,_ZThn232_N8S7093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7093C10D0Ev,_ZTv0_n32_N8S7093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7093C10D0Ev,_ZThn20_N8S7093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7093C10D1Ev,_ZTv0_n32_N8S7093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7093C10D1Ev,_ZThn20_N8S7093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S7093C10D0Ev,_ZThn220_N8S7093C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7093C10D0Ev,_ZThn12_N8S7093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S7093C10D1Ev,_ZThn220_N8S7093C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7093C10D1Ev,_ZThn12_N8S7093C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7093C10 = {  "S7093C10", // class name
  bases_S7093C10, 7,
  &(vtc_S7093C10[0]), // expected_vtbl_contents
  &(vtt_S7093C10[0]), // expected_vtt_contents
  ABISELECT(512,256), // object size
  NSPAIRA(_ZTI8S7093C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7093C10),118, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7093C10),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7093C1  : S7093C2_nt , virtual S7093C3 , S7093C10 {
  char s7093c1f0;
  virtual void  v1(); // _ZN7S7093C12v1Ev
  virtual void  v2(); // _ZN7S7093C12v2Ev
  virtual void  v3(); // _ZN7S7093C12v3Ev
  virtual void  v4(); // _ZN7S7093C12v4Ev
  virtual void  v5(); // _ZN7S7093C12v5Ev
  virtual void  v6(); // _ZN7S7093C12v6Ev
  ~S7093C1(); // tgen
  S7093C1(); // tgen
};
//SIG(1 S7093C1) C1{ BC2{ v7 v8 v9 v10 v11 v12 Fp} VBC3{ VBC4{ vd v13 v14 Fp Fi} BC5{ vd v15 v16 v17 v18 v19 v20 v21 Fi} BC6{ BC7{ v22 v23 v24 v25 v26 v27 v28 Fi} BC8{ BC5 v29 v30 v31 v32 v33 Fp Fc} VBC5 v34 v35 v36 v37 v38 v39 v40 v41 Fi:18} BC9{ BC8 BC6 BC2 vd v42 v43 v44 v45 v46 v47 FC7 Fp FL[10]} BC7 v48 v49 v50 v51 v52 v53 v54 v55 v56 Fp} BC10{ VBC5 VBC11{ VBC4 VBC6 v57 v58 Fp[49]} v59 v60 v61 v62 v63 v64 FC2} v1 v2 v3 v4 v5 v6 Fc}


void  S7093C1 ::v1(){vfunc_called(this, "_ZN7S7093C12v1Ev");}
void  S7093C1 ::v2(){vfunc_called(this, "_ZN7S7093C12v2Ev");}
void  S7093C1 ::v3(){vfunc_called(this, "_ZN7S7093C12v3Ev");}
void  S7093C1 ::v4(){vfunc_called(this, "_ZN7S7093C12v4Ev");}
void  S7093C1 ::v5(){vfunc_called(this, "_ZN7S7093C12v5Ev");}
void  S7093C1 ::v6(){vfunc_called(this, "_ZN7S7093C12v6Ev");}
S7093C1 ::~S7093C1(){ note_dtor("S7093C1", this);} // tgen
S7093C1 ::S7093C1(){ note_ctor("S7093C1", this);} // tgen

static void Test_S7093C1()
{
  extern Class_Descriptor cd_S7093C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(104,114)];
    init_test(&cd_S7093C1, buf);
    S7093C1 *dp, &lv = *(dp=new (buf) S7093C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(824,452), "sizeof(S7093C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7093C1)");
    /*is_ambiguous_... S7093C1::S7093C2_nt */ AMB_check_base_class_offset(lv, (S7093C2_nt*), 0, "S7093C1");
    check_base_class_offset(lv, (S7093C4*)(S7093C3*), ABISELECT(336,208), "S7093C1");
    check_base_class_offset(lv, (S7093C4*)(S7093C11*), ABISELECT(336,208), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C3*), ABISELECT(48,24), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*)(S7093C3*), ABISELECT(64,32), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*)(S7093C3*), ABISELECT(80,40), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C8*)(S7093C6*)(S7093C3*), ABISELECT(80,40), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*)(S7093C3*), ABISELECT(360,220), "S7093C1");
    /*is_ambiguous_... S7093C6::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*)(S7093C9*)(S7093C3*), ABISELECT(360,220), "S7093C1");
    /*is_ambiguous_... S7093C10::S7093C5 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C10*), ABISELECT(360,220), "S7093C1");
    /*is_ambiguous_... S7093C1::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C6*), ABISELECT(360,220), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C6*)(S7093C3*), ABISELECT(64,32), "S7093C1");
    /*is_ambiguous_... S7093C9::S7093C8 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C9*)(S7093C3*), ABISELECT(112,56), "S7093C1");
    /*is_ambiguous_... S7093C9::S7093C8 */ AMB_check_base_class_offset(lv, (S7093C8*)(S7093C9*)(S7093C3*), ABISELECT(112,56), "S7093C1");
    check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*)(S7093C9*)(S7093C3*), ABISELECT(144,72), "S7093C1");
    check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*)(S7093C9*)(S7093C3*), ABISELECT(160,80), "S7093C1");
    check_base_class_offset(lv, (S7093C8*)(S7093C6*)(S7093C9*)(S7093C3*), ABISELECT(160,80), "S7093C1");
    check_base_class_offset(lv, (S7093C6*)(S7093C9*)(S7093C3*), ABISELECT(144,72), "S7093C1");
    check_base_class_offset(lv, (S7093C2_nt*)(S7093C9*)(S7093C3*), ABISELECT(192,96), "S7093C1");
    check_base_class_offset(lv, (S7093C9*)(S7093C3*), ABISELECT(112,56), "S7093C1");
    /*is_ambiguous_... S7093C3::S7093C7_nt */ AMB_check_base_class_offset(lv, (S7093C7_nt*)(S7093C3*), ABISELECT(312,196), "S7093C1");
    check_base_class_offset(lv, (S7093C3*), ABISELECT(48,24), "S7093C1");
    /*is_ambiguous_... S7093C1::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C7_nt*)(S7093C6*), ABISELECT(776,428), "S7093C1");
    /*is_ambiguous_... S7093C1::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C5*)(S7093C8*)(S7093C6*), ABISELECT(792,436), "S7093C1");
    /*is_ambiguous_... S7093C1::S7093C6 */ AMB_check_base_class_offset(lv, (S7093C8*)(S7093C6*), ABISELECT(792,436), "S7093C1");
    check_base_class_offset(lv, (S7093C6*)(S7093C11*), ABISELECT(776,428), "S7093C1");
    check_base_class_offset(lv, (S7093C11*)(S7093C10*), ABISELECT(376,228), "S7093C1");
    check_base_class_offset(lv, (S7093C10*), ABISELECT(16,8), "S7093C1");
    check_field_offset(lv, s7093c1f0, ABISELECT(40,20), "S7093C1.s7093c1f0");
    test_class_info(&lv, &cd_S7093C1);
    dp->~S7093C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7093C1(Test_S7093C1, "S7093C1", ABISELECT(824,452));

#else // __cplusplus

extern void _ZN7S7093C1C1Ev();
extern void _ZN7S7093C1D1Ev();
Name_Map name_map_S7093C1[] = {
  NSPAIR(_ZN7S7093C1C1Ev),
  NSPAIR(_ZN7S7093C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7093C2_nt;
extern VTBL_ENTRY _ZTI10S7093C2_nt[];
extern  VTBL_ENTRY _ZTV10S7093C2_nt[];
extern Class_Descriptor cd_S7093C4;
extern VTBL_ENTRY _ZTI7S7093C4[];
extern  VTBL_ENTRY _ZTV7S7093C4[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C2_nt;
extern VTBL_ENTRY _ZTI10S7093C2_nt[];
extern  VTBL_ENTRY _ZTV10S7093C2_nt[];
extern Class_Descriptor cd_S7093C9;
extern VTBL_ENTRY _ZTI7S7093C9[];
extern  VTBL_ENTRY _ZTV7S7093C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C9[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C3;
extern VTBL_ENTRY _ZTI7S7093C3[];
extern  VTBL_ENTRY _ZTV7S7093C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C3[];
extern Class_Descriptor cd_S7093C7_nt;
extern VTBL_ENTRY _ZTI10S7093C7_nt[];
extern  VTBL_ENTRY _ZTV10S7093C7_nt[];
extern Class_Descriptor cd_S7093C5;
extern VTBL_ENTRY _ZTI7S7093C5[];
extern  VTBL_ENTRY _ZTV7S7093C5[];
extern Class_Descriptor cd_S7093C8;
extern VTBL_ENTRY _ZTI7S7093C8[];
extern  VTBL_ENTRY _ZTV7S7093C8[];
extern Class_Descriptor cd_S7093C6;
extern VTBL_ENTRY _ZTI7S7093C6[];
extern  VTBL_ENTRY _ZTV7S7093C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C6[];
extern Class_Descriptor cd_S7093C11;
extern VTBL_ENTRY _ZTI8S7093C11[];
extern  VTBL_ENTRY _ZTV8S7093C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7093C11[];
extern Class_Descriptor cd_S7093C10;
extern VTBL_ENTRY _ZTI8S7093C10[];
extern  VTBL_ENTRY _ZTV8S7093C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7093C10[];
static Base_Class bases_S7093C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7093C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7093C4,    ABISELECT(336,208), //bcp->offset
    218, //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
    1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7093C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7093C7_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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7093C5,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(80,40), //bcp->offset
    126, //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_S7093C5,    ABISELECT(360,220), //bcp->offset
    227, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7093C6,    ABISELECT(64,32), //bcp->offset
    106, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7093C5,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7093C8,    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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7093C7_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(160,80), //bcp->offset
    185, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7093C6,    ABISELECT(144,72), //bcp->offset
    165, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7093C2_nt,    ABISELECT(192,96), //bcp->offset
    201, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7093C9,    ABISELECT(112,56), //bcp->offset
    142, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7093C7_nt,    ABISELECT(312,196), //bcp->offset
    209, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7093C3,    ABISELECT(48,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    53, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7093C7_nt,    ABISELECT(776,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
    18, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7093C5,    ABISELECT(792,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
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7093C8,    ABISELECT(792,436), //bcp->offset
    306, //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
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7093C6,    ABISELECT(776,428), //bcp->offset
    258, //bcp->virtual_function_table_offset
    31, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7093C11,    ABISELECT(376,228), //bcp->offset
    246, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7093C10,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7093C1[];
extern void _ZN10S7093C2_nt2v7Ev();
extern void _ZN10S7093C2_nt2v8Ev();
extern void _ZN10S7093C2_nt2v9Ev();
extern void _ZN10S7093C2_nt3v10Ev();
extern void _ZN10S7093C2_nt3v11Ev();
extern void _ZN10S7093C2_nt3v12Ev();
extern void _ZN7S7093C12v1Ev();
extern void _ZN7S7093C12v2Ev();
extern void _ZN7S7093C12v3Ev();
extern void _ZN7S7093C12v4Ev();
extern void _ZN7S7093C12v5Ev();
extern void _ZN7S7093C12v6Ev();
extern void _ZN7S7093C1D1Ev();
extern void _ZN7S7093C1D0Ev();
extern void _ZN8S7093C103v59Ev();
extern void _ZN8S7093C103v60Ev();
extern void _ZN8S7093C103v61Ev();
extern void _ZN8S7093C103v62Ev();
extern void _ZN8S7093C103v63Ev();
extern void _ZN8S7093C103v64Ev();
extern void ABISELECT(_ZThn16_N7S7093C1D1Ev,_ZThn8_N7S7093C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7093C1D0Ev,_ZThn8_N7S7093C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7093C1D1Ev,_ZTv0_n20_N7S7093C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7093C1D1Ev,_ZThn24_N7S7093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7093C1D0Ev,_ZTv0_n20_N7S7093C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7093C1D0Ev,_ZThn24_N7S7093C1D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C33v48Ev();
extern void _ZN7S7093C33v49Ev();
extern void _ZN7S7093C33v50Ev();
extern void _ZN7S7093C33v51Ev();
extern void _ZN7S7093C33v52Ev();
extern void _ZN7S7093C33v53Ev();
extern void _ZN7S7093C33v54Ev();
extern void _ZN7S7093C33v55Ev();
extern void _ZN7S7093C33v56Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTvn16_n40_N7S7093C1D1Ev,_ZTvn8_n20_N7S7093C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S7093C1D0Ev,_ZTvn8_n20_N7S7093C1D0Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7093C1D1Ev,_ZTvn16_n20_N7S7093C1D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7093C1D0Ev,_ZTvn16_n20_N7S7093C1D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void ABISELECT(_ZTvn64_n40_N7S7093C1D1Ev,_ZTvn32_n20_N7S7093C1D1Ev)();
extern void ABISELECT(_ZTvn64_n40_N7S7093C1D0Ev,_ZTvn32_n20_N7S7093C1D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN7S7093C93v42Ev();
extern void _ZN7S7093C93v43Ev();
extern void _ZN7S7093C93v44Ev();
extern void _ZN7S7093C93v45Ev();
extern void _ZN7S7093C93v46Ev();
extern void _ZN7S7093C93v47Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTvn96_n40_N7S7093C1D1Ev,_ZTvn48_n20_N7S7093C1D1Ev)();
extern void ABISELECT(_ZTvn96_n40_N7S7093C1D0Ev,_ZTvn48_n20_N7S7093C1D0Ev)();
extern void ABISELECT(_ZTvn112_n40_N7S7093C1D1Ev,_ZTvn56_n20_N7S7093C1D1Ev)();
extern void ABISELECT(_ZTvn112_n40_N7S7093C1D0Ev,_ZTvn56_n20_N7S7093C1D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN10S7093C2_nt2v7Ev();
extern void _ZN10S7093C2_nt2v8Ev();
extern void _ZN10S7093C2_nt2v9Ev();
extern void _ZN10S7093C2_nt3v10Ev();
extern void _ZN10S7093C2_nt3v11Ev();
extern void _ZN10S7093C2_nt3v12Ev();
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void ABISELECT(_ZTv0_n24_N7S7093C1D1Ev,_ZTv0_n12_N7S7093C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S7093C1D1Ev,_ZThn208_N7S7093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C1D0Ev,_ZTv0_n12_N7S7093C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S7093C1D0Ev,_ZThn208_N7S7093C1D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
extern void ABISELECT(_ZTv0_n24_N7S7093C1D1Ev,_ZTv0_n12_N7S7093C1D1Ev)();
extern void ABISELECT(_ZThn360_N7S7093C1D1Ev,_ZThn220_N7S7093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C1D0Ev,_ZTv0_n12_N7S7093C1D0Ev)();
extern void ABISELECT(_ZThn360_N7S7093C1D0Ev,_ZThn220_N7S7093C1D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN8S7093C113v57Ev();
extern void _ZN8S7093C113v58Ev();
extern void ABISELECT(_ZTv0_n64_N7S7093C1D1Ev,_ZTv0_n32_N7S7093C1D1Ev)();
extern void ABISELECT(_ZThn376_N7S7093C1D1Ev,_ZThn228_N7S7093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7093C1D0Ev,_ZTv0_n32_N7S7093C1D0Ev)();
extern void ABISELECT(_ZThn376_N7S7093C1D0Ev,_ZThn228_N7S7093C1D0Ev)() __attribute__((weak));
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTv0_n152_N7S7093C1D1Ev,_ZTv0_n76_N7S7093C1D1Ev)();
extern void ABISELECT(_ZThn776_N7S7093C1D1Ev,_ZThn428_N7S7093C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7093C1D0Ev,_ZTv0_n76_N7S7093C1D0Ev)();
extern void ABISELECT(_ZThn776_N7S7093C1D0Ev,_ZThn428_N7S7093C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n152_N7S7093C1D1Ev,_ZTvn8_n76_N7S7093C1D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7093C1D0Ev,_ZTvn8_n76_N7S7093C1D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
static  VTBL_ENTRY vtc_S7093C1[] = {
  ABISELECT(776,428),
  ABISELECT(376,228),
  ABISELECT(360,220),
  ABISELECT(336,208),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S7093C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7093C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7093C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7093C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7093C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7093C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7093C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C1D0Ev,
  ABISELECT(760,420),
  ABISELECT(320,200),
  ABISELECT(360,220),
  ABISELECT(344,212),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN8S7093C103v59Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v60Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v61Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v62Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v63Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v64Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C1D1Ev,_ZThn8_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C1D0Ev,_ZThn8_N7S7093C1D0Ev),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(312,196),
  ABISELECT(288,184),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7093C1D1Ev,_ZTv0_n20_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7093C1D0Ev,_ZTv0_n20_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v48Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v49Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v50Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v51Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v52Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v53Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v54Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v55Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v56Ev,
  ABISELECT(296,188),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S7093C1D1Ev,_ZTvn8_n20_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S7093C1D0Ev,_ZTvn8_n20_N7S7093C1D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7093C1D1Ev,_ZTvn16_n20_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7093C1D0Ev,_ZTvn16_n20_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  ABISELECT(248,164),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n40_N7S7093C1D1Ev,_ZTvn32_n20_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n40_N7S7093C1D0Ev,_ZTvn32_n20_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v42Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v43Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v44Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v45Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v46Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v47Ev,
  ABISELECT(216,148),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n40_N7S7093C1D1Ev,_ZTvn48_n20_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n40_N7S7093C1D0Ev,_ZTvn48_n20_N7S7093C1D0Ev),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n40_N7S7093C1D1Ev,_ZTvn56_n20_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n40_N7S7093C1D0Ev,_ZTvn56_n20_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7093C2_nt3v12Ev,
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  0,
  0,
  ABISELECT(-336,-208),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C1D1Ev,_ZTv0_n12_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C1D0Ev,_ZTv0_n12_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-220),
  ABISELECT(-360,-220),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C1D1Ev,_ZTv0_n12_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C1D0Ev,_ZTv0_n12_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  ABISELECT(-376,-228),
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(400,200),
  ABISELECT(-40,-20),
  ABISELECT(-376,-228),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN8S7093C113v57Ev,
  (VTBL_ENTRY)&_ZN8S7093C113v58Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7093C1D1Ev,_ZTv0_n32_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7093C1D0Ev,_ZTv0_n32_N7S7093C1D0Ev),
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-776,-428),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-208),
  ABISELECT(-776,-428),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7093C1D1Ev,_ZTv0_n76_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7093C1D0Ev,_ZTv0_n76_N7S7093C1D0Ev),
  ABISELECT(-792,-436),
  (VTBL_ENTRY)&(_ZTI7S7093C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7093C1D1Ev,_ZTvn8_n76_N7S7093C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7093C1D0Ev,_ZTvn8_n76_N7S7093C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
};
extern VTBL_ENTRY _ZTV7S7093C1[];
extern void _ZN8S7093C103v59Ev();
extern void _ZN8S7093C103v60Ev();
extern void _ZN8S7093C103v61Ev();
extern void _ZN8S7093C103v62Ev();
extern void _ZN8S7093C103v63Ev();
extern void _ZN8S7093C103v64Ev();
extern void _ZN8S7093C10D1Ev();
extern void _ZN8S7093C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7093C10__7S7093C1[] = {
  ABISELECT(760,420),
  ABISELECT(320,200),
  ABISELECT(360,220),
  ABISELECT(344,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&_ZN8S7093C103v59Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v60Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v61Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v62Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v63Ev,
  (VTBL_ENTRY)&_ZN8S7093C103v64Ev,
  (VTBL_ENTRY)&_ZN8S7093C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7093C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn344_N8S7093C10D1Ev,_ZThn212_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn344_N8S7093C10D0Ev,_ZThn212_N8S7093C10D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__8S7093C10__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-212),
  ABISELECT(-344,-212),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN8S7093C113v57Ev();
extern void _ZN8S7093C113v58Ev();
extern void ABISELECT(_ZTv0_n64_N8S7093C10D1Ev,_ZTv0_n32_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn360_N8S7093C10D1Ev,_ZThn220_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7093C10D0Ev,_ZTv0_n32_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn360_N8S7093C10D0Ev,_ZThn220_N8S7093C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7093C11__8S7093C10__7S7093C1[] = {
  ABISELECT(-360,-220),
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(400,200),
  ABISELECT(-40,-20),
  ABISELECT(-360,-220),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&_ZN8S7093C113v57Ev,
  (VTBL_ENTRY)&_ZN8S7093C113v58Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7093C10D1Ev,_ZTv0_n32_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7093C10D0Ev,_ZTv0_n32_N8S7093C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn320_N8S7093C10D1Ev,_ZThn200_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn320_N8S7093C10D0Ev,_ZThn200_N8S7093C10D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C4__8S7093C10__7S7093C1[] = {
  0,
  0,
  ABISELECT(-320,-200),
  ABISELECT(-320,-200),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTv0_n152_N8S7093C10D1Ev,_ZTv0_n76_N8S7093C10D1Ev)();
extern void ABISELECT(_ZThn760_N8S7093C10D1Ev,_ZThn420_N8S7093C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N8S7093C10D0Ev,_ZTv0_n76_N8S7093C10D0Ev)();
extern void ABISELECT(_ZThn760_N8S7093C10D0Ev,_ZThn420_N8S7093C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7093C6__8S7093C10__7S7093C1[] = {
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-760,-420),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-208),
  ABISELECT(-760,-420),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C10D1Ev,_ZTv0_n76_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C10D0Ev,_ZTv0_n76_N8S7093C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n152_N8S7093C10D1Ev,_ZTvn8_n76_N8S7093C10D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N8S7093C10D0Ev,_ZTvn8_n76_N8S7093C10D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C87S7093C6__8S7093C10__7S7093C1[] = {
  ABISELECT(-776,-428),
  (VTBL_ENTRY)&(_ZTI8S7093C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C10D1Ev,_ZTvn8_n76_N8S7093C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C10D0Ev,_ZTvn8_n76_N8S7093C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
};
extern void _ZN7S7093C3D1Ev();
extern void _ZN7S7093C3D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C33v48Ev();
extern void _ZN7S7093C33v49Ev();
extern void _ZN7S7093C33v50Ev();
extern void _ZN7S7093C33v51Ev();
extern void _ZN7S7093C33v52Ev();
extern void _ZN7S7093C33v53Ev();
extern void _ZN7S7093C33v54Ev();
extern void _ZN7S7093C33v55Ev();
extern void _ZN7S7093C33v56Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C3__7S7093C1[] = {
  ABISELECT(312,196),
  ABISELECT(288,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN7S7093C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v48Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v49Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v50Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v51Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v52Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v53Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v54Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v55Ev,
  (VTBL_ENTRY)&_ZN7S7093C33v56Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C67S7093C3__7S7093C1[] = {
  ABISELECT(296,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn296_N7S7093C6D1Ev,_ZThn188_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn296_N7S7093C6D0Ev,_ZThn188_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C67S7093C3__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-188),
  ABISELECT(-296,-188),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN7S7093C9D1Ev();
extern void _ZN7S7093C9D0Ev();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN7S7093C93v42Ev();
extern void _ZN7S7093C93v43Ev();
extern void _ZN7S7093C93v44Ev();
extern void _ZN7S7093C93v45Ev();
extern void _ZN7S7093C93v46Ev();
extern void _ZN7S7093C93v47Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C97S7093C3__7S7093C1[] = {
  ABISELECT(248,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN7S7093C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v42Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v43Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v44Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v45Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v46Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v47Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C67S7093C97S7093C3__A1__7S7093C1[] = {
  ABISELECT(216,148),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7093C6D1Ev,_ZThn148_N7S7093C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7093C6D0Ev,_ZThn148_N7S7093C6D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C67S7093C97S7093C3__A1__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-148),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn32_N7S7093C9D1Ev,_ZThn16_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7093C9D0Ev,_ZThn16_N7S7093C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7093C6__7S7093C97S7093C3__7S7093C1[] = {
  ABISELECT(216,148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C9D1Ev,_ZThn16_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7093C9D0Ev,_ZThn16_N7S7093C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev)();
extern void ABISELECT(_ZThn248_N7S7093C9D1Ev,_ZThn164_N7S7093C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev)();
extern void ABISELECT(_ZThn248_N7S7093C9D0Ev,_ZThn164_N7S7093C9D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A2__7S7093C97S7093C3__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-164),
  ABISELECT(-248,-164),
  (VTBL_ENTRY)&(_ZTI7S7093C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn288_N7S7093C3D1Ev,_ZThn184_N7S7093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev)();
extern void ABISELECT(_ZThn288_N7S7093C3D0Ev,_ZThn184_N7S7093C3D0Ev)() __attribute__((weak));
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C4__7S7093C3__7S7093C1[] = {
  0,
  0,
  ABISELECT(-288,-184),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn16_N7S7093C3D1Ev,_ZThn8_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7093C3D0Ev,_ZThn8_N7S7093C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7093C6__7S7093C3__7S7093C1[] = {
  ABISELECT(296,188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C3D1Ev,_ZThn8_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7093C3D0Ev,_ZThn8_N7S7093C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn312_N7S7093C3D1Ev,_ZThn196_N7S7093C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev)();
extern void ABISELECT(_ZThn312_N7S7093C3D0Ev,_ZThn196_N7S7093C3D0Ev)() __attribute__((weak));
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A2__7S7093C3__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void ABISELECT(_ZThn64_N7S7093C3D1Ev,_ZThn32_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7093C3D0Ev,_ZThn32_N7S7093C3D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
extern void _ZN7S7093C93v42Ev();
extern void _ZN7S7093C93v43Ev();
extern void _ZN7S7093C93v44Ev();
extern void _ZN7S7093C93v45Ev();
extern void _ZN7S7093C93v46Ev();
extern void _ZN7S7093C93v47Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C9__7S7093C3__7S7093C1[] = {
  ABISELECT(248,164),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7093C3D1Ev,_ZThn32_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7093C3D0Ev,_ZThn32_N7S7093C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v42Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v43Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v44Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v45Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v46Ev,
  (VTBL_ENTRY)&_ZN7S7093C93v47Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZThn96_N7S7093C3D1Ev,_ZThn48_N7S7093C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S7093C3D0Ev,_ZThn48_N7S7093C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7093C67S7093C9__A1__7S7093C3__7S7093C1[] = {
  ABISELECT(216,148),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7093C3[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S7093C3D1Ev,_ZThn48_N7S7093C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S7093C3D0Ev,_ZThn48_N7S7093C3D0Ev),
};
extern void _ZN8S7093C113v57Ev();
extern void _ZN8S7093C113v58Ev();
extern void _ZN8S7093C11D1Ev();
extern void _ZN8S7093C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7093C11__7S7093C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(400,200),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&_ZN8S7093C113v57Ev,
  (VTBL_ENTRY)&_ZN8S7093C113v58Ev,
  (VTBL_ENTRY)&_ZN8S7093C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7093C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev)();
extern void _ZN7S7093C43v13Ev();
extern void _ZN7S7093C43v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C4__8S7093C11__7S7093C1[] = {
  0,
  0,
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7093C43v14Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev)();
extern void ABISELECT(_ZThn400_N8S7093C11D1Ev,_ZThn200_N8S7093C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev)();
extern void ABISELECT(_ZThn400_N8S7093C11D0Ev,_ZThn200_N8S7093C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7093C6__8S7093C11__7S7093C1[] = {
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-400,-200),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-208),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n152_N8S7093C11D1Ev,_ZTvn8_n76_N8S7093C11D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N8S7093C11D0Ev,_ZTvn8_n76_N8S7093C11D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
extern void _ZN7S7093C83v29Ev();
extern void _ZN7S7093C83v30Ev();
extern void _ZN7S7093C83v31Ev();
extern void _ZN7S7093C83v32Ev();
extern void _ZN7S7093C83v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C87S7093C6__8S7093C11__7S7093C1[] = {
  ABISELECT(-416,-208),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C11D1Ev,_ZTvn8_n76_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N8S7093C11D0Ev,_ZTvn8_n76_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7093C83v33Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__8S7093C11__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7093C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D1Ev,_ZTv0_n12_N8S7093C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7093C11D0Ev,_ZTv0_n12_N8S7093C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
extern void _ZN10S7093C7_nt3v22Ev();
extern void _ZN10S7093C7_nt3v23Ev();
extern void _ZN10S7093C7_nt3v24Ev();
extern void _ZN10S7093C7_nt3v25Ev();
extern void _ZN10S7093C7_nt3v26Ev();
extern void _ZN10S7093C7_nt3v27Ev();
extern void _ZN10S7093C7_nt3v28Ev();
extern void _ZN7S7093C63v34Ev();
extern void _ZN7S7093C63v35Ev();
extern void _ZN7S7093C63v36Ev();
extern void _ZN7S7093C63v37Ev();
extern void _ZN7S7093C63v38Ev();
extern void _ZN7S7093C63v39Ev();
extern void _ZN7S7093C63v40Ev();
extern void _ZN7S7093C63v41Ev();
extern void _ZN7S7093C6D1Ev();
extern void _ZN7S7093C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C6__A2__7S7093C1[] = {
  ABISELECT(-416,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7093C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v34Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v35Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v36Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v37Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v38Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v39Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v40Ev,
  (VTBL_ENTRY)&_ZN7S7093C63v41Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7093C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev)();
extern void _ZN7S7093C53v15Ev();
extern void _ZN7S7093C53v16Ev();
extern void _ZN7S7093C53v17Ev();
extern void _ZN7S7093C53v18Ev();
extern void _ZN7S7093C53v19Ev();
extern void _ZN7S7093C53v20Ev();
extern void _ZN7S7093C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7093C5__A1__7S7093C6__A2__7S7093C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,208),
  ABISELECT(416,208),
  (VTBL_ENTRY)&(_ZTI7S7093C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7093C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7093C53v21Ev,
};
static  VTT_ENTRY vtt_S7093C1[] = {
  {&(_ZTV7S7093C1[7]),  7,322},
  {&(_tg__ZTV8S7093C10__7S7093C1[6]),  6,14},
  {&(_tg__ZTV7S7093C5__8S7093C10__7S7093C1[10]),  10,19},
  {&(_tg__ZTV8S7093C11__8S7093C10__7S7093C1[8]),  8,12},
  {&(_tg__ZTV7S7093C4__8S7093C10__7S7093C1[5]),  5,9},
  {&(_tg__ZTV7S7093C6__8S7093C10__7S7093C1[31]),  31,48},
  {&(_tg__ZTV7S7093C87S7093C6__8S7093C10__7S7093C1[2]),  2,16},
  {&(_ZTV7S7093C1[88]),  88,322},
  {&(_ZTV7S7093C1[223]),  223,322},
  {&(_ZTV7S7093C1[109]),  109,322},
  {&(_ZTV7S7093C1[128]),  128,322},
  {&(_ZTV7S7093C1[237]),  237,322},
  {&(_ZTV7S7093C1[145]),  145,322},
  {&(_ZTV7S7093C1[168]),  168,322},
  {&(_ZTV7S7093C1[187]),  187,322},
  {&(_ZTV7S7093C1[203]),  203,322},
  {&(_ZTV7S7093C1[211]),  211,322},
  {&(_ZTV7S7093C1[27]),  27,322},
  {&(_ZTV7S7093C1[254]),  254,322},
  {&(_ZTV7S7093C1[289]),  289,322},
  {&(_ZTV7S7093C1[308]),  308,322},
  {&(_tg__ZTV7S7093C3__7S7093C1[4]),  4,22},
  {&(_tg__ZTV7S7093C67S7093C3__7S7093C1[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C67S7093C3__7S7093C1[10]),  10,19},
  {&(_tg__ZTV7S7093C97S7093C3__7S7093C1[3]),  3,23},
  {&(_tg__ZTV7S7093C67S7093C97S7093C3__A1__7S7093C1[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C67S7093C97S7093C3__A1__7S7093C1[10]),  10,19},
  {&(_tg__ZTV7S7093C6__7S7093C97S7093C3__7S7093C1[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A2__7S7093C97S7093C3__7S7093C1[10]),  10,19},
  {&(_tg__ZTV7S7093C4__7S7093C3__7S7093C1[5]),  5,9},
  {&(_tg__ZTV7S7093C6__7S7093C3__7S7093C1[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A2__7S7093C3__7S7093C1[10]),  10,19},
  {&(_tg__ZTV7S7093C9__7S7093C3__7S7093C1[3]),  3,23},
  {&(_tg__ZTV7S7093C67S7093C9__A1__7S7093C3__7S7093C1[3]),  3,20},
  {&(_tg__ZTV8S7093C11__7S7093C1[5]),  5,9},
  {&(_tg__ZTV7S7093C4__8S7093C11__7S7093C1[5]),  5,9},
  {&(_tg__ZTV7S7093C6__8S7093C11__7S7093C1[31]),  31,48},
  {&(_tg__ZTV7S7093C87S7093C6__8S7093C11__7S7093C1[2]),  2,16},
  {&(_tg__ZTV7S7093C5__A1__8S7093C11__7S7093C1[10]),  10,19},
  {&(_tg__ZTV7S7093C6__A2__7S7093C1[3]),  3,20},
  {&(_tg__ZTV7S7093C5__A1__7S7093C6__A2__7S7093C1[10]),  10,19},
};
extern VTBL_ENTRY _ZTI7S7093C1[];
extern  VTBL_ENTRY _ZTV7S7093C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7093C1[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C11D0Ev,_ZTv0_n76_N8S7093C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7093C11D0Ev,_ZThn200_N8S7093C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C11D1Ev,_ZTv0_n76_N8S7093C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7093C11D1Ev,_ZThn200_N8S7093C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C3D0Ev,_ZTv0_n12_N7S7093C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7093C3D0Ev,_ZThn196_N7S7093C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7093C3D0Ev,_ZThn184_N7S7093C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C3D1Ev,_ZTv0_n12_N7S7093C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7093C3D1Ev,_ZThn196_N7S7093C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7093C3D1Ev,_ZThn184_N7S7093C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C9D0Ev,_ZTv0_n12_N7S7093C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7093C9D0Ev,_ZThn164_N7S7093C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C9D1Ev,_ZTv0_n12_N7S7093C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7093C9D1Ev,_ZThn164_N7S7093C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D0Ev,_ZTv0_n12_N7S7093C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7093C6D0Ev,_ZThn148_N7S7093C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7093C6D0Ev,_ZThn188_N7S7093C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C6D1Ev,_ZTv0_n12_N7S7093C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7093C6D1Ev,_ZThn148_N7S7093C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7093C6D1Ev,_ZThn188_N7S7093C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C10D0Ev,_ZTv0_n76_N8S7093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N8S7093C10D0Ev,_ZThn420_N8S7093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N8S7093C10D1Ev,_ZTv0_n76_N8S7093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N8S7093C10D1Ev,_ZThn420_N8S7093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7093C10D0Ev,_ZTv0_n32_N8S7093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S7093C10D0Ev,_ZThn220_N8S7093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7093C10D1Ev,_ZTv0_n32_N8S7093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S7093C10D1Ev,_ZThn220_N8S7093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C10D0Ev,_ZTv0_n12_N8S7093C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7093C10D0Ev,_ZThn200_N8S7093C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7093C10D0Ev,_ZThn212_N8S7093C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7093C10D1Ev,_ZTv0_n12_N8S7093C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7093C10D1Ev,_ZThn200_N8S7093C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7093C10D1Ev,_ZThn212_N8S7093C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7093C1D0Ev,_ZTv0_n76_N7S7093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N7S7093C1D0Ev,_ZThn428_N7S7093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7093C1D1Ev,_ZTv0_n76_N7S7093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N7S7093C1D1Ev,_ZThn428_N7S7093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7093C1D0Ev,_ZTv0_n32_N7S7093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S7093C1D0Ev,_ZThn228_N7S7093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7093C1D1Ev,_ZTv0_n32_N7S7093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S7093C1D1Ev,_ZThn228_N7S7093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C1D0Ev,_ZTv0_n12_N7S7093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7093C1D0Ev,_ZThn220_N7S7093C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7093C1D0Ev,_ZThn208_N7S7093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7093C1D1Ev,_ZTv0_n12_N7S7093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7093C1D1Ev,_ZThn220_N7S7093C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7093C1D1Ev,_ZThn208_N7S7093C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7093C1D0Ev,_ZTv0_n20_N7S7093C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7093C1D0Ev,_ZThn24_N7S7093C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7093C1D1Ev,_ZTv0_n20_N7S7093C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7093C1D1Ev,_ZThn24_N7S7093C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7093C1 = {  "S7093C1", // class name
  bases_S7093C1, 24,
  &(vtc_S7093C1[0]), // expected_vtbl_contents
  &(vtt_S7093C1[0]), // expected_vtt_contents
  ABISELECT(824,452), // object size
  NSPAIRA(_ZTI7S7093C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7093C1),322, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7093C1),41, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15098C2  : S20636C3 {
  ::S20636C12_nt s15098c2f0;
  ::S20636C8 s15098c2f1;
  int s15098c2f2;
};
//SIG(1 S15098C2) C1{ BC2{ m Fi[7] Fp FD FL Fc Fi[3] FL} FU3{ m} FC4{ VBC5{ VBC2 v2 Fc Fi Fc:8} BC6{ BC2 VBC5 v3 Fs:8 Fp Fc:0 Fc[4] Fi} VBC7{ BC5 Fp} VBC8{ VBC6 BC9{ BC2 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC10{ VBC2 VBC5 VBC9 Fc Fi FU3 Fc Fi} BC5 BC11{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU12{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC2 vd v1 Fc:1} Fi}



static void Test_S15098C2()
{
  extern Class_Descriptor cd_S15098C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(93,246)];
    init_test(&cd_S15098C2, buf);
    S15098C2 &lv = *(new (buf) S15098C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1472,980), "sizeof(S15098C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15098C2)");
    check_base_class_offset(lv, (S20636C3*), 0, "S15098C2");
    check_field_offset(lv, s15098c2f0, ABISELECT(96,76), "S15098C2.s15098c2f0");
    check_field_offset(lv, s15098c2f1, ABISELECT(112,80), "S15098C2.s15098c2f1");
    check_field_offset(lv, s15098c2f2, ABISELECT(1456,976), "S15098C2.s15098c2f2");
    test_class_info(&lv, &cd_S15098C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15098C2(Test_S15098C2, "S15098C2", ABISELECT(1472,980));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S15098C1  {
  char s15098c1f0;
  int s15098c1f1[2];
  long double s15098c1f2;
  ::S15098C2 s15098c1f3[6];
  void *s15098c1f4[7];
  void *s15098c1f5;
  void  mf15098c1(); // _ZN8S15098C19mf15098c1Ev
};
//SIG(1 S15098C1) C1{ m Fc Fi[2] FD FC2{ BC3{ m Fi[7] Fp FD FL Fc Fi[3] FL} FU4{ m} FC5{ VBC6{ VBC3 v2 Fc Fi Fc:8} BC7{ BC3 VBC6 v3 Fs:8 Fp Fc:0 Fc[4] Fi} VBC8{ BC6 Fp} VBC9{ VBC7 BC10{ BC3 v4 v5 Fi[3] Fc[15] Fc:8 Fp[7] Fi FL} BC11{ VBC3 VBC6 VBC10 Fc Fi FU4 Fc Fi} BC6 BC12{ v6 v7 v8 Fp[2] FL Fp[8] Fi Fp Fi FU13{ m Fc[9] Fi Fc FD Fs Fp Fp[2] Fp Fc[10] Fi Fc Fi Fp}[6] Fc} v9 Fp[7] Fc Fc Fi Fp} BC3 vd v1 Fc:1} Fi}[6] Fp[7] Fp}


void  S15098C1 ::mf15098c1(){}

static void Test_S15098C1()
{
  {
    init_simple_test("S15098C1");
    static S15098C1 lv;
    check2(sizeof(lv), ABISELECT(8928,5936), "sizeof(S15098C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15098C1)");
    check_field_offset(lv, s15098c1f0, 0, "S15098C1.s15098c1f0");
    check_field_offset(lv, s15098c1f1, 4, "S15098C1.s15098c1f1");
    check_field_offset(lv, s15098c1f2, ABISELECT(16,12), "S15098C1.s15098c1f2");
    check_field_offset(lv, s15098c1f3, ABISELECT(32,24), "S15098C1.s15098c1f3");
    check_field_offset(lv, s15098c1f4, ABISELECT(8864,5904), "S15098C1.s15098c1f4");
    check_field_offset(lv, s15098c1f5, ABISELECT(8920,5932), "S15098C1.s15098c1f5");
  }
}
static Arrange_To_Call_Me vS15098C1(Test_S15098C1, "S15098C1", ABISELECT(8928,5936));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19257C3  {
  long s19257c3f0[10];
  long double s19257c3f1;
  char s19257c3f2[2];
  long double s19257c3f3;
  void *s19257c3f4;
  __tsi64 s19257c3f5;
  char s19257c3f6;
  virtual void  v1(); // _ZN8S19257C32v1Ev
  virtual void  v2(); // _ZN8S19257C32v2Ev
  ~S19257C3(); // tgen
  S19257C3(); // tgen
};
//SIG(-1 S19257C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S19257C3 ::v1(){vfunc_called(this, "_ZN8S19257C32v1Ev");}
void  S19257C3 ::v2(){vfunc_called(this, "_ZN8S19257C32v2Ev");}
S19257C3 ::~S19257C3(){ note_dtor("S19257C3", this);} // tgen
S19257C3 ::S19257C3(){ note_ctor("S19257C3", this);} // tgen

static void Test_S19257C3()
{
  extern Class_Descriptor cd_S19257C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S19257C3, buf);
    S19257C3 *dp, &lv = *(dp=new (buf) S19257C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S19257C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C3)");
    check_field_offset(lv, s19257c3f0, ABISELECT(8,4), "S19257C3.s19257c3f0");
    check_field_offset(lv, s19257c3f1, ABISELECT(96,44), "S19257C3.s19257c3f1");
    check_field_offset(lv, s19257c3f2, ABISELECT(112,56), "S19257C3.s19257c3f2");
    check_field_offset(lv, s19257c3f3, ABISELECT(128,60), "S19257C3.s19257c3f3");
    check_field_offset(lv, s19257c3f4, ABISELECT(144,72), "S19257C3.s19257c3f4");
    check_field_offset(lv, s19257c3f5, ABISELECT(152,76), "S19257C3.s19257c3f5");
    check_field_offset(lv, s19257c3f6, ABISELECT(160,84), "S19257C3.s19257c3f6");
    test_class_info(&lv, &cd_S19257C3);
    dp->~S19257C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C3(Test_S19257C3, "S19257C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S19257C3C1Ev();
extern void _ZN8S19257C3D1Ev();
Name_Map name_map_S19257C3[] = {
  NSPAIR(_ZN8S19257C3C1Ev),
  NSPAIR(_ZN8S19257C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19257C3[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY vtc_S19257C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C3[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
Class_Descriptor cd_S19257C3 = {  "S19257C3", // class name
  0,0,//no base classes
  &(vtc_S19257C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S19257C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19257C3),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  S19257C4  : virtual S19257C3 {
  void *s19257c4f0;
  ::S19257C3 s19257c4f1;
  virtual  ~S19257C4(); // _ZN8S19257C4D2Ev
  S19257C4(); // tgen
};
//SIG(-1 S19257C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S19257C4()
{
  extern Class_Descriptor cd_S19257C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S19257C4, buf);
    S19257C4 *dp, &lv = *(dp=new (buf) S19257C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S19257C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C4)");
    check_base_class_offset(lv, (S19257C3*), ABISELECT(192,96), "S19257C4");
    check_field_offset(lv, s19257c4f0, ABISELECT(8,4), "S19257C4.s19257c4f0");
    check_field_offset(lv, s19257c4f1, ABISELECT(16,8), "S19257C4.s19257c4f1");
    test_class_info(&lv, &cd_S19257C4);
    dp->~S19257C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C4(Test_S19257C4, "S19257C4", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S19257C4C1Ev();
extern void _ZN8S19257C4D2Ev();
Name_Map name_map_S19257C4[] = {
  NSPAIR(_ZN8S19257C4C1Ev),
  NSPAIR(_ZN8S19257C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
static Base_Class bases_S19257C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C4[];
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY vtc_S19257C4[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19257C4[];
static  VTT_ENTRY vtt_S19257C4[] = {
  {&(_ZTV8S19257C4[3]),  3,11},
  {&(_ZTV8S19257C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
Class_Descriptor cd_S19257C4 = {  "S19257C4", // class name
  bases_S19257C4, 1,
  &(vtc_S19257C4[0]), // expected_vtbl_contents
  &(vtt_S19257C4[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S19257C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19257C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C4),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  S19257C2  : S19257C3 {
  ::S19257C3 s19257c2f0;
  ::S19257C4 s19257c2f1;
  ::S19257C3 s19257c2f2;
  virtual void  v3(); // _ZN8S19257C22v3Ev
  ~S19257C2(); // tgen
  S19257C2(); // tgen
};
//SIG(-1 S19257C2) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S19257C2()
{
  extern Class_Descriptor cd_S19257C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S19257C2, buf);
    S19257C2 *dp, &lv = *(dp=new (buf) S19257C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S19257C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C2)");
    check_base_class_offset(lv, (S19257C3*), 0, "S19257C2");
    check_field_offset(lv, s19257c2f0, ABISELECT(176,88), "S19257C2.s19257c2f0");
    check_field_offset(lv, s19257c2f1, ABISELECT(352,176), "S19257C2.s19257c2f1");
    check_field_offset(lv, s19257c2f2, ABISELECT(720,360), "S19257C2.s19257c2f2");
    test_class_info(&lv, &cd_S19257C2);
    dp->~S19257C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C2(Test_S19257C2, "S19257C2", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S19257C2C1Ev();
extern void _ZN8S19257C2D1Ev();
Name_Map name_map_S19257C2[] = {
  NSPAIR(_ZN8S19257C2C1Ev),
  NSPAIR(_ZN8S19257C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
static Base_Class bases_S19257C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C2[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY vtc_S19257C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C2[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
Class_Descriptor cd_S19257C2 = {  "S19257C2", // class name
  bases_S19257C2, 1,
  &(vtc_S19257C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S19257C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19257C2),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  S19257C7  : virtual S19257C3 {
  void *s19257c7f0;
  short s19257c7f1;
  ~S19257C7(); // tgen
  S19257C7(); // tgen
};
//SIG(-1 S19257C7) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S19257C7()
{
  extern Class_Descriptor cd_S19257C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S19257C7, buf);
    S19257C7 *dp, &lv = *(dp=new (buf) S19257C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S19257C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C7)");
    check_base_class_offset(lv, (S19257C3*), ABISELECT(32,12), "S19257C7");
    check_field_offset(lv, s19257c7f0, ABISELECT(8,4), "S19257C7.s19257c7f0");
    check_field_offset(lv, s19257c7f1, ABISELECT(16,8), "S19257C7.s19257c7f1");
    test_class_info(&lv, &cd_S19257C7);
    dp->~S19257C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C7(Test_S19257C7, "S19257C7", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S19257C7C1Ev();
extern void _ZN8S19257C7D1Ev();
Name_Map name_map_S19257C7[] = {
  NSPAIR(_ZN8S19257C7C1Ev),
  NSPAIR(_ZN8S19257C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
static Base_Class bases_S19257C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S19257C7[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY vtc_S19257C7[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19257C7[];
static  VTT_ENTRY vtt_S19257C7[] = {
  {&(_ZTV8S19257C7[3]),  3,9},
  {&(_ZTV8S19257C7[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
Class_Descriptor cd_S19257C7 = {  "S19257C7", // class name
  bases_S19257C7, 1,
  &(vtc_S19257C7[0]), // expected_vtbl_contents
  &(vtt_S19257C7[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S19257C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19257C7),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C7),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  S19257C6  : virtual S19257C7 , virtual S19257C4 , S19257C3 , virtual S19257C2 {
  ::S19257C2 s19257c6f0;
  void *s19257c6f1;
  long s19257c6f2[8];
  __tsi64 s19257c6f3[2];
  char s19257c6f4;
  ::S19257C2 s19257c6f5[7];
  virtual  ~S19257C6(); // _ZN8S19257C6D2Ev
  S19257C6(); // tgen
};
//SIG(-1 S19257C6) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S19257C6()
{
  extern Class_Descriptor cd_S19257C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S19257C6, buf);
    S19257C6 *dp, &lv = *(dp=new (buf) S19257C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S19257C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C6)");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(7472,3740), "S19257C6");
    check_base_class_offset(lv, (S19257C3*)(S19257C4*), ABISELECT(7472,3740), "S19257C6");
    check_base_class_offset(lv, (S19257C7*), ABISELECT(7440,3728), "S19257C6");
    check_base_class_offset(lv, (S19257C4*), ABISELECT(7648,3828), "S19257C6");
    /*is_ambiguous_... S19257C6::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*), 0, "S19257C6");
    check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(7840,3924), "S19257C6");
    check_base_class_offset(lv, (S19257C2*), ABISELECT(7840,3924), "S19257C6");
    check_field_offset(lv, s19257c6f0, ABISELECT(176,88), "S19257C6.s19257c6f0");
    check_field_offset(lv, s19257c6f1, ABISELECT(1072,536), "S19257C6.s19257c6f1");
    check_field_offset(lv, s19257c6f2, ABISELECT(1080,540), "S19257C6.s19257c6f2");
    check_field_offset(lv, s19257c6f3, ABISELECT(1144,572), "S19257C6.s19257c6f3");
    check_field_offset(lv, s19257c6f4, ABISELECT(1160,588), "S19257C6.s19257c6f4");
    check_field_offset(lv, s19257c6f5, ABISELECT(1168,592), "S19257C6.s19257c6f5");
    test_class_info(&lv, &cd_S19257C6);
    dp->~S19257C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C6(Test_S19257C6, "S19257C6", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S19257C6C1Ev();
extern void _ZN8S19257C6D2Ev();
Name_Map name_map_S19257C6[] = {
  NSPAIR(_ZN8S19257C6C1Ev),
  NSPAIR(_ZN8S19257C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C4;
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
static Base_Class bases_S19257C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S19257C4,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19257C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C6[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19257C6D1Ev,_ZThn3828_N8S19257C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19257C6D0Ev,_ZThn3828_N8S19257C6D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY vtc_S19257C6[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19257C6[];
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C6[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__8S19257C6[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C6[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C4__8S19257C6[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTT_ENTRY vtt_S19257C6[] = {
  {&(_ZTV8S19257C6[6]),  6,33},
  {&(_ZTV8S19257C6[13]),  13,33},
  {&(_ZTV8S19257C6[17]),  17,33},
  {&(_ZTV8S19257C6[23]),  23,33},
  {&(_ZTV8S19257C6[30]),  30,33},
  {&(_tg__ZTV8S19257C7__8S19257C6[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__8S19257C6[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C6[3]),  3,5},
  {&(_tg__ZTV8S19257C3__8S19257C4__8S19257C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19257C6D0Ev,_ZThn3828_N8S19257C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19257C6D1Ev,_ZThn3828_N8S19257C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19257C6 = {  "S19257C6", // class name
  bases_S19257C6, 6,
  &(vtc_S19257C6[0]), // expected_vtbl_contents
  &(vtt_S19257C6[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S19257C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19257C6),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C6),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19257C9  : S19257C3 , S19257C7 {
  int s19257c9f0;
  ~S19257C9(); // tgen
  S19257C9(); // tgen
};
//SIG(-1 S19257C9) C1{ BC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC3{ VBC2 Fp Fs} Fi}


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

static void Test_S19257C9()
{
  extern Class_Descriptor cd_S19257C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,49)];
    init_test(&cd_S19257C9, buf);
    S19257C9 *dp, &lv = *(dp=new (buf) S19257C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,192), "sizeof(S19257C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C9)");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*), 0, "S19257C9");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(192,104), "S19257C9");
    check_base_class_offset(lv, (S19257C7*), ABISELECT(168,88), "S19257C9");
    check_field_offset(lv, s19257c9f0, ABISELECT(188,100), "S19257C9.s19257c9f0");
    test_class_info(&lv, &cd_S19257C9);
    dp->~S19257C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C9(Test_S19257C9, "S19257C9", ABISELECT(368,192));

#else // __cplusplus

extern void _ZN8S19257C9C1Ev();
extern void _ZN8S19257C9D1Ev();
Name_Map name_map_S19257C9[] = {
  NSPAIR(_ZN8S19257C9C1Ev),
  NSPAIR(_ZN8S19257C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
static Base_Class bases_S19257C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19257C3,    ABISELECT(192,104), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(168,88), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C9[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY vtc_S19257C9[] = {
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(24,16),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  0,
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19257C9[];
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__8S19257C9[] = {
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTT_ENTRY vtt_S19257C9[] = {
  {&(_ZTV8S19257C9[3]),  3,14},
  {&(_tg__ZTV8S19257C7__8S19257C9[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__8S19257C9[4]),  4,6},
  {&(_ZTV8S19257C9[8]),  8,14},
  {&(_ZTV8S19257C9[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
Class_Descriptor cd_S19257C9 = {  "S19257C9", // class name
  bases_S19257C9, 3,
  &(vtc_S19257C9[0]), // expected_vtbl_contents
  &(vtt_S19257C9[0]), // expected_vtt_contents
  ABISELECT(368,192), // object size
  NSPAIRA(_ZTI8S19257C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19257C9),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C9),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  S19257C8  : S19257C9 , virtual S4224C43_nt , virtual S19257C2 {
  ::S19257C9 s19257c8f0;
  long double s19257c8f1;
  void *s19257c8f2[7];
  virtual  ~S19257C8(); // _ZN8S19257C8D2Ev
  virtual void  v4(); // _ZN8S19257C82v4Ev
  S19257C8(); // tgen
};
//SIG(-1 S19257C8) C1{ BC2{ BC3{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} VBC5{ m Fp} VBC6{ BC3 v4 FC3 FC7{ VBC3 vd Fp FC3} FC3} vd v1 FC2 FD Fp[7]}


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

static void Test_S19257C8()
{
  extern Class_Descriptor cd_S19257C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(108,220)];
    init_test(&cd_S19257C8, buf);
    S19257C8 *dp, &lv = *(dp=new (buf) S19257C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1712,876), "sizeof(S19257C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C8)");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*), 0, "S19257C8");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*), ABISELECT(640,336), "S19257C8");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*), ABISELECT(168,88), "S19257C8");
    check_base_class_offset(lv, (S19257C9*), 0, "S19257C8");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(808,424), "S19257C8");
    check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(816,428), "S19257C8");
    check_base_class_offset(lv, (S19257C2*), ABISELECT(816,428), "S19257C8");
    check_field_offset(lv, s19257c8f0, ABISELECT(192,104), "S19257C8.s19257c8f0");
    check_field_offset(lv, s19257c8f1, ABISELECT(560,296), "S19257C8.s19257c8f1");
    check_field_offset(lv, s19257c8f2, ABISELECT(576,308), "S19257C8.s19257c8f2");
    test_class_info(&lv, &cd_S19257C8);
    dp->~S19257C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C8(Test_S19257C8, "S19257C8", ABISELECT(1712,876));

#else // __cplusplus

extern void _ZN8S19257C8C1Ev();
extern void _ZN8S19257C8D2Ev();
Name_Map name_map_S19257C8[] = {
  NSPAIR(_ZN8S19257C8C1Ev),
  NSPAIR(_ZN8S19257C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
static Base_Class bases_S19257C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(640,336), //bcp->offset
    13, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(168,88), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19257C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4224C43_nt,    ABISELECT(808,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    ABISELECT(816,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(816,428), //bcp->offset
    19, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C8[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C8D1Ev();
extern void _ZN8S19257C8D0Ev();
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY vtc_S19257C8[] = {
  ABISELECT(816,428),
  ABISELECT(808,424),
  ABISELECT(640,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  ABISELECT(472,248),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  0,
  0,
  ABISELECT(-640,-336),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  0,
  0,
  0,
  ABISELECT(-816,-428),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19257C8[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C9__8S19257C8[] = {
  ABISELECT(640,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__8S19257C8[] = {
  ABISELECT(472,248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C9__8S19257C8[] = {
  0,
  0,
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C9__8S19257C8[] = {
  ABISELECT(472,248),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C9__8S19257C8[] = {
  0,
  0,
  ABISELECT(-640,-336),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTT_ENTRY vtt_S19257C8[] = {
  {&(_ZTV8S19257C8[5]),  5,27},
  {&(_tg__ZTV8S19257C9__8S19257C8[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C9__8S19257C8[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C9__8S19257C8[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C9__8S19257C8[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C9__8S19257C8[4]),  4,6},
  {&(_ZTV8S19257C8[13]),  13,27},
  {&(_ZTV8S19257C8[17]),  17,27},
  {&(_ZTV8S19257C8[24]),  24,27},
};
extern VTBL_ENTRY _ZTI8S19257C8[];
extern  VTBL_ENTRY _ZTV8S19257C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C8[];
Class_Descriptor cd_S19257C8 = {  "S19257C8", // class name
  bases_S19257C8, 7,
  &(vtc_S19257C8[0]), // expected_vtbl_contents
  &(vtt_S19257C8[0]), // expected_vtt_contents
  ABISELECT(1712,876), // object size
  NSPAIRA(_ZTI8S19257C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19257C8),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C8),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19257C5  : virtual S19257C6 , S19257C8 {
  void *s19257c5f0;
  virtual void  v5(); // _ZN8S19257C52v5Ev
  virtual void  v6(); // _ZN8S19257C52v6Ev
  ~S19257C5(); // tgen
  S19257C5(); // tgen
};
//SIG(-1 S19257C5) C1{ VBC2{ VBC3{ VBC4{ v3 v4 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC5{ VBC4 vd Fp FC4} BC4 VBC6{ BC4 v5 FC4 FC5 FC4} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC7{ BC8{ BC4 BC3 Fi} VBC9{ m Fp} VBC6 vd v6 FC8 FD Fp[7]} v1 v2 Fp}


void  S19257C5 ::v5(){vfunc_called(this, "_ZN8S19257C52v5Ev");}
void  S19257C5 ::v6(){vfunc_called(this, "_ZN8S19257C52v6Ev");}
S19257C5 ::~S19257C5(){ note_dtor("S19257C5", this);} // tgen
S19257C5 ::S19257C5(){ note_ctor("S19257C5", this);} // tgen

static void Test_S19257C5()
{
  extern Class_Descriptor cd_S19257C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(588,1180)];
    init_test(&cd_S19257C5, buf);
    S19257C5 *dp, &lv = *(dp=new (buf) S19257C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9392,4716), "sizeof(S19257C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C5)");
    /*is_ambiguous_... S19257C5::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(8112,4080), "S19257C5");
    check_base_class_offset(lv, (S19257C3*)(S19257C4*), ABISELECT(8112,4080), "S19257C5");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(8112,4080), "S19257C5");
    check_base_class_offset(lv, (S19257C7*)(S19257C6*), ABISELECT(8080,4068), "S19257C5");
    check_base_class_offset(lv, (S19257C4*)(S19257C6*), ABISELECT(8288,4168), "S19257C5");
    /*is_ambiguous_... S19257C6::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*), ABISELECT(640,340), "S19257C5");
    check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(8480,4264), "S19257C5");
    check_base_class_offset(lv, (S19257C2*)(S19257C6*), ABISELECT(8480,4264), "S19257C5");
    check_base_class_offset(lv, (S19257C2*)(S19257C8*), ABISELECT(8480,4264), "S19257C5");
    check_base_class_offset(lv, (S19257C6*), ABISELECT(640,340), "S19257C5");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C8*), 0, "S19257C5");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(168,88), "S19257C5");
    check_base_class_offset(lv, (S19257C9*)(S19257C8*), 0, "S19257C5");
    check_base_class_offset(lv, (S4224C43_nt*)(S19257C8*), ABISELECT(9376,4712), "S19257C5");
    check_base_class_offset(lv, (S19257C8*), 0, "S19257C5");
    check_field_offset(lv, s19257c5f0, ABISELECT(632,336), "S19257C5.s19257c5f0");
    test_class_info(&lv, &cd_S19257C5);
    dp->~S19257C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C5(Test_S19257C5, "S19257C5", ABISELECT(9392,4716));

#else // __cplusplus

extern void _ZN8S19257C5C1Ev();
extern void _ZN8S19257C5D1Ev();
Name_Map name_map_S19257C5[] = {
  NSPAIR(_ZN8S19257C5C1Ev),
  NSPAIR(_ZN8S19257C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C4;
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19257C8;
extern VTBL_ENTRY _ZTI8S19257C8[];
extern  VTBL_ENTRY _ZTV8S19257C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C8[];
static Base_Class bases_S19257C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(8112,4080), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(8080,4068), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19257C4,    ABISELECT(8288,4168), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(8480,4264), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C2,    ABISELECT(8480,4264), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C6,    ABISELECT(640,340), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C7,    ABISELECT(168,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19257C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(9376,4712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19257C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C5[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C5D1Ev();
extern void _ZN8S19257C5D0Ev();
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C52v5Ev();
extern void _ZN8S19257C52v6Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19257C5D1Ev,_ZTv0_n36_N8S19257C5D1Ev)();
extern void ABISELECT(_ZThn640_N8S19257C5D1Ev,_ZThn340_N8S19257C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19257C5D0Ev,_ZTv0_n36_N8S19257C5D0Ev)();
extern void ABISELECT(_ZThn640_N8S19257C5D0Ev,_ZThn340_N8S19257C5D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19257C5D1Ev,_ZTv0_n16_N8S19257C5D1Ev)();
extern void ABISELECT(_ZThn8288_N8S19257C5D1Ev,_ZThn4168_N8S19257C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C5D0Ev,_ZTv0_n16_N8S19257C5D0Ev)();
extern void ABISELECT(_ZThn8288_N8S19257C5D0Ev,_ZThn4168_N8S19257C5D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY vtc_S19257C5[] = {
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19257C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19257C52v6Ev,
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  ABISELECT(-640,-340),
  0,
  0,
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C5D1Ev,_ZTv0_n36_N8S19257C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C5D0Ev,_ZTv0_n36_N8S19257C5D0Ev),
  ABISELECT(32,12),
  ABISELECT(-8080,-4068),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(-8288,-4168),
  ABISELECT(-176,-88),
  ABISELECT(-8288,-4168),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C5D1Ev,_ZTv0_n16_N8S19257C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C5D0Ev,_ZTv0_n16_N8S19257C5D0Ev),
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19257C5[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C8D1Ev();
extern void _ZN8S19257C8D0Ev();
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__8S19257C5[] = {
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C98S19257C8__8S19257C5[] = {
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A1__8S19257C5[] = {
  ABISELECT(7944,3992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A1__8S19257C5[] = {
  0,
  0,
  ABISELECT(-7944,-3992),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C98S19257C8__8S19257C5[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C98S19257C8__8S19257C5[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__8S19257C8__8S19257C5[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C8__8S19257C5[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C8__8S19257C5[] = {
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C6__8S19257C5[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C6__8S19257C5[] = {
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C6__8S19257C5[] = {
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19257C6D1Ev,_ZThn3828_N8S19257C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19257C6D0Ev,_ZThn3828_N8S19257C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C6__8S19257C5[] = {
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C6__8S19257C5[] = {
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__8S19257C5[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C4__8S19257C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTT_ENTRY vtt_S19257C5[] = {
  {&(_ZTV8S19257C5[8]),  8,54},
  {&(_tg__ZTV8S19257C8__8S19257C5[5]),  5,10},
  {&(_tg__ZTV8S19257C98S19257C8__8S19257C5[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A1__8S19257C5[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A1__8S19257C5[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C98S19257C8__8S19257C5[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C98S19257C8__8S19257C5[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__8S19257C8__8S19257C5[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C8__8S19257C5[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C8__8S19257C5[5]),  5,8},
  {&(_ZTV8S19257C5[27]),  27,54},
  {&(_ZTV8S19257C5[34]),  34,54},
  {&(_ZTV8S19257C5[38]),  38,54},
  {&(_ZTV8S19257C5[44]),  44,54},
  {&(_ZTV8S19257C5[51]),  51,54},
  {&(_ZTV8S19257C5[18]),  18,54},
  {&(_tg__ZTV8S19257C6__8S19257C5[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C6__8S19257C5[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C6__8S19257C5[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C6__8S19257C5[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C6__8S19257C5[5]),  5,8},
  {&(_tg__ZTV8S19257C7__8S19257C5[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__8S19257C5[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C5[3]),  3,5},
  {&(_tg__ZTV8S19257C3__8S19257C4__8S19257C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19257C5[];
extern  VTBL_ENTRY _ZTV8S19257C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C5[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19257C6D0Ev,_ZThn3828_N8S19257C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19257C6D1Ev,_ZThn3828_N8S19257C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C5D0Ev,_ZTv0_n16_N8S19257C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19257C5D0Ev,_ZThn4168_N8S19257C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C5D1Ev,_ZTv0_n16_N8S19257C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19257C5D1Ev,_ZThn4168_N8S19257C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19257C5D0Ev,_ZTv0_n36_N8S19257C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19257C5D0Ev,_ZThn340_N8S19257C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19257C5D1Ev,_ZTv0_n36_N8S19257C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19257C5D1Ev,_ZThn340_N8S19257C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19257C5 = {  "S19257C5", // class name
  bases_S19257C5, 12,
  &(vtc_S19257C5[0]), // expected_vtbl_contents
  &(vtt_S19257C5[0]), // expected_vtt_contents
  ABISELECT(9392,4716), // object size
  NSPAIRA(_ZTI8S19257C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19257C5),54, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C5),25, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19257C12  : virtual S19257C3 , virtual S19257C4 , S19257C6 , S19257C7 , S19257C2 {
  void *s19257c12f0;
  char s19257c12f1;
  ~S19257C12(); // tgen
  S19257C12(); // tgen
};
//SIG(-1 S19257C12) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S19257C12()
{
  extern Class_Descriptor cd_S19257C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S19257C12, buf);
    S19257C12 *dp, &lv = *(dp=new (buf) S19257C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S19257C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C12)");
    /*is_ambiguous_... S19257C12::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*), ABISELECT(8384,4196), "S19257C12");
    check_base_class_offset(lv, (S19257C3*)(S19257C4*), ABISELECT(8384,4196), "S19257C12");
    /*is_ambiguous_... S19257C12::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(8384,4196), "S19257C12");
    /*is_ambiguous_... S19257C12::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(8384,4196), "S19257C12");
    check_base_class_offset(lv, (S19257C4*), ABISELECT(8560,4284), "S19257C12");
    check_base_class_offset(lv, (S19257C4*)(S19257C6*), ABISELECT(8560,4284), "S19257C12");
    check_base_class_offset(lv, (S19257C7*)(S19257C6*), ABISELECT(8752,4380), "S19257C12");
    /*is_ambiguous_... S19257C6::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*), 0, "S19257C12");
    /*is_ambiguous_... S19257C12::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(8784,4392), "S19257C12");
    check_base_class_offset(lv, (S19257C2*)(S19257C6*), ABISELECT(8784,4392), "S19257C12");
    check_base_class_offset(lv, (S19257C6*), 0, "S19257C12");
    /*is_ambiguous_... S19257C12::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C7*), ABISELECT(7440,3728), "S19257C12");
    /*is_ambiguous_... S19257C12::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(7472,3740), "S19257C12");
    /*is_ambiguous_... S19257C12::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C2*), ABISELECT(7472,3740), "S19257C12");
    check_field_offset(lv, s19257c12f0, ABISELECT(8368,4188), "S19257C12.s19257c12f0");
    check_field_offset(lv, s19257c12f1, ABISELECT(8376,4192), "S19257C12.s19257c12f1");
    test_class_info(&lv, &cd_S19257C12);
    dp->~S19257C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C12(Test_S19257C12, "S19257C12", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN9S19257C12C1Ev();
extern void _ZN9S19257C12D1Ev();
Name_Map name_map_S19257C12[] = {
  NSPAIR(_ZN9S19257C12C1Ev),
  NSPAIR(_ZN9S19257C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C4;
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
static Base_Class bases_S19257C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C4,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C7,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C2,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19257C7,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19257C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C2,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19257C12[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C12D1Ev();
extern void _ZN9S19257C12D0Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev)();
extern void ABISELECT(_ZThn8560_N9S19257C12D1Ev,_ZThn4284_N9S19257C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev)();
extern void ABISELECT(_ZThn8560_N9S19257C12D0Ev,_ZThn4284_N9S19257C12D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY vtc_S19257C12[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern VTBL_ENTRY _ZTV9S19257C12[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C6__9S19257C12[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C6__9S19257C12[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C6__9S19257C12[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19257C6D1Ev,_ZThn4284_N8S19257C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19257C6D0Ev,_ZThn4284_N8S19257C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C6__9S19257C12[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C6__9S19257C12[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A__9S19257C12[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__A__9S19257C12[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C12[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C4__9S19257C12[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C12[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__9S19257C12[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTT_ENTRY vtt_S19257C12[] = {
  {&(_ZTV9S19257C12[6]),  6,41},
  {&(_tg__ZTV8S19257C6__9S19257C12[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C6__9S19257C12[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C6__9S19257C12[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C6__9S19257C12[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C6__9S19257C12[5]),  5,8},
  {&(_tg__ZTV8S19257C7__A__9S19257C12[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__A__9S19257C12[4]),  4,6},
  {&(_ZTV9S19257C12[22]),  22,41},
  {&(_ZTV9S19257C12[28]),  28,41},
  {&(_ZTV9S19257C12[33]),  33,41},
  {&(_ZTV9S19257C12[38]),  38,41},
  {&(_ZTV9S19257C12[13]),  13,41},
  {&(_tg__ZTV8S19257C4__9S19257C12[3]),  3,5},
  {&(_tg__ZTV8S19257C3__8S19257C4__9S19257C12[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C12[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__9S19257C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19257C12[];
extern  VTBL_ENTRY _ZTV9S19257C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C12[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19257C6D0Ev,_ZThn4284_N8S19257C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19257C6D1Ev,_ZThn4284_N8S19257C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N9S19257C12D0Ev,_ZThn4284_N9S19257C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N9S19257C12D1Ev,_ZThn4284_N9S19257C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19257C12 = {  "S19257C12", // class name
  bases_S19257C12, 10,
  &(vtc_S19257C12[0]), // expected_vtbl_contents
  &(vtt_S19257C12[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI9S19257C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19257C12),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19257C12),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S19257C15  {
  void *s19257c15f0;
  int s19257c15f1;
  void *s19257c15f2;
  long double s19257c15f3;
  long double s19257c15f4;
  void  mf19257c15(); // _ZN9S19257C1510mf19257c15Ev
};
//SIG(1 S19257C15) U1{ m Fp Fi Fp FD FD}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19257C14  : S19257C9 {
  int s19257c14f0[5];
  void *s19257c14f1;
  ::S19257C7 s19257c14f2;
  ::S19257C15 s19257c14f3;
  char s19257c14f4[9];
  int s19257c14f5;
  __tsi64 s19257c14f6[2];
  ~S19257C14(); // tgen
  S19257C14(); // tgen
};
//SIG(-1 S19257C14) C1{ BC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} Fi[5] Fp FC4 FU5{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]}


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

static void Test_S19257C14()
{
  extern Class_Descriptor cd_S19257C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(42,91)];
    init_test(&cd_S19257C14, buf);
    S19257C14 *dp, &lv = *(dp=new (buf) S19257C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(656,360), "sizeof(S19257C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C14)");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*), 0, "S19257C14");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*), ABISELECT(480,272), "S19257C14");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*), ABISELECT(168,88), "S19257C14");
    check_base_class_offset(lv, (S19257C9*), 0, "S19257C14");
    check_field_offset(lv, s19257c14f0, ABISELECT(192,104), "S19257C14.s19257c14f0");
    check_field_offset(lv, s19257c14f1, ABISELECT(216,124), "S19257C14.s19257c14f1");
    check_field_offset(lv, s19257c14f2, ABISELECT(224,128), "S19257C14.s19257c14f2");
    check_field_offset(lv, s19257c14f3, ABISELECT(432,228), "S19257C14.s19257c14f3");
    check_field_offset(lv, s19257c14f4, ABISELECT(448,240), "S19257C14.s19257c14f4");
    check_field_offset(lv, s19257c14f5, ABISELECT(460,252), "S19257C14.s19257c14f5");
    check_field_offset(lv, s19257c14f6, ABISELECT(464,256), "S19257C14.s19257c14f6");
    test_class_info(&lv, &cd_S19257C14);
    dp->~S19257C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C14(Test_S19257C14, "S19257C14", ABISELECT(656,360));

#else // __cplusplus

extern void _ZN9S19257C14C1Ev();
extern void _ZN9S19257C14D1Ev();
Name_Map name_map_S19257C14[] = {
  NSPAIR(_ZN9S19257C14C1Ev),
  NSPAIR(_ZN9S19257C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
static Base_Class bases_S19257C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19257C3,    ABISELECT(480,272), //bcp->offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(168,88), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19257C9,    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 _ZTI9S19257C14[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY vtc_S19257C14[] = {
  ABISELECT(480,272),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(312,184),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S19257C14[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C9__9S19257C14[] = {
  ABISELECT(480,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C14[] = {
  ABISELECT(312,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C9__9S19257C14[] = {
  0,
  0,
  ABISELECT(-312,-184),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C9__9S19257C14[] = {
  ABISELECT(312,184),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C9__9S19257C14[] = {
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTT_ENTRY vtt_S19257C14[] = {
  {&(_ZTV9S19257C14[3]),  3,14},
  {&(_tg__ZTV8S19257C9__9S19257C14[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C14[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C9__9S19257C14[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C9__9S19257C14[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C9__9S19257C14[4]),  4,6},
  {&(_ZTV9S19257C14[8]),  8,14},
  {&(_ZTV9S19257C14[12]),  12,14},
};
extern VTBL_ENTRY _ZTI9S19257C14[];
extern  VTBL_ENTRY _ZTV9S19257C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C14[];
Class_Descriptor cd_S19257C14 = {  "S19257C14", // class name
  bases_S19257C14, 4,
  &(vtc_S19257C14[0]), // expected_vtbl_contents
  &(vtt_S19257C14[0]), // expected_vtt_contents
  ABISELECT(656,360), // object size
  NSPAIRA(_ZTI9S19257C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19257C14),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19257C14),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  S19257C13  : S19257C9 , virtual S19257C8 , virtual S19257C12 , S19257C14 , virtual S19257C6 {
  int s19257c13f0[6];
  ::S19257C7 s19257c13f1;
  ~S19257C13(); // tgen
  S19257C13(); // tgen
};
//SIG(-1 S19257C13) C1{ BC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} VBC5{ BC2 VBC6{ m Fp} VBC7{ BC3 v3 FC3 FC8{ VBC3 vd Fp FC3} FC3} vd v4 FC2 FD Fp[7]} VBC9{ VBC3 VBC8 BC10{ VBC4 VBC8 BC3 VBC7 vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC4 BC7 Fp Fc} BC11{ BC2 Fi[5] Fp FC4 FU12{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]} VBC10 Fi[6] FC4}


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

static void Test_S19257C13()
{
  extern Class_Descriptor cd_S19257C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1168,2353)];
    init_test(&cd_S19257C13, buf);
    S19257C13 *dp, &lv = *(dp=new (buf) S19257C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(18672,9408), "sizeof(S19257C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C13)");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*), 0, "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*), ABISELECT(912,500), "S19257C13");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(912,500), "S19257C13");
    /*is_ambiguous_... S19257C12::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C12*), ABISELECT(912,500), "S19257C13");
    check_base_class_offset(lv, (S19257C3*)(S19257C4*), ABISELECT(912,500), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(912,500), "S19257C13");
    /*is_ambiguous_... S19257C12::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C12*), ABISELECT(912,500), "S19257C13");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C14*), ABISELECT(912,500), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C9*), ABISELECT(168,88), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C9*), 0, "S19257C13");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C8*), ABISELECT(1088,588), "S19257C13");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(1256,676), "S19257C13");
    check_base_class_offset(lv, (S19257C9*)(S19257C8*), ABISELECT(1088,588), "S19257C13");
    check_base_class_offset(lv, (S4224C43_nt*)(S19257C8*), ABISELECT(1720,924), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(1728,928), "S19257C13");
    check_base_class_offset(lv, (S19257C2*)(S19257C8*), ABISELECT(1728,928), "S19257C13");
    check_base_class_offset(lv, (S19257C2*)(S19257C6*)(S19257C12*), ABISELECT(1728,928), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*), ABISELECT(1728,928), "S19257C13");
    check_base_class_offset(lv, (S19257C8*), ABISELECT(1088,588), "S19257C13");
    check_base_class_offset(lv, (S19257C4*)(S19257C12*), ABISELECT(11008,5572), "S19257C13");
    check_base_class_offset(lv, (S19257C4*)(S19257C6*)(S19257C12*), ABISELECT(11008,5572), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*), ABISELECT(11008,5572), "S19257C13");
    check_base_class_offset(lv, (S19257C7*)(S19257C6*)(S19257C12*), ABISELECT(11200,5668), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*), ABISELECT(11200,5668), "S19257C13");
    /*is_ambiguous_... S19257C6::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*)(S19257C12*), ABISELECT(2624,1376), "S19257C13");
    check_base_class_offset(lv, (S19257C6*)(S19257C12*), ABISELECT(2624,1376), "S19257C13");
    /*is_ambiguous_... S19257C12::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C12*), ABISELECT(10064,5104), "S19257C13");
    /*is_ambiguous_... S19257C12::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*)(S19257C12*), ABISELECT(10096,5116), "S19257C13");
    /*is_ambiguous_... S19257C12::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C12*), ABISELECT(10096,5116), "S19257C13");
    check_base_class_offset(lv, (S19257C12*), ABISELECT(2624,1376), "S19257C13");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C14*), ABISELECT(192,104), "S19257C13");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C14*), ABISELECT(360,192), "S19257C13");
    check_base_class_offset(lv, (S19257C9*)(S19257C14*), ABISELECT(192,104), "S19257C13");
    check_base_class_offset(lv, (S19257C14*), ABISELECT(192,104), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*), ABISELECT(11232,5680), "S19257C13");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C6*), ABISELECT(11232,5680), "S19257C13");
    check_field_offset(lv, s19257c13f0, ABISELECT(672,376), "S19257C13.s19257c13f0");
    check_field_offset(lv, s19257c13f1, ABISELECT(704,400), "S19257C13.s19257c13f1");
    test_class_info(&lv, &cd_S19257C13);
    dp->~S19257C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C13(Test_S19257C13, "S19257C13", ABISELECT(18672,9408));

#else // __cplusplus

extern void _ZN9S19257C13C1Ev();
extern void _ZN9S19257C13D1Ev();
Name_Map name_map_S19257C13[] = {
  NSPAIR(_ZN9S19257C13C1Ev),
  NSPAIR(_ZN9S19257C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C8;
extern VTBL_ENTRY _ZTI8S19257C8[];
extern  VTBL_ENTRY _ZTV8S19257C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C8[];
extern Class_Descriptor cd_S19257C4;
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C12;
extern VTBL_ENTRY _ZTI9S19257C12[];
extern  VTBL_ENTRY _ZTV9S19257C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C12[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C14;
extern VTBL_ENTRY _ZTI9S19257C14[];
extern  VTBL_ENTRY _ZTV9S19257C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C14[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
static Base_Class bases_S19257C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(912,500), //bcp->offset
    25, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(168,88), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19257C9,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19257C3,    ABISELECT(1088,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(1256,676), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(1088,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(1720,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19257C3,    ABISELECT(1728,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(1728,928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19257C8,    ABISELECT(1088,588), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C4,    ABISELECT(11008,5572), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(11200,5668), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(2624,1376), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C6,    ABISELECT(2624,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(10064,5104), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(10096,5116), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(10096,5116), //bcp->offset
    73, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19257C12,    ABISELECT(2624,1376), //bcp->offset
    56, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    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
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(360,192), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19257C14,    ABISELECT(192,104), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19257C3,    ABISELECT(11232,5680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19257C6,    ABISELECT(11232,5680), //bcp->offset
    87, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19257C13[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C13D1Ev();
extern void _ZN9S19257C13D0Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn1088_N9S19257C13D1Ev,_ZThn588_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn1088_N9S19257C13D0Ev,_ZThn588_N9S19257C13D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn2624_N9S19257C13D1Ev,_ZThn1376_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn2624_N9S19257C13D0Ev,_ZThn1376_N9S19257C13D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19257C13D1Ev,_ZThn5572_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19257C13D0Ev,_ZThn5572_N9S19257C13D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn11232_N9S19257C13D1Ev,_ZThn5680_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn11232_N9S19257C13D0Ev,_ZThn5680_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19257C13[] = {
  ABISELECT(11232,5680),
  ABISELECT(11200,5668),
  ABISELECT(11008,5572),
  ABISELECT(2624,1376),
  ABISELECT(1728,928),
  ABISELECT(1720,924),
  ABISELECT(1088,588),
  ABISELECT(912,500),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D0Ev,
  ABISELECT(744,412),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  ABISELECT(720,396),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(552,308),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  0,
  0,
  ABISELECT(-912,-500),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  0,
  ABISELECT(-1088,-588),
  0,
  0,
  ABISELECT(640,340),
  ABISELECT(632,336),
  ABISELECT(-176,-88),
  ABISELECT(-1088,-588),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  ABISELECT(-344,-176),
  ABISELECT(-1256,-676),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  0,
  0,
  0,
  ABISELECT(-1728,-928),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  ABISELECT(7472,3740),
  ABISELECT(-2624,-1376),
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(8384,4196),
  ABISELECT(-1712,-876),
  ABISELECT(8576,4292),
  ABISELECT(-2624,-1376),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
  ABISELECT(-9152,-4604),
  ABISELECT(-10064,-5104),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  ABISELECT(-10096,-5116),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  ABISELECT(-11008,-5572),
  ABISELECT(-10096,-5072),
  ABISELECT(-11008,-5572),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev),
  ABISELECT(-10288,-5168),
  ABISELECT(-11200,-5668),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  ABISELECT(-11232,-5680),
  0,
  0,
  ABISELECT(-9504,-4752),
  ABISELECT(-224,-108),
  ABISELECT(-10320,-5180),
  ABISELECT(-32,-12),
  ABISELECT(-11232,-5680),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19257C13[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C9__9S19257C13[] = {
  ABISELECT(912,500),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C13[] = {
  ABISELECT(744,412),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C9__9S19257C13[] = {
  0,
  0,
  ABISELECT(-744,-412),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C9__9S19257C13[] = {
  ABISELECT(744,412),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C9__9S19257C13[] = {
  0,
  0,
  ABISELECT(-912,-500),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C14__9S19257C13[] = {
  ABISELECT(720,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C14__A2__9S19257C13[] = {
  ABISELECT(720,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C13[] = {
  ABISELECT(552,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C14__A4__9S19257C13[] = {
  0,
  0,
  ABISELECT(-552,-308),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C14__A2__9S19257C13[] = {
  ABISELECT(552,308),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C14__A2__9S19257C13[] = {
  0,
  0,
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C14__9S19257C13[] = {
  ABISELECT(552,308),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C14__9S19257C13[] = {
  0,
  0,
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C8D1Ev();
extern void _ZN8S19257C8D0Ev();
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__9S19257C13[] = {
  ABISELECT(640,340),
  ABISELECT(632,336),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C98S19257C8__A1__9S19257C13[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C13[] = {
  ABISELECT(-344,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A1__9S19257C13[] = {
  0,
  0,
  ABISELECT(344,176),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C98S19257C8__A1__9S19257C13[] = {
  ABISELECT(-344,-176),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C98S19257C8__A1__9S19257C13[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__8S19257C8__9S19257C13[] = {
  ABISELECT(-344,-176),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C8__9S19257C13[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C8__9S19257C13[] = {
  0,
  0,
  0,
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C12D1Ev();
extern void _ZN9S19257C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C12__9S19257C13[] = {
  ABISELECT(-896,-448),
  ABISELECT(8384,4196),
  ABISELECT(-1712,-876),
  ABISELECT(8576,4292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C69S19257C12__9S19257C13[] = {
  ABISELECT(-896,-448),
  ABISELECT(8384,4196),
  ABISELECT(-1712,-876),
  ABISELECT(8576,4292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C69S19257C12__9S19257C13[] = {
  ABISELECT(-10288,-5168),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C69S19257C12__9S19257C13[] = {
  0,
  0,
  ABISELECT(1712,876),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZThn8384_N8S19257C6D1Ev,_ZThn4196_N8S19257C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
extern void ABISELECT(_ZThn8384_N8S19257C6D0Ev,_ZThn4196_N8S19257C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C69S19257C12__9S19257C13[] = {
  ABISELECT(-8384,-4196),
  ABISELECT(-10096,-5072),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C69S19257C12__9S19257C13[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A3__9S19257C13[] = {
  ABISELECT(-9152,-4604),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C79S19257C12__A3__9S19257C13[] = {
  0,
  0,
  ABISELECT(9152,4604),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__9S19257C12__9S19257C13[] = {
  0,
  0,
  ABISELECT(1712,876),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev)();
extern void ABISELECT(_ZThn8384_N9S19257C12D1Ev,_ZThn4196_N9S19257C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev)();
extern void ABISELECT(_ZThn8384_N9S19257C12D0Ev,_ZThn4196_N9S19257C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C12__9S19257C13[] = {
  ABISELECT(-8384,-4196),
  ABISELECT(-10096,-5072),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C12__9S19257C13[] = {
  ABISELECT(-10288,-5168),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C12__9S19257C13[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A__9S19257C12__9S19257C13[] = {
  ABISELECT(-9152,-4604),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C13[] = {
  ABISELECT(-10096,-5072),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C4__9S19257C13[] = {
  0,
  0,
  ABISELECT(10096,5072),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A2__9S19257C13[] = {
  ABISELECT(-10288,-5168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__A2__9S19257C13[] = {
  0,
  0,
  ABISELECT(10288,5168),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C6__A1__9S19257C13[] = {
  ABISELECT(-9504,-4752),
  ABISELECT(-224,-108),
  ABISELECT(-10320,-5180),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C6__A1__9S19257C13[] = {
  ABISELECT(-10288,-5168),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C6__A1__9S19257C13[] = {
  0,
  0,
  ABISELECT(10320,5180),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C6__A1__9S19257C13[] = {
  ABISELECT(224,108),
  ABISELECT(-10096,-5072),
  ABISELECT(224,108),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C6__A1__9S19257C13[] = {
  0,
  0,
  0,
  ABISELECT(9504,4752),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTT_ENTRY vtt_S19257C13[] = {
  {&(_ZTV9S19257C13[10]),  10,100},
  {&(_tg__ZTV8S19257C9__9S19257C13[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C9__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C9__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C9__9S19257C13[4]),  4,6},
  {&(_tg__ZTV9S19257C14__9S19257C13[3]),  3,5},
  {&(_tg__ZTV8S19257C99S19257C14__A2__9S19257C13[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C14__A4__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C14__A2__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C14__A2__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C14__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C14__9S19257C13[4]),  4,6},
  {&(_ZTV9S19257C13[17]),  17,100},
  {&(_ZTV9S19257C13[29]),  29,100},
  {&(_ZTV9S19257C13[40]),  40,100},
  {&(_ZTV9S19257C13[48]),  48,100},
  {&(_ZTV9S19257C13[53]),  53,100},
  {&(_ZTV9S19257C13[66]),  66,100},
  {&(_ZTV9S19257C13[82]),  82,100},
  {&(_ZTV9S19257C13[87]),  87,100},
  {&(_ZTV9S19257C13[73]),  73,100},
  {&(_ZTV9S19257C13[75]),  75,100},
  {&(_ZTV9S19257C13[20]),  20,100},
  {&(_ZTV9S19257C13[25]),  25,100},
  {&(_ZTV9S19257C13[96]),  96,100},
  {&(_tg__ZTV8S19257C8__9S19257C13[5]),  5,10},
  {&(_tg__ZTV8S19257C98S19257C8__A1__9S19257C13[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A1__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C98S19257C8__A1__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C98S19257C8__A1__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__8S19257C8__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C8__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C8__9S19257C13[5]),  5,8},
  {&(_tg__ZTV9S19257C12__9S19257C13[6]),  6,10},
  {&(_tg__ZTV8S19257C69S19257C12__9S19257C13[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C69S19257C12__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C69S19257C12__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C69S19257C12__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C69S19257C12__9S19257C13[5]),  5,8},
  {&(_tg__ZTV8S19257C79S19257C12__A3__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C79S19257C12__A3__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C3__9S19257C12__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C4__9S19257C12__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C12__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C12__9S19257C13[5]),  5,8},
  {&(_tg__ZTV8S19257C7__A__9S19257C12__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C4__9S19257C13[3]),  3,5},
  {&(_tg__ZTV8S19257C3__8S19257C4__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C7__A2__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__A2__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C6__A1__9S19257C13[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C6__A1__9S19257C13[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C6__A1__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C6__A1__9S19257C13[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C6__A1__9S19257C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19257C13[];
extern  VTBL_ENTRY _ZTV9S19257C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C13[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N9S19257C12D0Ev,_ZThn4196_N9S19257C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N9S19257C12D1Ev,_ZThn4196_N9S19257C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N8S19257C6D0Ev,_ZThn4196_N8S19257C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N8S19257C6D1Ev,_ZThn4196_N8S19257C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19257C13D0Ev,_ZThn5572_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19257C13D1Ev,_ZThn5572_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11232_N9S19257C13D0Ev,_ZThn5680_N9S19257C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2624_N9S19257C13D0Ev,_ZThn1376_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11232_N9S19257C13D1Ev,_ZThn5680_N9S19257C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2624_N9S19257C13D1Ev,_ZThn1376_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S19257C13D0Ev,_ZThn588_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S19257C13D1Ev,_ZThn588_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19257C13 = {  "S19257C13", // class name
  bases_S19257C13, 25,
  &(vtc_S19257C13[0]), // expected_vtbl_contents
  &(vtt_S19257C13[0]), // expected_vtt_contents
  ABISELECT(18672,9408), // object size
  NSPAIRA(_ZTI9S19257C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19257C13),100, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19257C13),58, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19257C11  : S19257C12 , S19257C13 {
  long s19257c11f0;
  __tsi64  :0;
  long s19257c11f2;
  void *s19257c11f3;
  virtual  ~S19257C11(); // _ZN9S19257C11D2Ev
  S19257C11(); // tgen
};
//SIG(-1 S19257C11) C1{ BC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ VBC3 vd Fp FC3} BC5{ VBC6{ VBC3 Fp Fs} VBC4 BC3 VBC7{ BC3 v3 FC3 FC4 FC3} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} BC8{ BC9{ BC3 BC6 Fi} VBC10{ BC9 VBC11{ m Fp} VBC7 vd v4 FC9 FD Fp[7]} VBC2 BC12{ BC9 Fi[5] Fp FC6 FU13{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]} VBC5 Fi[6] FC6} vd Fl FL:0 Fl Fp}


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

static void Test_S19257C11()
{
  extern Class_Descriptor cd_S19257C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1694,3405)];
    init_test(&cd_S19257C11, buf);
    S19257C11 *dp, &lv = *(dp=new (buf) S19257C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(27088,13616), "sizeof(S19257C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C11)");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C12*), ABISELECT(9328,4708), "S19257C11");
    check_base_class_offset(lv, (S19257C3*)(S19257C4*), ABISELECT(9328,4708), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(9328,4708), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C12*), ABISELECT(9328,4708), "S19257C11");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C13*), ABISELECT(9328,4708), "S19257C11");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(9328,4708), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C12*), ABISELECT(9328,4708), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C12*), ABISELECT(9328,4708), "S19257C11");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(9328,4708), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C12*), ABISELECT(9504,4796), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*)(S19257C12*), ABISELECT(9504,4796), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C12*), ABISELECT(9504,4796), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*)(S19257C12*), ABISELECT(9504,4796), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*), ABISELECT(9504,4796), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*)(S19257C12*), ABISELECT(9696,4892), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*)(S19257C12*), ABISELECT(9696,4892), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*), ABISELECT(9696,4892), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*)(S19257C12*), 0, "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(9728,4904), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*)(S19257C12*), ABISELECT(9728,4904), "S19257C11");
    check_base_class_offset(lv, (S19257C2*)(S19257C8*), ABISELECT(9728,4904), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*)(S19257C12*), ABISELECT(9728,4904), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*), ABISELECT(9728,4904), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C12*), 0, "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C12*), ABISELECT(7440,3728), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*)(S19257C12*), ABISELECT(7472,3740), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C12*), ABISELECT(7472,3740), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C12*), 0, "S19257C11");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C13*), ABISELECT(8384,4196), "S19257C11");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C13*), ABISELECT(8552,4284), "S19257C11");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C9*)(S19257C13*), ABISELECT(8384,4196), "S19257C11");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C8*), ABISELECT(10624,5352), "S19257C11");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(10792,5440), "S19257C11");
    check_base_class_offset(lv, (S19257C9*)(S19257C8*), ABISELECT(10624,5352), "S19257C11");
    check_base_class_offset(lv, (S4224C43_nt*)(S19257C8*), ABISELECT(11256,5688), "S19257C11");
    check_base_class_offset(lv, (S19257C8*)(S19257C13*), ABISELECT(10624,5352), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*)(S19257C12*), ABISELECT(11264,5692), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C12*), ABISELECT(11264,5692), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C12*), ABISELECT(18704,9420), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*)(S19257C12*), ABISELECT(18736,9432), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C12*), ABISELECT(18736,9432), "S19257C11");
    check_base_class_offset(lv, (S19257C12*)(S19257C13*), ABISELECT(11264,5692), "S19257C11");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(8576,4300), "S19257C11");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(8744,4388), "S19257C11");
    check_base_class_offset(lv, (S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(8576,4300), "S19257C11");
    check_base_class_offset(lv, (S19257C14*)(S19257C13*), ABISELECT(8576,4300), "S19257C11");
    /*is_ambiguous_... S19257C11::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*), ABISELECT(19648,9888), "S19257C11");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C13*), ABISELECT(19648,9888), "S19257C11");
    check_base_class_offset(lv, (S19257C13*), ABISELECT(8384,4196), "S19257C11");
    check_field_offset(lv, s19257c11f0, ABISELECT(9296,4696), "S19257C11.s19257c11f0");
    check_field_offset(lv, s19257c11f2, ABISELECT(9304,4700), "S19257C11.s19257c11f2");
    check_field_offset(lv, s19257c11f3, ABISELECT(9312,4704), "S19257C11.s19257c11f3");
    test_class_info(&lv, &cd_S19257C11);
    dp->~S19257C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C11(Test_S19257C11, "S19257C11", ABISELECT(27088,13616));

#else // __cplusplus

extern void _ZN9S19257C11C1Ev();
extern void _ZN9S19257C11D2Ev();
Name_Map name_map_S19257C11[] = {
  NSPAIR(_ZN9S19257C11C1Ev),
  NSPAIR(_ZN9S19257C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C4;
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C12;
extern VTBL_ENTRY _ZTI9S19257C12[];
extern  VTBL_ENTRY _ZTV9S19257C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C12[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19257C8;
extern VTBL_ENTRY _ZTI8S19257C8[];
extern  VTBL_ENTRY _ZTV8S19257C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C8[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C12;
extern VTBL_ENTRY _ZTI9S19257C12[];
extern  VTBL_ENTRY _ZTV9S19257C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C12[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C14;
extern VTBL_ENTRY _ZTI9S19257C14[];
extern  VTBL_ENTRY _ZTV9S19257C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C14[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C13;
extern VTBL_ENTRY _ZTI9S19257C13[];
extern  VTBL_ENTRY _ZTV9S19257C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C13[];
static Base_Class bases_S19257C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(9328,4708), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19257C4,    ABISELECT(9504,4796), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(9696,4892), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(9728,4904), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C2,    ABISELECT(9728,4904), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(7440,3728), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(7472,3740), //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
    22, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19257C12,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19257C3,    ABISELECT(8384,4196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(8552,4284), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(8384,4196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(10624,5352), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(10792,5440), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(10624,5352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(11256,5688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19257C8,    ABISELECT(10624,5352), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(11264,5692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19257C6,    ABISELECT(11264,5692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(18704,9420), //bcp->offset
    101, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(18736,9432), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(18736,9432), //bcp->offset
    104, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19257C12,    ABISELECT(11264,5692), //bcp->offset
    87, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(8576,4300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(8744,4388), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(8576,4300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19257C14,    ABISELECT(8576,4300), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(19648,9888), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S19257C6,    ABISELECT(19648,9888), //bcp->offset
    109, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19257C13,    ABISELECT(8384,4196), //bcp->offset
    22, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19257C11[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C11D1Ev();
extern void _ZN9S19257C11D0Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZThn8384_N9S19257C11D1Ev,_ZThn4196_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn8384_N9S19257C11D0Ev,_ZThn4196_N9S19257C11D0Ev)();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S19257C11D1Ev,_ZTv0_n16_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn9504_N9S19257C11D1Ev,_ZThn4796_N9S19257C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C11D0Ev,_ZTv0_n16_N9S19257C11D0Ev)();
extern void ABISELECT(_ZThn9504_N9S19257C11D0Ev,_ZThn4796_N9S19257C11D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19257C11D1Ev,_ZTv0_n32_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn10624_N9S19257C11D1Ev,_ZThn5352_N9S19257C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19257C11D0Ev,_ZTv0_n32_N9S19257C11D0Ev)();
extern void ABISELECT(_ZThn10624_N9S19257C11D0Ev,_ZThn5352_N9S19257C11D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn11264_N9S19257C11D1Ev,_ZThn5692_N9S19257C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev)();
extern void ABISELECT(_ZThn11264_N9S19257C11D0Ev,_ZThn5692_N9S19257C11D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn19648_N9S19257C11D1Ev,_ZThn9888_N9S19257C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev)();
extern void ABISELECT(_ZThn19648_N9S19257C11D0Ev,_ZThn9888_N9S19257C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19257C11[] = {
  ABISELECT(19648,9888),
  ABISELECT(11264,5692),
  ABISELECT(11256,5688),
  ABISELECT(10624,5352),
  ABISELECT(9728,4904),
  ABISELECT(9504,4796),
  ABISELECT(9328,4708),
  ABISELECT(9696,4892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C11D0Ev,
  ABISELECT(1888,980),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  ABISELECT(11264,5692),
  ABISELECT(1312,696),
  ABISELECT(1120,600),
  ABISELECT(2880,1496),
  ABISELECT(1344,708),
  ABISELECT(2872,1492),
  ABISELECT(2240,1156),
  ABISELECT(944,512),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19257C11D1Ev,_ZThn4196_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19257C11D0Ev,_ZThn4196_N9S19257C11D0Ev),
  ABISELECT(776,424),
  ABISELECT(-8552,-4284),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  ABISELECT(752,408),
  ABISELECT(-8576,-4300),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(584,320),
  ABISELECT(-8744,-4388),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  0,
  0,
  ABISELECT(-9328,-4708),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(-9504,-4796),
  ABISELECT(-176,-88),
  ABISELECT(-9504,-4796),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C11D1Ev,_ZTv0_n16_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C11D0Ev,_ZTv0_n16_N9S19257C11D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-9696,-4892),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  0,
  0,
  0,
  ABISELECT(-9728,-4904),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  0,
  ABISELECT(-10624,-5352),
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(632,336),
  ABISELECT(-1296,-644),
  ABISELECT(-10624,-5352),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C11D1Ev,_ZTv0_n32_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C11D0Ev,_ZTv0_n32_N9S19257C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  ABISELECT(-1464,-732),
  ABISELECT(-10792,-5440),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  ABISELECT(7472,3740),
  ABISELECT(-11264,-5692),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  ABISELECT(-11264,-5692),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev),
  ABISELECT(-9376,-4712),
  ABISELECT(-18704,-9420),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  ABISELECT(-18736,-9432),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  ABISELECT(-19648,-9888),
  0,
  0,
  ABISELECT(-9920,-4984),
  ABISELECT(-10144,-5092),
  ABISELECT(-10320,-5180),
  ABISELECT(-9952,-4996),
  ABISELECT(-19648,-9888),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19257C11[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C12D1Ev();
extern void _ZN9S19257C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C12__A__9S19257C11[] = {
  ABISELECT(9728,4904),
  ABISELECT(9504,4796),
  ABISELECT(9328,4708),
  ABISELECT(9696,4892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C69S19257C12__9S19257C11[] = {
  ABISELECT(9728,4904),
  ABISELECT(9504,4796),
  ABISELECT(9328,4708),
  ABISELECT(9696,4892),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C69S19257C12__9S19257C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-9696,-4892),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C69S19257C12__9S19257C11[] = {
  0,
  0,
  ABISELECT(-9328,-4708),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZThn9504_N8S19257C6D1Ev,_ZThn4796_N8S19257C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
extern void ABISELECT(_ZThn9504_N8S19257C6D0Ev,_ZThn4796_N8S19257C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C69S19257C12__9S19257C11[] = {
  ABISELECT(-9504,-4796),
  ABISELECT(-176,-88),
  ABISELECT(-9504,-4796),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C69S19257C12__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(-9728,-4904),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A1__9S19257C11[] = {
  ABISELECT(1888,980),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C79S19257C12__A1__9S19257C11[] = {
  0,
  0,
  ABISELECT(-1888,-980),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__9S19257C12__A__9S19257C11[] = {
  0,
  0,
  ABISELECT(-9328,-4708),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev)();
extern void ABISELECT(_ZThn9504_N9S19257C12D1Ev,_ZThn4796_N9S19257C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev)();
extern void ABISELECT(_ZThn9504_N9S19257C12D0Ev,_ZThn4796_N9S19257C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C12__A__9S19257C11[] = {
  ABISELECT(-9504,-4796),
  ABISELECT(-176,-88),
  ABISELECT(-9504,-4796),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C12__A__9S19257C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-9696,-4892),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C12__A__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(-9728,-4904),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A__9S19257C12__A__9S19257C11[] = {
  ABISELECT(1888,980),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C13D1Ev();
extern void _ZN9S19257C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C13__9S19257C11[] = {
  ABISELECT(11264,5692),
  ABISELECT(1312,696),
  ABISELECT(1120,600),
  ABISELECT(2880,1496),
  ABISELECT(1344,708),
  ABISELECT(2872,1492),
  ABISELECT(2240,1156),
  ABISELECT(944,512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C13__9S19257C11[] = {
  ABISELECT(944,512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C13__A2__9S19257C11[] = {
  ABISELECT(776,424),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C13__A2__9S19257C11[] = {
  0,
  0,
  ABISELECT(-776,-424),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C13__9S19257C11[] = {
  ABISELECT(776,424),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C13__9S19257C11[] = {
  0,
  0,
  ABISELECT(-944,-512),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C149S19257C13__9S19257C11[] = {
  ABISELECT(752,408),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C149S19257C13__A2__9S19257C11[] = {
  ABISELECT(752,408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C149S19257C13__A5__9S19257C11[] = {
  ABISELECT(584,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C149S19257C13__A5__9S19257C11[] = {
  0,
  0,
  ABISELECT(-584,-320),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C149S19257C13__A2__9S19257C11[] = {
  ABISELECT(584,320),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C149S19257C13__A2__9S19257C11[] = {
  0,
  0,
  ABISELECT(-752,-408),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C149S19257C13__9S19257C11[] = {
  ABISELECT(584,320),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C149S19257C13__9S19257C11[] = {
  0,
  0,
  ABISELECT(-752,-408),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C13__9S19257C11[] = {
  ABISELECT(776,424),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C13__9S19257C11[] = {
  0,
  0,
  ABISELECT(-944,-512),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn2240_N9S19257C13D1Ev,_ZThn1156_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn2240_N9S19257C13D0Ev,_ZThn1156_N9S19257C13D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__9S19257C13__9S19257C11[] = {
  0,
  ABISELECT(-2240,-1156),
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(632,336),
  ABISELECT(-1296,-644),
  ABISELECT(-2240,-1156),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C13__9S19257C11[] = {
  ABISELECT(-1464,-732),
  ABISELECT(-2408,-1244),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C13__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(-1344,-708),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn2880_N9S19257C13D1Ev,_ZThn1496_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn2880_N9S19257C13D0Ev,_ZThn1496_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19257C12__9S19257C13__9S19257C11[] = {
  ABISELECT(7472,3740),
  ABISELECT(-2880,-1496),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  ABISELECT(-2880,-1496),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn1120_N9S19257C13D1Ev,_ZThn600_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn1120_N9S19257C13D0Ev,_ZThn600_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C13__9S19257C11[] = {
  ABISELECT(-1120,-600),
  ABISELECT(-176,-88),
  ABISELECT(-1120,-600),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A2__9S19257C13__9S19257C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-1312,-696),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A3__9S19257C13__9S19257C11[] = {
  ABISELECT(-9376,-4712),
  ABISELECT(-10320,-5224),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C29S19257C12__A1__9S19257C13__9S19257C11[] = {
  ABISELECT(-10352,-5236),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C14__9S19257C13__9S19257C11[] = {
  ABISELECT(752,408),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C13__9S19257C11[] = {
  ABISELECT(584,320),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn11264_N9S19257C13D1Ev,_ZThn5692_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn11264_N9S19257C13D0Ev,_ZThn5692_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C6__A1__9S19257C13__9S19257C11[] = {
  ABISELECT(-11264,-5692),
  0,
  0,
  ABISELECT(-9920,-4984),
  ABISELECT(-10144,-5092),
  ABISELECT(-10320,-5180),
  ABISELECT(-9952,-4996),
  ABISELECT(-11264,-5692),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C11[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C4__9S19257C11[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C11[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__9S19257C11[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C8D1Ev();
extern void _ZN8S19257C8D0Ev();
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__9S19257C11[] = {
  ABISELECT(-896,-448),
  ABISELECT(632,336),
  ABISELECT(-1296,-644),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C98S19257C8__A1__9S19257C11[] = {
  ABISELECT(-1296,-644),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A3__9S19257C11[] = {
  ABISELECT(-1464,-732),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A3__9S19257C11[] = {
  0,
  0,
  ABISELECT(1464,732),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C98S19257C8__A1__9S19257C11[] = {
  ABISELECT(-1464,-732),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C98S19257C8__A1__9S19257C11[] = {
  0,
  0,
  ABISELECT(1296,644),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__8S19257C8__9S19257C11[] = {
  ABISELECT(-1464,-732),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C8__9S19257C11[] = {
  0,
  0,
  ABISELECT(1296,644),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C8__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C12D1Ev();
extern void _ZN9S19257C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C12__A1__9S19257C11[] = {
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C69S19257C12__A1__9S19257C11[] = {
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C69S19257C12__A1__9S19257C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(1568,800),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C69S19257C12__A1__9S19257C11[] = {
  0,
  0,
  ABISELECT(1936,984),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C69S19257C12__A1__9S19257C11[] = {
  ABISELECT(1760,896),
  ABISELECT(-176,-88),
  ABISELECT(1760,896),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C69S19257C12__A1__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(1536,788),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A4__9S19257C11[] = {
  ABISELECT(-9376,-4712),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C79S19257C12__A4__9S19257C11[] = {
  0,
  0,
  ABISELECT(9376,4712),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__9S19257C12__A1__9S19257C11[] = {
  0,
  0,
  ABISELECT(1936,984),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C12__A1__9S19257C11[] = {
  ABISELECT(1760,896),
  ABISELECT(-176,-88),
  ABISELECT(1760,896),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C12__A1__9S19257C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(1568,800),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C12__A1__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(1536,788),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A__9S19257C12__A1__9S19257C11[] = {
  ABISELECT(-9376,-4712),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C6__A2__9S19257C11[] = {
  ABISELECT(-9920,-4984),
  ABISELECT(-10144,-5092),
  ABISELECT(-10320,-5180),
  ABISELECT(-9952,-4996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C6__A2__9S19257C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(9952,4996),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C6__A2__9S19257C11[] = {
  0,
  0,
  ABISELECT(10320,5180),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C6__A2__9S19257C11[] = {
  ABISELECT(10144,5092),
  ABISELECT(-176,-88),
  ABISELECT(10144,5092),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C6__A2__9S19257C11[] = {
  0,
  0,
  0,
  ABISELECT(9920,4984),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTT_ENTRY vtt_S19257C11[] = {
  {&(_ZTV9S19257C11[10]),  10,122},
  {&(_tg__ZTV9S19257C12__A__9S19257C11[6]),  6,10},
  {&(_tg__ZTV8S19257C69S19257C12__9S19257C11[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C69S19257C12__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C69S19257C12__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C69S19257C12__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C69S19257C12__9S19257C11[5]),  5,8},
  {&(_tg__ZTV8S19257C79S19257C12__A1__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C79S19257C12__A1__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C3__9S19257C12__A__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C4__9S19257C12__A__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C12__A__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C12__A__9S19257C11[5]),  5,8},
  {&(_tg__ZTV8S19257C7__A__9S19257C12__A__9S19257C11[3]),  3,3},
  {&(_tg__ZTV9S19257C13__9S19257C11[10]),  10,14},
  {&(_tg__ZTV8S19257C99S19257C13__9S19257C11[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C13__A2__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C13__A2__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C13__9S19257C11[4]),  4,6},
  {&(_tg__ZTV9S19257C149S19257C13__9S19257C11[3]),  3,5},
  {&(_tg__ZTV8S19257C99S19257C149S19257C13__A2__9S19257C11[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C149S19257C13__A5__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C149S19257C13__A5__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C149S19257C13__A2__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C149S19257C13__A2__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C149S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C149S19257C13__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C13__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C8__9S19257C13__9S19257C11[9]),  9,14},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C13__9S19257C11[5]),  5,8},
  {&(_tg__ZTV9S19257C12__9S19257C13__9S19257C11[10]),  10,14},
  {&(_tg__ZTV8S19257C4__9S19257C13__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__A2__9S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C79S19257C12__A3__9S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C29S19257C12__A1__9S19257C13__9S19257C11[2]),  2,5},
  {&(_tg__ZTV9S19257C14__9S19257C13__9S19257C11[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C13__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C6__A1__9S19257C13__9S19257C11[9]),  9,13},
  {&(_ZTV9S19257C11[51]),  51,122},
  {&(_ZTV9S19257C11[57]),  57,122},
  {&(_ZTV9S19257C11[62]),  62,122},
  {&(_ZTV9S19257C11[67]),  67,122},
  {&(_ZTV9S19257C11[17]),  17,122},
  {&(_ZTV9S19257C11[32]),  32,122},
  {&(_ZTV9S19257C11[39]),  39,122},
  {&(_ZTV9S19257C11[79]),  79,122},
  {&(_ZTV9S19257C11[87]),  87,122},
  {&(_ZTV9S19257C11[97]),  97,122},
  {&(_ZTV9S19257C11[104]),  104,122},
  {&(_ZTV9S19257C11[106]),  106,122},
  {&(_ZTV9S19257C11[42]),  42,122},
  {&(_ZTV9S19257C11[47]),  47,122},
  {&(_ZTV9S19257C11[118]),  118,122},
  {&(_tg__ZTV8S19257C4__9S19257C11[3]),  3,5},
  {&(_tg__ZTV8S19257C3__8S19257C4__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C8__9S19257C11[5]),  5,10},
  {&(_tg__ZTV8S19257C98S19257C8__A1__9S19257C11[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A3__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A3__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C98S19257C8__A1__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C98S19257C8__A1__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__8S19257C8__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C8__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C8__9S19257C11[5]),  5,8},
  {&(_tg__ZTV9S19257C12__A1__9S19257C11[6]),  6,10},
  {&(_tg__ZTV8S19257C69S19257C12__A1__9S19257C11[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C69S19257C12__A1__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C69S19257C12__A1__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C69S19257C12__A1__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C69S19257C12__A1__9S19257C11[5]),  5,8},
  {&(_tg__ZTV8S19257C79S19257C12__A4__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C79S19257C12__A4__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C3__9S19257C12__A1__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C4__9S19257C12__A1__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C12__A1__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C12__A1__9S19257C11[5]),  5,8},
  {&(_tg__ZTV8S19257C7__A__9S19257C12__A1__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C6__A2__9S19257C11[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C6__A2__9S19257C11[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C6__A2__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C6__A2__9S19257C11[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C6__A2__9S19257C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19257C11[];
extern  VTBL_ENTRY _ZTV9S19257C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C11[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N9S19257C13D0Ev,_ZThn600_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N9S19257C13D1Ev,_ZThn600_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19257C13D0Ev,_ZThn5692_N9S19257C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N9S19257C13D0Ev,_ZThn1496_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19257C13D1Ev,_ZThn5692_N9S19257C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N9S19257C13D1Ev,_ZThn1496_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N9S19257C13D0Ev,_ZThn1156_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N9S19257C13D1Ev,_ZThn1156_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19257C12D0Ev,_ZThn4796_N9S19257C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19257C12D1Ev,_ZThn4796_N9S19257C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N8S19257C6D0Ev,_ZThn4796_N8S19257C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N8S19257C6D1Ev,_ZThn4796_N8S19257C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19648_N9S19257C11D0Ev,_ZThn9888_N9S19257C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19257C11D0Ev,_ZThn5692_N9S19257C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19648_N9S19257C11D1Ev,_ZThn9888_N9S19257C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19257C11D1Ev,_ZThn5692_N9S19257C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C11D0Ev,_ZTv0_n32_N9S19257C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10624_N9S19257C11D0Ev,_ZThn5352_N9S19257C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C11D1Ev,_ZTv0_n32_N9S19257C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10624_N9S19257C11D1Ev,_ZThn5352_N9S19257C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C11D0Ev,_ZTv0_n16_N9S19257C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19257C11D0Ev,_ZThn4796_N9S19257C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C11D1Ev,_ZTv0_n16_N9S19257C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19257C11D1Ev,_ZThn4796_N9S19257C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19257C11 = {  "S19257C11", // class name
  bases_S19257C11, 32,
  &(vtc_S19257C11[0]), // expected_vtbl_contents
  &(vtt_S19257C11[0]), // expected_vtt_contents
  ABISELECT(27088,13616), // object size
  NSPAIRA(_ZTI9S19257C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19257C11),122, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19257C11),87, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19257C1  : virtual S19257C2 , virtual S19257C5 , virtual S19257C11 , S19257C13 {
  void *s19257c1f0;
  int s19257c1f1;
  void *s19257c1f2;
  ::S20636C21_nt s19257c1f3;
  ~S19257C1(); // tgen
  S19257C1(); // tgen
};
//SIG(1 S19257C1) C1{ VBC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} v3 FC3 FC4{ VBC3 vd Fp FC3} FC3} VBC5{ VBC6{ VBC7{ VBC3 Fp Fs} VBC4 BC3 VBC2 vd FC2 Fp Fl[8] FL[2] Fc FC2[7]} BC8{ BC9{ BC3 BC7 Fi} VBC10{ m Fp} VBC2 vd v4 FC9 FD Fp[7]} v5 v6 Fp} VBC11{ BC12{ VBC3 VBC4 BC6 BC7 BC2 Fp Fc} BC13{ BC9 VBC8 VBC12 BC14{ BC9 Fi[5] Fp FC7 FU15{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]} VBC6 Fi[6] FC7} vd Fl FL:0 Fl Fp} BC13 Fp Fi Fp FC16{}}


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

static void Test_S19257C1()
{
  extern Class_Descriptor cd_S19257C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1794,3619)];
    init_test(&cd_S19257C1, buf);
    S19257C1 *dp, &lv = *(dp=new (buf) S19257C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(28688,14472), "sizeof(S19257C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19257C1)");
    /*is_ambiguous_... S19257C1::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*), ABISELECT(944,516), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C2 */ AMB_check_base_class_offset(lv, (S19257C2*), ABISELECT(944,516), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*), ABISELECT(944,516), "S19257C1");
    check_base_class_offset(lv, (S19257C2*)(S19257C8*)(S19257C5*), ABISELECT(944,516), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*)(S19257C12*)(S19257C11*), ABISELECT(944,516), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C8 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C8*), ABISELECT(944,516), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C6*)(S19257C12*), ABISELECT(944,516), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C7 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*), ABISELECT(9952,5044), "S19257C1");
    check_base_class_offset(lv, (S19257C3*)(S19257C4*), ABISELECT(9952,5044), "S19257C1");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C8*)(S19257C5*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C12*)(S19257C11*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C12*)(S19257C11*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C13*)(S19257C11*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C8 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C12*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C12*), ABISELECT(9952,5044), "S19257C1");
    check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C14*)(S19257C13*)(S19257C11*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C13*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C7*)(S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(9952,5044), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*), ABISELECT(9920,5032), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*)(S19257C12*)(S19257C11*), ABISELECT(9920,5032), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C6*)(S19257C12*), ABISELECT(9920,5032), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*), ABISELECT(10128,5132), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C12*)(S19257C11*), ABISELECT(10128,5132), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*)(S19257C12*)(S19257C11*), ABISELECT(10128,5132), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C12*), ABISELECT(10128,5132), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C4*)(S19257C6*)(S19257C12*), ABISELECT(10128,5132), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*), ABISELECT(2480,1304), "S19257C1");
    check_base_class_offset(lv, (S19257C6*)(S19257C5*), ABISELECT(2480,1304), "S19257C1");
    /*is_ambiguous_... S19257C13::S19257C6 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C13*)(S19257C11*), ABISELECT(2480,1304), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C13*), ABISELECT(2480,1304), "S19257C1");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C8*)(S19257C5*), ABISELECT(1840,964), "S19257C1");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C8*)(S19257C5*), ABISELECT(2008,1052), "S19257C1");
    check_base_class_offset(lv, (S19257C9*)(S19257C8*)(S19257C5*), ABISELECT(1840,964), "S19257C1");
    check_base_class_offset(lv, (S4224C43_nt*)(S19257C8*)(S19257C5*), ABISELECT(10320,5228), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C8 */ AMB_check_base_class_offset(lv, (S4224C43_nt*)(S19257C8*), ABISELECT(10320,5228), "S19257C1");
    check_base_class_offset(lv, (S19257C8*)(S19257C5*), ABISELECT(1840,964), "S19257C1");
    check_base_class_offset(lv, (S19257C5*), ABISELECT(1840,964), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*)(S19257C12*)(S19257C11*), ABISELECT(10336,5232), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C12*)(S19257C11*), ABISELECT(10336,5232), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C12*)(S19257C11*), ABISELECT(17776,8960), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*)(S19257C12*)(S19257C11*), ABISELECT(17808,8972), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C12*)(S19257C11*), ABISELECT(17808,8972), "S19257C1");
    /*is_ambiguous_... S19257C11::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C12*)(S19257C11*), ABISELECT(10336,5232), "S19257C1");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C13*)(S19257C11*), ABISELECT(18720,9428), "S19257C1");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C13*)(S19257C11*), ABISELECT(18888,9516), "S19257C1");
    /*is_ambiguous_... S19257C13::S19257C9 */ AMB_check_base_class_offset(lv, (S19257C9*)(S19257C13*)(S19257C11*), ABISELECT(18720,9428), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C8 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C8*), ABISELECT(19664,9940), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C8 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C8*), ABISELECT(19832,10028), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C8 */ AMB_check_base_class_offset(lv, (S19257C9*)(S19257C8*), ABISELECT(19664,9940), "S19257C1");
    check_base_class_offset(lv, (S19257C8*)(S19257C13*)(S19257C11*), ABISELECT(19664,9940), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C8*)(S19257C13*), ABISELECT(19664,9940), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C6*)(S19257C12*), ABISELECT(20304,10276), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C6*)(S19257C12*), ABISELECT(20304,10276), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C12*), ABISELECT(27744,14004), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C2*)(S19257C12*), ABISELECT(27776,14016), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C12 */ AMB_check_base_class_offset(lv, (S19257C2*)(S19257C12*), ABISELECT(27776,14016), "S19257C1");
    check_base_class_offset(lv, (S19257C12*)(S19257C13*)(S19257C11*), ABISELECT(20304,10276), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C12*)(S19257C13*), ABISELECT(20304,10276), "S19257C1");
    /*is_ambiguous_... S19257C9::S19257C3 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C14*)(S19257C13*)(S19257C11*), ABISELECT(18912,9532), "S19257C1");
    check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C14*)(S19257C13*)(S19257C11*), ABISELECT(19080,9620), "S19257C1");
    check_base_class_offset(lv, (S19257C9*)(S19257C14*)(S19257C13*)(S19257C11*), ABISELECT(18912,9532), "S19257C1");
    check_base_class_offset(lv, (S19257C14*)(S19257C13*)(S19257C11*), ABISELECT(18912,9532), "S19257C1");
    check_base_class_offset(lv, (S19257C13*)(S19257C11*), ABISELECT(18720,9428), "S19257C1");
    check_base_class_offset(lv, (S19257C11*), ABISELECT(10336,5232), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C13*), 0, "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C13*), ABISELECT(168,88), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C9*)(S19257C13*), 0, "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C3*)(S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(192,104), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C7*)(S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(360,192), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C9*)(S19257C14*)(S19257C13*), ABISELECT(192,104), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C14*)(S19257C13*), ABISELECT(192,104), "S19257C1");
    /*is_ambiguous_... S19257C1::S19257C13 */ AMB_check_base_class_offset(lv, (S19257C13*), 0, "S19257C1");
    check_field_offset(lv, s19257c1f0, ABISELECT(912,500), "S19257C1.s19257c1f0");
    check_field_offset(lv, s19257c1f1, ABISELECT(920,504), "S19257C1.s19257c1f1");
    check_field_offset(lv, s19257c1f2, ABISELECT(928,508), "S19257C1.s19257c1f2");
    check_field_offset(lv, s19257c1f3, ABISELECT(936,512), "S19257C1.s19257c1f3");
    test_class_info(&lv, &cd_S19257C1);
    dp->~S19257C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19257C1(Test_S19257C1, "S19257C1", ABISELECT(28688,14472));

#else // __cplusplus

extern void _ZN8S19257C1C1Ev();
extern void _ZN8S19257C1D1Ev();
Name_Map name_map_S19257C1[] = {
  NSPAIR(_ZN8S19257C1C1Ev),
  NSPAIR(_ZN8S19257C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C4;
extern VTBL_ENTRY _ZTI8S19257C4[];
extern  VTBL_ENTRY _ZTV8S19257C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C4[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19257C8;
extern VTBL_ENTRY _ZTI8S19257C8[];
extern  VTBL_ENTRY _ZTV8S19257C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C8[];
extern Class_Descriptor cd_S19257C5;
extern VTBL_ENTRY _ZTI8S19257C5[];
extern  VTBL_ENTRY _ZTV8S19257C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C5[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C12;
extern VTBL_ENTRY _ZTI9S19257C12[];
extern  VTBL_ENTRY _ZTV9S19257C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C12[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C8;
extern VTBL_ENTRY _ZTI8S19257C8[];
extern  VTBL_ENTRY _ZTV8S19257C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C8[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C6;
extern VTBL_ENTRY _ZTI8S19257C6[];
extern  VTBL_ENTRY _ZTV8S19257C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C6[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C2;
extern VTBL_ENTRY _ZTI8S19257C2[];
extern  VTBL_ENTRY _ZTV8S19257C2[];
extern Class_Descriptor cd_S19257C12;
extern VTBL_ENTRY _ZTI9S19257C12[];
extern  VTBL_ENTRY _ZTV9S19257C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C12[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C14;
extern VTBL_ENTRY _ZTI9S19257C14[];
extern  VTBL_ENTRY _ZTV9S19257C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C14[];
extern Class_Descriptor cd_S19257C13;
extern VTBL_ENTRY _ZTI9S19257C13[];
extern  VTBL_ENTRY _ZTV9S19257C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C13[];
extern Class_Descriptor cd_S19257C11;
extern VTBL_ENTRY _ZTI9S19257C11[];
extern  VTBL_ENTRY _ZTV9S19257C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C11[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C3;
extern VTBL_ENTRY _ZTI8S19257C3[];
extern  VTBL_ENTRY _ZTV8S19257C3[];
extern Class_Descriptor cd_S19257C7;
extern VTBL_ENTRY _ZTI8S19257C7[];
extern  VTBL_ENTRY _ZTV8S19257C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C7[];
extern Class_Descriptor cd_S19257C9;
extern VTBL_ENTRY _ZTI8S19257C9[];
extern  VTBL_ENTRY _ZTV8S19257C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C9[];
extern Class_Descriptor cd_S19257C14;
extern VTBL_ENTRY _ZTI9S19257C14[];
extern  VTBL_ENTRY _ZTV9S19257C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C14[];
extern Class_Descriptor cd_S19257C13;
extern VTBL_ENTRY _ZTI9S19257C13[];
extern  VTBL_ENTRY _ZTV9S19257C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19257C13[];
static Base_Class bases_S19257C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19257C3,    ABISELECT(944,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
    1, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(944,516), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    ABISELECT(9952,5044), //bcp->offset
    75, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19257C7,    ABISELECT(9920,5032), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C4,    ABISELECT(10128,5132), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(2480,1304), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C6,    ABISELECT(2480,1304), //bcp->offset
    59, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(1840,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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(2008,1052), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(1840,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(10320,5228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19257C8,    ABISELECT(1840,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19257C5,    ABISELECT(1840,964), //bcp->offset
    35, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    ABISELECT(10336,5232), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S19257C6,    ABISELECT(10336,5232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(17776,8960), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(17808,8972), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19257C2,    ABISELECT(17808,8972), //bcp->offset
    108, //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
    27, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19257C12,    ABISELECT(10336,5232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(18720,9428), //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(18888,9516), //bcp->offset
    127, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(18720,9428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(19664,9940), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(19832,10028), //bcp->offset
    152, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(19664,9940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19257C8,    ABISELECT(19664,9940), //bcp->offset
    138, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(20304,10276), //bcp->offset
    -1, //bcp->virtual_function_table_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
    27, //immediately_derived
  0, 0},
  {&cd_S19257C6,    ABISELECT(20304,10276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(27744,14004), //bcp->offset
    169, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19257C3,    ABISELECT(27776,14016), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S19257C2,    ABISELECT(27776,14016), //bcp->offset
    172, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19257C12,    ABISELECT(20304,10276), //bcp->offset
    155, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19257C3,    ABISELECT(18912,9532), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(19080,9620), //bcp->offset
    135, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(18912,9532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19257C14,    ABISELECT(18912,9532), //bcp->offset
    130, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19257C13,    ABISELECT(18720,9428), //bcp->offset
    113, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19257C11,    ABISELECT(10336,5232), //bcp->offset
    87, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19257C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(168,88), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19257C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19257C3,    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
    41, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19257C7,    ABISELECT(360,192), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19257C9,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19257C14,    ABISELECT(192,104), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19257C13,    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
    45, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19257C1[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C1D1Ev();
extern void _ZN8S19257C1D0Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n88_N8S19257C1D1Ev,_ZTv0_n44_N8S19257C1D1Ev)();
extern void ABISELECT(_ZThn1840_N8S19257C1D1Ev,_ZThn964_N8S19257C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19257C1D0Ev,_ZTv0_n44_N8S19257C1D0Ev)();
extern void ABISELECT(_ZThn1840_N8S19257C1D0Ev,_ZThn964_N8S19257C1D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C52v5Ev();
extern void _ZN8S19257C52v6Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19257C1D1Ev,_ZTv0_n36_N8S19257C1D1Ev)();
extern void ABISELECT(_ZThn2480_N8S19257C1D1Ev,_ZThn1304_N8S19257C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19257C1D0Ev,_ZTv0_n36_N8S19257C1D0Ev)();
extern void ABISELECT(_ZThn2480_N8S19257C1D0Ev,_ZThn1304_N8S19257C1D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19257C1D1Ev,_ZTv0_n16_N8S19257C1D1Ev)();
extern void ABISELECT(_ZThn10128_N8S19257C1D1Ev,_ZThn5132_N8S19257C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C1D0Ev,_ZTv0_n16_N8S19257C1D0Ev)();
extern void ABISELECT(_ZThn10128_N8S19257C1D0Ev,_ZThn5132_N8S19257C1D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n104_N8S19257C1D1Ev,_ZTv0_n52_N8S19257C1D1Ev)();
extern void ABISELECT(_ZThn10336_N8S19257C1D1Ev,_ZThn5232_N8S19257C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19257C1D0Ev,_ZTv0_n52_N8S19257C1D0Ev)();
extern void ABISELECT(_ZThn10336_N8S19257C1D0Ev,_ZThn5232_N8S19257C1D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTvn8384_n104_N8S19257C1D1Ev,_ZTvn4196_n52_N8S19257C1D1Ev)();
extern void ABISELECT(_ZTvn8384_n104_N8S19257C1D0Ev,_ZTvn4196_n52_N8S19257C1D0Ev)();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19257C1D1Ev,_ZTv0_n32_N8S19257C1D1Ev)();
extern void ABISELECT(_ZThn19664_N8S19257C1D1Ev,_ZThn9940_N8S19257C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19257C1D0Ev,_ZTv0_n32_N8S19257C1D0Ev)();
extern void ABISELECT(_ZThn19664_N8S19257C1D0Ev,_ZThn9940_N8S19257C1D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19257C1D1Ev,_ZTv0_n36_N8S19257C1D1Ev)();
extern void ABISELECT(_ZThn20304_N8S19257C1D1Ev,_ZThn10276_N8S19257C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19257C1D0Ev,_ZTv0_n36_N8S19257C1D0Ev)();
extern void ABISELECT(_ZThn20304_N8S19257C1D0Ev,_ZThn10276_N8S19257C1D0Ev)() __attribute__((weak));
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY vtc_S19257C1[] = {
  ABISELECT(10336,5232),
  ABISELECT(1840,964),
  ABISELECT(2480,1304),
  ABISELECT(9920,5032),
  ABISELECT(10128,5132),
  ABISELECT(20304,10276),
  ABISELECT(944,516),
  ABISELECT(10320,5228),
  ABISELECT(19664,9940),
  ABISELECT(9952,5044),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C1D0Ev,
  ABISELECT(9784,4956),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  ABISELECT(9760,4940),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(9592,4852),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  0,
  0,
  0,
  ABISELECT(-944,-516),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  0,
  0,
  0,
  ABISELECT(-1840,-964),
  0,
  0,
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(-896,-448),
  ABISELECT(8480,4264),
  ABISELECT(8112,4080),
  ABISELECT(-1840,-964),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19257C1D1Ev,_ZTv0_n44_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19257C1D0Ev,_ZTv0_n44_N8S19257C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19257C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19257C52v6Ev,
  ABISELECT(7944,3992),
  ABISELECT(-2008,-1052),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  ABISELECT(-2480,-1304),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-2480,-1304),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C1D1Ev,_ZTv0_n36_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C1D0Ev,_ZTv0_n36_N8S19257C1D0Ev),
  ABISELECT(32,12),
  ABISELECT(-9920,-5032),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  0,
  0,
  ABISELECT(-9952,-5044),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(-10128,-5132),
  ABISELECT(-176,-88),
  ABISELECT(-10128,-5132),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C1D1Ev,_ZTv0_n16_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C1D0Ev,_ZTv0_n16_N8S19257C1D0Ev),
  ABISELECT(7472,3740),
  ABISELECT(-10336,-5232),
  0,
  0,
  ABISELECT(-7856,-3928),
  ABISELECT(9968,5044),
  ABISELECT(-16,-4),
  ABISELECT(9328,4708),
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  ABISELECT(-10336,-5232),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19257C1D1Ev,_ZTv0_n52_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19257C1D0Ev,_ZTv0_n52_N8S19257C1D0Ev),
  ABISELECT(-7824,-3916),
  ABISELECT(-17776,-8960),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  ABISELECT(-17808,-8972),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
  ABISELECT(-16240,-8124),
  ABISELECT(-8800,-4396),
  ABISELECT(-8592,-4296),
  ABISELECT(1584,848),
  ABISELECT(-17776,-8912),
  ABISELECT(-8400,-4200),
  ABISELECT(944,512),
  ABISELECT(-8768,-4384),
  ABISELECT(-18720,-9428),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8384_n104_N8S19257C1D1Ev,_ZTvn4196_n52_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8384_n104_N8S19257C1D0Ev,_ZTvn4196_n52_N8S19257C1D0Ev),
  ABISELECT(-8936,-4472),
  ABISELECT(-18888,-9516),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  ABISELECT(-8960,-4488),
  ABISELECT(-18912,-9532),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  ABISELECT(-9128,-4576),
  ABISELECT(-19080,-9620),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  0,
  ABISELECT(-19664,-9940),
  0,
  0,
  ABISELECT(-18720,-9424),
  ABISELECT(-9344,-4712),
  ABISELECT(-9712,-4896),
  ABISELECT(-19664,-9940),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19257C1D1Ev,_ZTv0_n32_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19257C1D0Ev,_ZTv0_n32_N8S19257C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  ABISELECT(-9880,-4984),
  ABISELECT(-19832,-10028),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  ABISELECT(7472,3740),
  ABISELECT(-20304,-10276),
  0,
  0,
  ABISELECT(-19360,-9760),
  ABISELECT(-10176,-5144),
  ABISELECT(-10352,-5232),
  ABISELECT(-10384,-5244),
  ABISELECT(-20304,-10276),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C1D1Ev,_ZTv0_n36_N8S19257C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C1D0Ev,_ZTv0_n36_N8S19257C1D0Ev),
  ABISELECT(-17792,-8960),
  ABISELECT(-27744,-14004),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  ABISELECT(-27776,-14016),
  (VTBL_ENTRY)&(_ZTI8S19257C1[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19257C1[];
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C13D1Ev();
extern void _ZN9S19257C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C13__A1__8S19257C1[] = {
  ABISELECT(2480,1304),
  ABISELECT(9920,5032),
  ABISELECT(10128,5132),
  ABISELECT(20304,10276),
  ABISELECT(944,516),
  ABISELECT(10320,5228),
  ABISELECT(19664,9940),
  ABISELECT(9952,5044),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C13__A4__8S19257C1[] = {
  ABISELECT(9952,5044),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C13__A7__8S19257C1[] = {
  ABISELECT(9784,4956),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C13__A7__8S19257C1[] = {
  0,
  0,
  ABISELECT(-9784,-4956),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C13__A4__8S19257C1[] = {
  ABISELECT(9784,4956),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C13__A4__8S19257C1[] = {
  0,
  0,
  ABISELECT(-9952,-5044),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C149S19257C13__A1__8S19257C1[] = {
  ABISELECT(9760,4940),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C149S19257C13__A5__8S19257C1[] = {
  ABISELECT(9760,4940),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C149S19257C13__A8__8S19257C1[] = {
  ABISELECT(9592,4852),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C149S19257C13__A8__8S19257C1[] = {
  0,
  0,
  ABISELECT(-9592,-4852),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C149S19257C13__A5__8S19257C1[] = {
  ABISELECT(9592,4852),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C149S19257C13__A5__8S19257C1[] = {
  0,
  0,
  ABISELECT(-9760,-4940),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C149S19257C13__A1__8S19257C1[] = {
  ABISELECT(9592,4852),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C149S19257C13__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(-9760,-4940),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(9784,4956),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C13__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(-9952,-5044),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn19664_N9S19257C13D1Ev,_ZThn9940_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn19664_N9S19257C13D0Ev,_ZThn9940_N9S19257C13D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__9S19257C13__A1__8S19257C1[] = {
  0,
  ABISELECT(-19664,-9940),
  0,
  0,
  ABISELECT(-18720,-9424),
  ABISELECT(-9344,-4712),
  ABISELECT(-9712,-4896),
  ABISELECT(-19664,-9940),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(-9880,-4984),
  ABISELECT(-19832,-10028),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C13__A1__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(-944,-516),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn20304_N9S19257C13D1Ev,_ZThn10276_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn20304_N9S19257C13D0Ev,_ZThn10276_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19257C12__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(7472,3740),
  ABISELECT(-20304,-10276),
  0,
  0,
  ABISELECT(-19360,-9760),
  ABISELECT(-10176,-5144),
  ABISELECT(-10352,-5232),
  ABISELECT(-10384,-5244),
  ABISELECT(-20304,-10276),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn10128_N9S19257C13D1Ev,_ZThn5132_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn10128_N9S19257C13D0Ev,_ZThn5132_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(-10128,-5132),
  ABISELECT(-176,-88),
  ABISELECT(-10128,-5132),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A2__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(-9920,-5032),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A3__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(-17792,-8960),
  ABISELECT(-27744,-14004),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C29S19257C12__A1__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(-27776,-14016),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C14__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(9760,4940),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(9592,4852),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn2480_N9S19257C13D1Ev,_ZThn1304_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn2480_N9S19257C13D0Ev,_ZThn1304_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C6__A1__9S19257C13__A1__8S19257C1[] = {
  ABISELECT(-2480,-1304),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-2480,-1304),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C5D1Ev();
extern void _ZN8S19257C5D0Ev();
extern void _ZN8S19257C82v4Ev();
extern void _ZN8S19257C52v5Ev();
extern void _ZN8S19257C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C5__8S19257C1[] = {
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(-896,-448),
  ABISELECT(8480,4264),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19257C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19257C52v6Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C8D1Ev();
extern void _ZN8S19257C8D0Ev();
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C88S19257C5__8S19257C1[] = {
  ABISELECT(-896,-448),
  ABISELECT(8480,4264),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C98S19257C88S19257C5__8S19257C1[] = {
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C88S19257C5__A1__8S19257C1[] = {
  ABISELECT(7944,3992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C98S19257C88S19257C5__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(-7944,-3992),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C98S19257C88S19257C5__8S19257C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C98S19257C88S19257C5__8S19257C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__8S19257C88S19257C5__8S19257C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C88S19257C5__8S19257C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C88S19257C5__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19257C5D1Ev,_ZTv0_n36_N8S19257C5D1Ev)();
extern void ABISELECT(_ZThn640_N8S19257C5D1Ev,_ZThn340_N8S19257C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19257C5D0Ev,_ZTv0_n36_N8S19257C5D0Ev)();
extern void ABISELECT(_ZThn640_N8S19257C5D0Ev,_ZThn340_N8S19257C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C6__8S19257C5__8S19257C1[] = {
  ABISELECT(-640,-340),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C5D1Ev,_ZTv0_n36_N8S19257C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19257C5D0Ev,_ZTv0_n36_N8S19257C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C5__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(-8080,-4068),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C5__8S19257C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C5D1Ev,_ZTv0_n16_N8S19257C5D1Ev)();
extern void ABISELECT(_ZThn8288_N8S19257C5D1Ev,_ZThn4168_N8S19257C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C5D0Ev,_ZTv0_n16_N8S19257C5D0Ev)();
extern void ABISELECT(_ZThn8288_N8S19257C5D0Ev,_ZThn4168_N8S19257C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C5__8S19257C1[] = {
  ABISELECT(-8288,-4168),
  ABISELECT(-176,-88),
  ABISELECT(-8288,-4168),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C5D1Ev,_ZTv0_n16_N8S19257C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C5D0Ev,_ZTv0_n16_N8S19257C5D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C5__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A1__8S19257C5__8S19257C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C5[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C6__8S19257C1[] = {
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C6__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C6__8S19257C1[] = {
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19257C6D1Ev,_ZThn3828_N8S19257C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19257C6D0Ev,_ZThn3828_N8S19257C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C6__8S19257C1[] = {
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C6__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(1536,788),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C1[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C7__8S19257C1[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C4D1Ev();
extern void _ZN8S19257C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C4D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C4__8S19257C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19257C4[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C11D1Ev();
extern void _ZN9S19257C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C11__8S19257C1[] = {
  ABISELECT(-7856,-3928),
  ABISELECT(9968,5044),
  ABISELECT(-16,-4),
  ABISELECT(9328,4708),
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C11D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C12D1Ev();
extern void _ZN9S19257C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C129S19257C11__8S19257C1[] = {
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C69S19257C129S19257C11__A1__8S19257C1[] = {
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C69S19257C129S19257C11__A1__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(416,200),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C69S19257C129S19257C11__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(384,188),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C69S19257C129S19257C11__A1__8S19257C1[] = {
  ABISELECT(208,100),
  ABISELECT(-176,-88),
  ABISELECT(208,100),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C69S19257C129S19257C11__A1__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(9392,4716),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C129S19257C11__A2__8S19257C1[] = {
  ABISELECT(-7824,-3916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C79S19257C129S19257C11__A2__8S19257C1[] = {
  0,
  0,
  ABISELECT(7824,3916),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__9S19257C129S19257C11__8S19257C1[] = {
  0,
  0,
  ABISELECT(384,188),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C129S19257C11__8S19257C1[] = {
  ABISELECT(208,100),
  ABISELECT(-176,-88),
  ABISELECT(208,100),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C129S19257C11__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(416,200),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C129S19257C11__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(9392,4716),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A__9S19257C129S19257C11__8S19257C1[] = {
  ABISELECT(-7824,-3916),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C13D1Ev();
extern void _ZN9S19257C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-16240,-8124),
  ABISELECT(-8800,-4396),
  ABISELECT(-8592,-4296),
  ABISELECT(1584,848),
  ABISELECT(-17776,-8912),
  ABISELECT(-8400,-4200),
  ABISELECT(944,512),
  ABISELECT(-8768,-4384),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C13D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C139S19257C11__A1__8S19257C1[] = {
  ABISELECT(-8768,-4384),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C139S19257C11__A3__8S19257C1[] = {
  ABISELECT(-8936,-4472),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C139S19257C11__A3__8S19257C1[] = {
  0,
  0,
  ABISELECT(8936,4472),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C139S19257C11__A1__8S19257C1[] = {
  ABISELECT(-8936,-4472),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C139S19257C11__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(8768,4384),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C149S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-8960,-4488),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C99S19257C149S19257C139S19257C11__A3__8S19257C1[] = {
  ABISELECT(-8960,-4488),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C149S19257C139S19257C11__A6__8S19257C1[] = {
  ABISELECT(-9128,-4576),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C99S19257C149S19257C139S19257C11__A6__8S19257C1[] = {
  0,
  0,
  ABISELECT(9128,4576),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C99S19257C149S19257C139S19257C11__A3__8S19257C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C99S19257C149S19257C139S19257C11__A3__8S19257C1[] = {
  0,
  0,
  ABISELECT(8960,4488),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C149S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C149S19257C139S19257C11__8S19257C1[] = {
  0,
  0,
  ABISELECT(8960,4488),
  (VTBL_ENTRY)&(_ZTI9S19257C14[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-8936,-4472),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__9S19257C139S19257C11__8S19257C1[] = {
  0,
  0,
  ABISELECT(8768,4384),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn944_N9S19257C13D1Ev,_ZThn512_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn944_N9S19257C13D0Ev,_ZThn512_N9S19257C13D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__9S19257C139S19257C11__8S19257C1[] = {
  0,
  ABISELECT(-944,-512),
  0,
  0,
  ABISELECT(-18720,-9424),
  ABISELECT(-9344,-4712),
  ABISELECT(-9712,-4896),
  ABISELECT(-944,-512),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-9880,-4984),
  ABISELECT(-1112,-600),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C139S19257C11__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(17776,8912),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZThn1584_N9S19257C13D1Ev,_ZThn848_N9S19257C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
extern void ABISELECT(_ZThn1584_N9S19257C13D0Ev,_ZThn848_N9S19257C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19257C12__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(7472,3740),
  ABISELECT(-1584,-848),
  0,
  0,
  ABISELECT(-19360,-9760),
  ABISELECT(-10176,-5144),
  ABISELECT(-10352,-5232),
  ABISELECT(-10384,-5244),
  ABISELECT(-1584,-848),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(8592,4296),
  ABISELECT(-176,-88),
  ABISELECT(8592,4296),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A2__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(8800,4396),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A3__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-17792,-8960),
  ABISELECT(-9024,-4576),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C29S19257C12__A1__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-9056,-4588),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C14__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-8960,-4488),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C6__A1__9S19257C139S19257C11__8S19257C1[] = {
  ABISELECT(16240,8124),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(16240,8124),
  (VTBL_ENTRY)&(_ZTI9S19257C13[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__9S19257C11__8S19257C1[] = {
  0,
  0,
  ABISELECT(384,188),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19257C11D1Ev,_ZTv0_n16_N9S19257C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19257C11D0Ev,_ZTv0_n16_N9S19257C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C11__8S19257C1[] = {
  ABISELECT(208,100),
  ABISELECT(-176,-88),
  ABISELECT(208,100),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C11D1Ev,_ZTv0_n16_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C11D0Ev,_ZTv0_n16_N9S19257C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C11__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(416,200),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C11__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(9392,4716),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A1__9S19257C11__8S19257C1[] = {
  ABISELECT(-7824,-3916),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZThn8384_N9S19257C11D1Ev,_ZThn4196_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn8384_N9S19257C11D0Ev,_ZThn4196_N9S19257C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19257C13__9S19257C11__8S19257C1[] = {
  ABISELECT(-16240,-8124),
  ABISELECT(-8800,-4396),
  ABISELECT(-8592,-4296),
  ABISELECT(1584,848),
  ABISELECT(-17776,-8912),
  ABISELECT(-8400,-4200),
  ABISELECT(944,512),
  ABISELECT(-8768,-4384),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19257C11D1Ev,_ZThn4196_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19257C11D0Ev,_ZThn4196_N9S19257C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C13__A2__9S19257C11__8S19257C1[] = {
  ABISELECT(-8936,-4472),
  ABISELECT(-8552,-4284),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19257C11D1Ev,_ZTv0_n32_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn9328_N9S19257C11D1Ev,_ZThn4708_N9S19257C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19257C11D0Ev,_ZTv0_n32_N9S19257C11D0Ev)();
extern void ABISELECT(_ZThn9328_N9S19257C11D0Ev,_ZThn4708_N9S19257C11D0Ev)() __attribute__((weak));
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__9S19257C11__8S19257C1[] = {
  0,
  ABISELECT(-9328,-4708),
  0,
  0,
  ABISELECT(-18720,-9424),
  ABISELECT(-9344,-4712),
  ABISELECT(-9712,-4896),
  ABISELECT(-9328,-4708),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C11D1Ev,_ZTv0_n32_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19257C11D0Ev,_ZTv0_n32_N9S19257C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A3__9S19257C11__8S19257C1[] = {
  ABISELECT(-9880,-4984),
  ABISELECT(-9496,-4796),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19257C11D1Ev,_ZThn5044_N9S19257C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19257C11D0Ev,_ZThn5044_N9S19257C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19257C12__A1__9S19257C11__8S19257C1[] = {
  ABISELECT(7472,3740),
  ABISELECT(-9968,-5044),
  0,
  0,
  ABISELECT(-19360,-9760),
  ABISELECT(-10176,-5144),
  ABISELECT(-10352,-5232),
  ABISELECT(-10384,-5244),
  ABISELECT(-9968,-5044),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A4__9S19257C11__8S19257C1[] = {
  ABISELECT(-17792,-8960),
  ABISELECT(-17408,-8772),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C29S19257C12__A2__9S19257C11__8S19257C1[] = {
  ABISELECT(-17440,-8784),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C149S19257C13__9S19257C11__8S19257C1[] = {
  ABISELECT(-8960,-4488),
  ABISELECT(-8576,-4300),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C99S19257C149S19257C13__A5__9S19257C11__8S19257C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-8744,-4388),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C6__A2__9S19257C11__8S19257C1[] = {
  ABISELECT(7856,3928),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(7856,3928),
  (VTBL_ENTRY)&(_ZTI9S19257C11[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C8D1Ev();
extern void _ZN8S19257C8D0Ev();
extern void _ZN8S19257C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C8__A1__8S19257C1[] = {
  ABISELECT(-18720,-9424),
  ABISELECT(-9344,-4712),
  ABISELECT(-9712,-4896),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19257C82v4Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C98S19257C8__A2__8S19257C1[] = {
  ABISELECT(-9712,-4896),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C98S19257C8__A4__8S19257C1[] = {
  ABISELECT(-9880,-4984),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A4__8S19257C1[] = {
  0,
  0,
  ABISELECT(9880,4984),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C98S19257C8__A2__8S19257C1[] = {
  ABISELECT(-9880,-4984),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C98S19257C8__A2__8S19257C1[] = {
  0,
  0,
  ABISELECT(9712,4896),
  (VTBL_ENTRY)&(_ZTI8S19257C9[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C78S19257C9__8S19257C8__A1__8S19257C1[] = {
  ABISELECT(-9880,-4984),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__A1__8S19257C8__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(9712,4896),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C8__A1__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(18720,9424),
  (VTBL_ENTRY)&(_ZTI8S19257C8[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN9S19257C12D1Ev();
extern void _ZN9S19257C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19257C12__A1__8S19257C1[] = {
  ABISELECT(-19360,-9760),
  ABISELECT(-10176,-5144),
  ABISELECT(-10352,-5232),
  ABISELECT(-10384,-5244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19257C12D0Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C6D1Ev();
extern void _ZN8S19257C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C69S19257C12__A2__8S19257C1[] = {
  ABISELECT(-19360,-9760),
  ABISELECT(-10176,-5144),
  ABISELECT(-10352,-5232),
  ABISELECT(-10384,-5244),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19257C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__8S19257C69S19257C12__A2__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(10384,5244),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C69S19257C12__A2__8S19257C1[] = {
  0,
  0,
  ABISELECT(10352,5232),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__8S19257C69S19257C12__A2__8S19257C1[] = {
  ABISELECT(10176,5144),
  ABISELECT(-176,-88),
  ABISELECT(10176,5144),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__8S19257C69S19257C12__A2__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(19360,9760),
  (VTBL_ENTRY)&(_ZTI8S19257C6[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C79S19257C12__A5__8S19257C1[] = {
  ABISELECT(-17792,-8960),
  0,
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__8S19257C79S19257C12__A5__8S19257C1[] = {
  0,
  0,
  ABISELECT(17792,8960),
  (VTBL_ENTRY)&(_ZTI8S19257C7[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C3__9S19257C12__A1__8S19257C1[] = {
  0,
  0,
  ABISELECT(10352,5232),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19257C4__9S19257C12__A1__8S19257C1[] = {
  ABISELECT(10176,5144),
  ABISELECT(-176,-88),
  ABISELECT(10176,5144),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D1Ev,_ZTv0_n16_N9S19257C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19257C12D0Ev,_ZTv0_n16_N9S19257C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__9S19257C12__A1__8S19257C1[] = {
  ABISELECT(32,12),
  ABISELECT(10384,5244),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
extern void _ZN8S19257C32v1Ev();
extern void _ZN8S19257C32v2Ev();
extern void _ZN8S19257C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19257C2__9S19257C12__A1__8S19257C1[] = {
  0,
  0,
  0,
  ABISELECT(19360,9760),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
  (VTBL_ENTRY)&_ZN8S19257C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19257C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19257C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19257C7__A__9S19257C12__A1__8S19257C1[] = {
  ABISELECT(-17792,-8960),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19257C12[0]),
};
static  VTT_ENTRY vtt_S19257C1[] = {
  {&(_ZTV8S19257C1[12]),  12,177},
  {&(_tg__ZTV9S19257C13__A1__8S19257C1[10]),  10,14},
  {&(_tg__ZTV8S19257C99S19257C13__A4__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C13__A7__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C13__A7__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C13__A4__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C13__A4__8S19257C1[4]),  4,6},
  {&(_tg__ZTV9S19257C149S19257C13__A1__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C99S19257C149S19257C13__A5__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C149S19257C13__A8__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C149S19257C13__A8__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C149S19257C13__A5__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C149S19257C13__A5__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C149S19257C13__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C149S19257C13__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C13__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C13__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C8__9S19257C13__A1__8S19257C1[9]),  9,14},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C13__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C13__A1__8S19257C1[5]),  5,8},
  {&(_tg__ZTV9S19257C12__9S19257C13__A1__8S19257C1[10]),  10,14},
  {&(_tg__ZTV8S19257C4__9S19257C13__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__A2__9S19257C13__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C79S19257C12__A3__9S19257C13__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C29S19257C12__A1__9S19257C13__A1__8S19257C1[2]),  2,5},
  {&(_tg__ZTV9S19257C14__9S19257C13__A1__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C13__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C6__A1__9S19257C13__A1__8S19257C1[9]),  9,13},
  {&(_ZTV8S19257C1[32]),  32,177},
  {&(_ZTV8S19257C1[49]),  49,177},
  {&(_ZTV8S19257C1[68]),  68,177},
  {&(_ZTV8S19257C1[75]),  75,177},
  {&(_ZTV8S19257C1[79]),  79,177},
  {&(_ZTV8S19257C1[85]),  85,177},
  {&(_ZTV8S19257C1[59]),  59,177},
  {&(_ZTV8S19257C1[101]),  101,177},
  {&(_ZTV8S19257C1[108]),  108,177},
  {&(_ZTV8S19257C1[110]),  110,177},
  {&(_ZTV8S19257C1[123]),  123,177},
  {&(_ZTV8S19257C1[130]),  130,177},
  {&(_ZTV8S19257C1[147]),  147,177},
  {&(_ZTV8S19257C1[155]),  155,177},
  {&(_ZTV8S19257C1[165]),  165,177},
  {&(_ZTV8S19257C1[172]),  172,177},
  {&(_ZTV8S19257C1[174]),  174,177},
  {&(_ZTV8S19257C1[133]),  133,177},
  {&(_ZTV8S19257C1[138]),  138,177},
  {&(_ZTV8S19257C1[19]),  19,177},
  {&(_ZTV8S19257C1[22]),  22,177},
  {&(_ZTV8S19257C1[27]),  27,177},
  {&(_tg__ZTV8S19257C5__8S19257C1[8]),  8,15},
  {&(_tg__ZTV8S19257C88S19257C5__8S19257C1[5]),  5,10},
  {&(_tg__ZTV8S19257C98S19257C88S19257C5__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C98S19257C88S19257C5__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C98S19257C88S19257C5__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C98S19257C88S19257C5__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C98S19257C88S19257C5__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__8S19257C88S19257C5__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C88S19257C5__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C88S19257C5__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C6__8S19257C5__8S19257C1[9]),  9,13},
  {&(_tg__ZTV8S19257C7__8S19257C5__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C5__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C5__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C5__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A1__8S19257C5__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C6__8S19257C1[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C6__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C6__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C6__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C6__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C7__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C7__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C3__8S19257C4__8S19257C1[4]),  4,6},
  {&(_tg__ZTV9S19257C11__8S19257C1[10]),  10,14},
  {&(_tg__ZTV9S19257C129S19257C11__8S19257C1[6]),  6,10},
  {&(_tg__ZTV8S19257C69S19257C129S19257C11__A1__8S19257C1[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C69S19257C129S19257C11__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C69S19257C129S19257C11__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C69S19257C129S19257C11__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C69S19257C129S19257C11__A1__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C79S19257C129S19257C11__A2__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C79S19257C129S19257C11__A2__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C3__9S19257C129S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__9S19257C129S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C129S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C129S19257C11__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C7__A__9S19257C129S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV9S19257C139S19257C11__8S19257C1[10]),  10,14},
  {&(_tg__ZTV8S19257C99S19257C139S19257C11__A1__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C139S19257C11__A3__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C139S19257C11__A3__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C139S19257C11__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C139S19257C11__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV9S19257C149S19257C139S19257C11__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C99S19257C149S19257C139S19257C11__A3__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C149S19257C139S19257C11__A6__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C99S19257C149S19257C139S19257C11__A6__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C99S19257C149S19257C139S19257C11__A3__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C99S19257C149S19257C139S19257C11__A3__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C149S19257C139S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C149S19257C139S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__9S19257C139S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__9S19257C139S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C8__9S19257C139S19257C11__8S19257C1[9]),  9,14},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A1__9S19257C139S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C139S19257C11__8S19257C1[5]),  5,8},
  {&(_tg__ZTV9S19257C12__9S19257C139S19257C11__8S19257C1[10]),  10,14},
  {&(_tg__ZTV8S19257C4__9S19257C139S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__A2__9S19257C139S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C79S19257C12__A3__9S19257C139S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C29S19257C12__A1__9S19257C139S19257C11__8S19257C1[2]),  2,5},
  {&(_tg__ZTV9S19257C14__9S19257C139S19257C11__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C14__A4__9S19257C139S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C6__A1__9S19257C139S19257C11__8S19257C1[9]),  9,13},
  {&(_tg__ZTV8S19257C3__9S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__9S19257C11__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C11__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C79S19257C12__A1__9S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV9S19257C13__9S19257C11__8S19257C1[10]),  10,14},
  {&(_tg__ZTV8S19257C78S19257C99S19257C13__A2__9S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C8__9S19257C11__8S19257C1[9]),  9,14},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A3__9S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV9S19257C12__A1__9S19257C11__8S19257C1[10]),  10,14},
  {&(_tg__ZTV8S19257C79S19257C12__A4__9S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C29S19257C12__A2__9S19257C11__8S19257C1[2]),  2,5},
  {&(_tg__ZTV9S19257C149S19257C13__9S19257C11__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C99S19257C149S19257C13__A5__9S19257C11__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C6__A2__9S19257C11__8S19257C1[9]),  9,13},
  {&(_tg__ZTV8S19257C8__A1__8S19257C1[5]),  5,10},
  {&(_tg__ZTV8S19257C98S19257C8__A2__8S19257C1[3]),  3,5},
  {&(_tg__ZTV8S19257C78S19257C98S19257C8__A4__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C78S19257C98S19257C8__A4__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__8S19257C98S19257C8__A2__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C98S19257C8__A2__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C78S19257C9__8S19257C8__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__A1__8S19257C8__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C8__A1__8S19257C1[5]),  5,8},
  {&(_tg__ZTV9S19257C12__A1__8S19257C1[6]),  6,10},
  {&(_tg__ZTV8S19257C69S19257C12__A2__8S19257C1[6]),  6,10},
  {&(_tg__ZTV8S19257C7__8S19257C69S19257C12__A2__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C69S19257C12__A2__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__8S19257C69S19257C12__A2__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C2__8S19257C69S19257C12__A2__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C79S19257C12__A5__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C3__8S19257C79S19257C12__A5__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C3__9S19257C12__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C4__9S19257C12__A1__8S19257C1[4]),  4,6},
  {&(_tg__ZTV8S19257C7__9S19257C12__A1__8S19257C1[3]),  3,3},
  {&(_tg__ZTV8S19257C2__9S19257C12__A1__8S19257C1[5]),  5,8},
  {&(_tg__ZTV8S19257C7__A__9S19257C12__A1__8S19257C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19257C1[];
extern  VTBL_ENTRY _ZTV8S19257C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19257C1[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C11D0Ev,_ZTv0_n36_N9S19257C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19257C11D0Ev,_ZThn5044_N9S19257C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C11D1Ev,_ZTv0_n36_N9S19257C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19257C11D1Ev,_ZThn5044_N9S19257C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C11D0Ev,_ZTv0_n32_N9S19257C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9328_N9S19257C11D0Ev,_ZThn4708_N9S19257C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C11D1Ev,_ZTv0_n32_N9S19257C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9328_N9S19257C11D1Ev,_ZThn4708_N9S19257C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D0Ev,_ZTv0_n16_N8S19257C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19257C6D0Ev,_ZThn3828_N8S19257C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C6D1Ev,_ZTv0_n16_N8S19257C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19257C6D1Ev,_ZThn3828_N8S19257C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C5D0Ev,_ZTv0_n16_N8S19257C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19257C5D0Ev,_ZThn4168_N8S19257C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C5D1Ev,_ZTv0_n16_N8S19257C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19257C5D1Ev,_ZThn4168_N8S19257C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19257C5D0Ev,_ZTv0_n36_N8S19257C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19257C5D0Ev,_ZThn340_N8S19257C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19257C5D1Ev,_ZTv0_n36_N8S19257C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19257C5D1Ev,_ZThn340_N8S19257C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C13D0Ev,_ZTv0_n16_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N9S19257C13D0Ev,_ZThn5132_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19257C13D1Ev,_ZTv0_n16_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N9S19257C13D1Ev,_ZThn5132_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C13D0Ev,_ZTv0_n36_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N9S19257C13D0Ev,_ZThn848_N9S19257C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N9S19257C13D0Ev,_ZThn1304_N9S19257C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N9S19257C13D0Ev,_ZThn10276_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19257C13D1Ev,_ZTv0_n36_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N9S19257C13D1Ev,_ZThn848_N9S19257C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N9S19257C13D1Ev,_ZThn1304_N9S19257C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N9S19257C13D1Ev,_ZThn10276_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C13D0Ev,_ZTv0_n32_N9S19257C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N9S19257C13D0Ev,_ZThn512_N9S19257C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N9S19257C13D0Ev,_ZThn9940_N9S19257C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19257C13D1Ev,_ZTv0_n32_N9S19257C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N9S19257C13D1Ev,_ZThn512_N9S19257C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N9S19257C13D1Ev,_ZThn9940_N9S19257C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19257C1D0Ev,_ZTv0_n32_N8S19257C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N8S19257C1D0Ev,_ZThn9940_N8S19257C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19257C1D1Ev,_ZTv0_n32_N8S19257C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N8S19257C1D1Ev,_ZThn9940_N8S19257C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19257C1D0Ev,_ZTv0_n52_N8S19257C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19257C1D0Ev,_ZThn5232_N8S19257C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19257C1D1Ev,_ZTv0_n52_N8S19257C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19257C1D1Ev,_ZThn5232_N8S19257C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C1D0Ev,_ZTv0_n16_N8S19257C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N8S19257C1D0Ev,_ZThn5132_N8S19257C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19257C1D1Ev,_ZTv0_n16_N8S19257C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N8S19257C1D1Ev,_ZThn5132_N8S19257C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19257C1D0Ev,_ZTv0_n36_N8S19257C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N8S19257C1D0Ev,_ZThn10276_N8S19257C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N8S19257C1D0Ev,_ZThn1304_N8S19257C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19257C1D1Ev,_ZTv0_n36_N8S19257C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N8S19257C1D1Ev,_ZThn10276_N8S19257C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N8S19257C1D1Ev,_ZThn1304_N8S19257C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19257C1D0Ev,_ZTv0_n44_N8S19257C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1840_N8S19257C1D0Ev,_ZThn964_N8S19257C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19257C1D1Ev,_ZTv0_n44_N8S19257C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1840_N8S19257C1D1Ev,_ZThn964_N8S19257C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19257C1 = {  "S19257C1", // class name
  bases_S19257C1, 46,
  &(vtc_S19257C1[0]), // expected_vtbl_contents
  &(vtt_S19257C1[0]), // expected_vtt_contents
  ABISELECT(28688,14472), // object size
  NSPAIRA(_ZTI8S19257C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19257C1),177, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19257C1),153, //virtual table table var
  45, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19258C3  {
  long s19258c3f0[10];
  long double s19258c3f1;
  char s19258c3f2[2];
  long double s19258c3f3;
  void *s19258c3f4;
  __tsi64 s19258c3f5;
  char s19258c3f6;
  virtual void  v1(); // _ZN8S19258C32v1Ev
  virtual void  v2(); // _ZN8S19258C32v2Ev
  ~S19258C3(); // tgen
  S19258C3(); // tgen
};
//SIG(-1 S19258C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S19258C3 ::v1(){vfunc_called(this, "_ZN8S19258C32v1Ev");}
void  S19258C3 ::v2(){vfunc_called(this, "_ZN8S19258C32v2Ev");}
S19258C3 ::~S19258C3(){ note_dtor("S19258C3", this);} // tgen
S19258C3 ::S19258C3(){ note_ctor("S19258C3", this);} // tgen

static void Test_S19258C3()
{
  extern Class_Descriptor cd_S19258C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S19258C3, buf);
    S19258C3 *dp, &lv = *(dp=new (buf) S19258C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S19258C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C3)");
    check_field_offset(lv, s19258c3f0, ABISELECT(8,4), "S19258C3.s19258c3f0");
    check_field_offset(lv, s19258c3f1, ABISELECT(96,44), "S19258C3.s19258c3f1");
    check_field_offset(lv, s19258c3f2, ABISELECT(112,56), "S19258C3.s19258c3f2");
    check_field_offset(lv, s19258c3f3, ABISELECT(128,60), "S19258C3.s19258c3f3");
    check_field_offset(lv, s19258c3f4, ABISELECT(144,72), "S19258C3.s19258c3f4");
    check_field_offset(lv, s19258c3f5, ABISELECT(152,76), "S19258C3.s19258c3f5");
    check_field_offset(lv, s19258c3f6, ABISELECT(160,84), "S19258C3.s19258c3f6");
    test_class_info(&lv, &cd_S19258C3);
    dp->~S19258C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C3(Test_S19258C3, "S19258C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S19258C3C1Ev();
extern void _ZN8S19258C3D1Ev();
Name_Map name_map_S19258C3[] = {
  NSPAIR(_ZN8S19258C3C1Ev),
  NSPAIR(_ZN8S19258C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19258C3[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY vtc_S19258C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C3[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
Class_Descriptor cd_S19258C3 = {  "S19258C3", // class name
  0,0,//no base classes
  &(vtc_S19258C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S19258C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19258C3),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  S19258C4  : virtual S19258C3 {
  void *s19258c4f0;
  ::S19258C3 s19258c4f1;
  virtual  ~S19258C4(); // _ZN8S19258C4D2Ev
  S19258C4(); // tgen
};
//SIG(-1 S19258C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S19258C4()
{
  extern Class_Descriptor cd_S19258C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S19258C4, buf);
    S19258C4 *dp, &lv = *(dp=new (buf) S19258C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S19258C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C4)");
    check_base_class_offset(lv, (S19258C3*), ABISELECT(192,96), "S19258C4");
    check_field_offset(lv, s19258c4f0, ABISELECT(8,4), "S19258C4.s19258c4f0");
    check_field_offset(lv, s19258c4f1, ABISELECT(16,8), "S19258C4.s19258c4f1");
    test_class_info(&lv, &cd_S19258C4);
    dp->~S19258C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C4(Test_S19258C4, "S19258C4", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S19258C4C1Ev();
extern void _ZN8S19258C4D2Ev();
Name_Map name_map_S19258C4[] = {
  NSPAIR(_ZN8S19258C4C1Ev),
  NSPAIR(_ZN8S19258C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
static Base_Class bases_S19258C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C4[];
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY vtc_S19258C4[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19258C4[];
static  VTT_ENTRY vtt_S19258C4[] = {
  {&(_ZTV8S19258C4[3]),  3,11},
  {&(_ZTV8S19258C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
Class_Descriptor cd_S19258C4 = {  "S19258C4", // class name
  bases_S19258C4, 1,
  &(vtc_S19258C4[0]), // expected_vtbl_contents
  &(vtt_S19258C4[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S19258C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19258C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C4),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  S19258C2  : S19258C3 {
  ::S19258C3 s19258c2f0;
  ::S19258C4 s19258c2f1;
  ::S19258C3 s19258c2f2;
  virtual void  v3(); // _ZN8S19258C22v3Ev
  ~S19258C2(); // tgen
  S19258C2(); // tgen
};
//SIG(-1 S19258C2) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S19258C2()
{
  extern Class_Descriptor cd_S19258C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S19258C2, buf);
    S19258C2 *dp, &lv = *(dp=new (buf) S19258C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S19258C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C2)");
    check_base_class_offset(lv, (S19258C3*), 0, "S19258C2");
    check_field_offset(lv, s19258c2f0, ABISELECT(176,88), "S19258C2.s19258c2f0");
    check_field_offset(lv, s19258c2f1, ABISELECT(352,176), "S19258C2.s19258c2f1");
    check_field_offset(lv, s19258c2f2, ABISELECT(720,360), "S19258C2.s19258c2f2");
    test_class_info(&lv, &cd_S19258C2);
    dp->~S19258C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C2(Test_S19258C2, "S19258C2", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S19258C2C1Ev();
extern void _ZN8S19258C2D1Ev();
Name_Map name_map_S19258C2[] = {
  NSPAIR(_ZN8S19258C2C1Ev),
  NSPAIR(_ZN8S19258C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
static Base_Class bases_S19258C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C2[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY vtc_S19258C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C2[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
Class_Descriptor cd_S19258C2 = {  "S19258C2", // class name
  bases_S19258C2, 1,
  &(vtc_S19258C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S19258C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19258C2),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  S19258C7  : virtual S19258C3 {
  void *s19258c7f0;
  short s19258c7f1;
  ~S19258C7(); // tgen
  S19258C7(); // tgen
};
//SIG(-1 S19258C7) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S19258C7()
{
  extern Class_Descriptor cd_S19258C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S19258C7, buf);
    S19258C7 *dp, &lv = *(dp=new (buf) S19258C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S19258C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C7)");
    check_base_class_offset(lv, (S19258C3*), ABISELECT(32,12), "S19258C7");
    check_field_offset(lv, s19258c7f0, ABISELECT(8,4), "S19258C7.s19258c7f0");
    check_field_offset(lv, s19258c7f1, ABISELECT(16,8), "S19258C7.s19258c7f1");
    test_class_info(&lv, &cd_S19258C7);
    dp->~S19258C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C7(Test_S19258C7, "S19258C7", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S19258C7C1Ev();
extern void _ZN8S19258C7D1Ev();
Name_Map name_map_S19258C7[] = {
  NSPAIR(_ZN8S19258C7C1Ev),
  NSPAIR(_ZN8S19258C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
static Base_Class bases_S19258C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S19258C7[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY vtc_S19258C7[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19258C7[];
static  VTT_ENTRY vtt_S19258C7[] = {
  {&(_ZTV8S19258C7[3]),  3,9},
  {&(_ZTV8S19258C7[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
Class_Descriptor cd_S19258C7 = {  "S19258C7", // class name
  bases_S19258C7, 1,
  &(vtc_S19258C7[0]), // expected_vtbl_contents
  &(vtt_S19258C7[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S19258C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19258C7),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C7),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  S19258C6  : virtual S19258C7 , virtual S19258C4 , S19258C3 , virtual S19258C2 {
  ::S19258C2 s19258c6f0;
  void *s19258c6f1;
  long s19258c6f2[8];
  __tsi64 s19258c6f3[2];
  char s19258c6f4;
  ::S19258C2 s19258c6f5[7];
  virtual  ~S19258C6(); // _ZN8S19258C6D2Ev
  S19258C6(); // tgen
};
//SIG(-1 S19258C6) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S19258C6()
{
  extern Class_Descriptor cd_S19258C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S19258C6, buf);
    S19258C6 *dp, &lv = *(dp=new (buf) S19258C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S19258C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C6)");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(7472,3740), "S19258C6");
    check_base_class_offset(lv, (S19258C3*)(S19258C4*), ABISELECT(7472,3740), "S19258C6");
    check_base_class_offset(lv, (S19258C7*), ABISELECT(7440,3728), "S19258C6");
    check_base_class_offset(lv, (S19258C4*), ABISELECT(7648,3828), "S19258C6");
    /*is_ambiguous_... S19258C6::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*), 0, "S19258C6");
    check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(7840,3924), "S19258C6");
    check_base_class_offset(lv, (S19258C2*), ABISELECT(7840,3924), "S19258C6");
    check_field_offset(lv, s19258c6f0, ABISELECT(176,88), "S19258C6.s19258c6f0");
    check_field_offset(lv, s19258c6f1, ABISELECT(1072,536), "S19258C6.s19258c6f1");
    check_field_offset(lv, s19258c6f2, ABISELECT(1080,540), "S19258C6.s19258c6f2");
    check_field_offset(lv, s19258c6f3, ABISELECT(1144,572), "S19258C6.s19258c6f3");
    check_field_offset(lv, s19258c6f4, ABISELECT(1160,588), "S19258C6.s19258c6f4");
    check_field_offset(lv, s19258c6f5, ABISELECT(1168,592), "S19258C6.s19258c6f5");
    test_class_info(&lv, &cd_S19258C6);
    dp->~S19258C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C6(Test_S19258C6, "S19258C6", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S19258C6C1Ev();
extern void _ZN8S19258C6D2Ev();
Name_Map name_map_S19258C6[] = {
  NSPAIR(_ZN8S19258C6C1Ev),
  NSPAIR(_ZN8S19258C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C4;
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
static Base_Class bases_S19258C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S19258C4,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19258C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C6[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19258C6D1Ev,_ZThn3828_N8S19258C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19258C6D0Ev,_ZThn3828_N8S19258C6D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY vtc_S19258C6[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19258C6[];
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C6[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__8S19258C6[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C6[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C4__8S19258C6[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTT_ENTRY vtt_S19258C6[] = {
  {&(_ZTV8S19258C6[6]),  6,33},
  {&(_ZTV8S19258C6[13]),  13,33},
  {&(_ZTV8S19258C6[17]),  17,33},
  {&(_ZTV8S19258C6[23]),  23,33},
  {&(_ZTV8S19258C6[30]),  30,33},
  {&(_tg__ZTV8S19258C7__8S19258C6[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__8S19258C6[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C6[3]),  3,5},
  {&(_tg__ZTV8S19258C3__8S19258C4__8S19258C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19258C6D0Ev,_ZThn3828_N8S19258C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19258C6D1Ev,_ZThn3828_N8S19258C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19258C6 = {  "S19258C6", // class name
  bases_S19258C6, 6,
  &(vtc_S19258C6[0]), // expected_vtbl_contents
  &(vtt_S19258C6[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S19258C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19258C6),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C6),9, //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  S19258C9  : S19258C3 , S19258C7 {
  int s19258c9f0;
  ~S19258C9(); // tgen
  S19258C9(); // tgen
};
//SIG(-1 S19258C9) C1{ BC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC3{ VBC2 Fp Fs} Fi}


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

static void Test_S19258C9()
{
  extern Class_Descriptor cd_S19258C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,49)];
    init_test(&cd_S19258C9, buf);
    S19258C9 *dp, &lv = *(dp=new (buf) S19258C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,192), "sizeof(S19258C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C9)");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*), 0, "S19258C9");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(192,104), "S19258C9");
    check_base_class_offset(lv, (S19258C7*), ABISELECT(168,88), "S19258C9");
    check_field_offset(lv, s19258c9f0, ABISELECT(188,100), "S19258C9.s19258c9f0");
    test_class_info(&lv, &cd_S19258C9);
    dp->~S19258C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C9(Test_S19258C9, "S19258C9", ABISELECT(368,192));

#else // __cplusplus

extern void _ZN8S19258C9C1Ev();
extern void _ZN8S19258C9D1Ev();
Name_Map name_map_S19258C9[] = {
  NSPAIR(_ZN8S19258C9C1Ev),
  NSPAIR(_ZN8S19258C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
static Base_Class bases_S19258C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19258C3,    ABISELECT(192,104), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(168,88), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C9[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY vtc_S19258C9[] = {
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(24,16),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  0,
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19258C9[];
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__8S19258C9[] = {
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTT_ENTRY vtt_S19258C9[] = {
  {&(_ZTV8S19258C9[3]),  3,14},
  {&(_tg__ZTV8S19258C7__8S19258C9[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__8S19258C9[4]),  4,6},
  {&(_ZTV8S19258C9[8]),  8,14},
  {&(_ZTV8S19258C9[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
Class_Descriptor cd_S19258C9 = {  "S19258C9", // class name
  bases_S19258C9, 3,
  &(vtc_S19258C9[0]), // expected_vtbl_contents
  &(vtt_S19258C9[0]), // expected_vtt_contents
  ABISELECT(368,192), // object size
  NSPAIRA(_ZTI8S19258C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19258C9),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C9),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  S19258C8  : S19258C9 , virtual S4224C43_nt , virtual S19258C2 {
  ::S19258C9 s19258c8f0;
  long double s19258c8f1;
  void *s19258c8f2[7];
  virtual  ~S19258C8(); // _ZN8S19258C8D2Ev
  virtual void  v4(); // _ZN8S19258C82v4Ev
  S19258C8(); // tgen
};
//SIG(-1 S19258C8) C1{ BC2{ BC3{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} VBC5{ m Fp} VBC6{ BC3 v4 FC3 FC7{ VBC3 vd Fp FC3} FC3} vd v1 FC2 FD Fp[7]}


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

static void Test_S19258C8()
{
  extern Class_Descriptor cd_S19258C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(108,220)];
    init_test(&cd_S19258C8, buf);
    S19258C8 *dp, &lv = *(dp=new (buf) S19258C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1712,876), "sizeof(S19258C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C8)");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*), 0, "S19258C8");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*), ABISELECT(640,336), "S19258C8");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*), ABISELECT(168,88), "S19258C8");
    check_base_class_offset(lv, (S19258C9*), 0, "S19258C8");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(808,424), "S19258C8");
    check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(816,428), "S19258C8");
    check_base_class_offset(lv, (S19258C2*), ABISELECT(816,428), "S19258C8");
    check_field_offset(lv, s19258c8f0, ABISELECT(192,104), "S19258C8.s19258c8f0");
    check_field_offset(lv, s19258c8f1, ABISELECT(560,296), "S19258C8.s19258c8f1");
    check_field_offset(lv, s19258c8f2, ABISELECT(576,308), "S19258C8.s19258c8f2");
    test_class_info(&lv, &cd_S19258C8);
    dp->~S19258C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C8(Test_S19258C8, "S19258C8", ABISELECT(1712,876));

#else // __cplusplus

extern void _ZN8S19258C8C1Ev();
extern void _ZN8S19258C8D2Ev();
Name_Map name_map_S19258C8[] = {
  NSPAIR(_ZN8S19258C8C1Ev),
  NSPAIR(_ZN8S19258C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
static Base_Class bases_S19258C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(640,336), //bcp->offset
    13, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(168,88), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19258C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4224C43_nt,    ABISELECT(808,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    ABISELECT(816,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(816,428), //bcp->offset
    19, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C8[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C8D1Ev();
extern void _ZN8S19258C8D0Ev();
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY vtc_S19258C8[] = {
  ABISELECT(816,428),
  ABISELECT(808,424),
  ABISELECT(640,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  ABISELECT(472,248),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  0,
  0,
  ABISELECT(-640,-336),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  0,
  0,
  0,
  ABISELECT(-816,-428),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19258C8[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C9__8S19258C8[] = {
  ABISELECT(640,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__8S19258C8[] = {
  ABISELECT(472,248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C9__8S19258C8[] = {
  0,
  0,
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C9__8S19258C8[] = {
  ABISELECT(472,248),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C9__8S19258C8[] = {
  0,
  0,
  ABISELECT(-640,-336),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTT_ENTRY vtt_S19258C8[] = {
  {&(_ZTV8S19258C8[5]),  5,27},
  {&(_tg__ZTV8S19258C9__8S19258C8[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C9__8S19258C8[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C9__8S19258C8[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C9__8S19258C8[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C9__8S19258C8[4]),  4,6},
  {&(_ZTV8S19258C8[13]),  13,27},
  {&(_ZTV8S19258C8[17]),  17,27},
  {&(_ZTV8S19258C8[24]),  24,27},
};
extern VTBL_ENTRY _ZTI8S19258C8[];
extern  VTBL_ENTRY _ZTV8S19258C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C8[];
Class_Descriptor cd_S19258C8 = {  "S19258C8", // class name
  bases_S19258C8, 7,
  &(vtc_S19258C8[0]), // expected_vtbl_contents
  &(vtt_S19258C8[0]), // expected_vtt_contents
  ABISELECT(1712,876), // object size
  NSPAIRA(_ZTI8S19258C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19258C8),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C8),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19258C5  : virtual S19258C6 , S19258C8 {
  void *s19258c5f0;
  virtual void  v5(); // _ZN8S19258C52v5Ev
  virtual void  v6(); // _ZN8S19258C52v6Ev
  ~S19258C5(); // tgen
  S19258C5(); // tgen
};
//SIG(-1 S19258C5) C1{ VBC2{ VBC3{ VBC4{ v3 v4 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC5{ VBC4 vd Fp FC4} BC4 VBC6{ BC4 v5 FC4 FC5 FC4} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC7{ BC8{ BC4 BC3 Fi} VBC9{ m Fp} VBC6 vd v6 FC8 FD Fp[7]} v1 v2 Fp}


void  S19258C5 ::v5(){vfunc_called(this, "_ZN8S19258C52v5Ev");}
void  S19258C5 ::v6(){vfunc_called(this, "_ZN8S19258C52v6Ev");}
S19258C5 ::~S19258C5(){ note_dtor("S19258C5", this);} // tgen
S19258C5 ::S19258C5(){ note_ctor("S19258C5", this);} // tgen

static void Test_S19258C5()
{
  extern Class_Descriptor cd_S19258C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(588,1180)];
    init_test(&cd_S19258C5, buf);
    S19258C5 *dp, &lv = *(dp=new (buf) S19258C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9392,4716), "sizeof(S19258C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C5)");
    /*is_ambiguous_... S19258C5::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(8112,4080), "S19258C5");
    check_base_class_offset(lv, (S19258C3*)(S19258C4*), ABISELECT(8112,4080), "S19258C5");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(8112,4080), "S19258C5");
    check_base_class_offset(lv, (S19258C7*)(S19258C6*), ABISELECT(8080,4068), "S19258C5");
    check_base_class_offset(lv, (S19258C4*)(S19258C6*), ABISELECT(8288,4168), "S19258C5");
    /*is_ambiguous_... S19258C6::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*), ABISELECT(640,340), "S19258C5");
    check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(8480,4264), "S19258C5");
    check_base_class_offset(lv, (S19258C2*)(S19258C6*), ABISELECT(8480,4264), "S19258C5");
    check_base_class_offset(lv, (S19258C2*)(S19258C8*), ABISELECT(8480,4264), "S19258C5");
    check_base_class_offset(lv, (S19258C6*), ABISELECT(640,340), "S19258C5");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C8*), 0, "S19258C5");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(168,88), "S19258C5");
    check_base_class_offset(lv, (S19258C9*)(S19258C8*), 0, "S19258C5");
    check_base_class_offset(lv, (S4224C43_nt*)(S19258C8*), ABISELECT(9376,4712), "S19258C5");
    check_base_class_offset(lv, (S19258C8*), 0, "S19258C5");
    check_field_offset(lv, s19258c5f0, ABISELECT(632,336), "S19258C5.s19258c5f0");
    test_class_info(&lv, &cd_S19258C5);
    dp->~S19258C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C5(Test_S19258C5, "S19258C5", ABISELECT(9392,4716));

#else // __cplusplus

extern void _ZN8S19258C5C1Ev();
extern void _ZN8S19258C5D1Ev();
Name_Map name_map_S19258C5[] = {
  NSPAIR(_ZN8S19258C5C1Ev),
  NSPAIR(_ZN8S19258C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C4;
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19258C8;
extern VTBL_ENTRY _ZTI8S19258C8[];
extern  VTBL_ENTRY _ZTV8S19258C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C8[];
static Base_Class bases_S19258C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(8112,4080), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(8080,4068), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19258C4,    ABISELECT(8288,4168), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(8480,4264), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C2,    ABISELECT(8480,4264), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C6,    ABISELECT(640,340), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C7,    ABISELECT(168,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19258C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(9376,4712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19258C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C5[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C5D1Ev();
extern void _ZN8S19258C5D0Ev();
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C52v5Ev();
extern void _ZN8S19258C52v6Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19258C5D1Ev,_ZTv0_n36_N8S19258C5D1Ev)();
extern void ABISELECT(_ZThn640_N8S19258C5D1Ev,_ZThn340_N8S19258C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19258C5D0Ev,_ZTv0_n36_N8S19258C5D0Ev)();
extern void ABISELECT(_ZThn640_N8S19258C5D0Ev,_ZThn340_N8S19258C5D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19258C5D1Ev,_ZTv0_n16_N8S19258C5D1Ev)();
extern void ABISELECT(_ZThn8288_N8S19258C5D1Ev,_ZThn4168_N8S19258C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C5D0Ev,_ZTv0_n16_N8S19258C5D0Ev)();
extern void ABISELECT(_ZThn8288_N8S19258C5D0Ev,_ZThn4168_N8S19258C5D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY vtc_S19258C5[] = {
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19258C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19258C52v6Ev,
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  ABISELECT(-640,-340),
  0,
  0,
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C5D1Ev,_ZTv0_n36_N8S19258C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C5D0Ev,_ZTv0_n36_N8S19258C5D0Ev),
  ABISELECT(32,12),
  ABISELECT(-8080,-4068),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(-8288,-4168),
  ABISELECT(-176,-88),
  ABISELECT(-8288,-4168),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C5D1Ev,_ZTv0_n16_N8S19258C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C5D0Ev,_ZTv0_n16_N8S19258C5D0Ev),
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19258C5[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C8D1Ev();
extern void _ZN8S19258C8D0Ev();
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__8S19258C5[] = {
  ABISELECT(8480,4264),
  ABISELECT(9376,4712),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C98S19258C8__8S19258C5[] = {
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A1__8S19258C5[] = {
  ABISELECT(7944,3992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A1__8S19258C5[] = {
  0,
  0,
  ABISELECT(-7944,-3992),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C98S19258C8__8S19258C5[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C98S19258C8__8S19258C5[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__8S19258C8__8S19258C5[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C8__8S19258C5[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C8__8S19258C5[] = {
  0,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C6__8S19258C5[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C6__8S19258C5[] = {
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C6__8S19258C5[] = {
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19258C6D1Ev,_ZThn3828_N8S19258C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19258C6D0Ev,_ZThn3828_N8S19258C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C6__8S19258C5[] = {
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C6__8S19258C5[] = {
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__8S19258C5[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C4__8S19258C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTT_ENTRY vtt_S19258C5[] = {
  {&(_ZTV8S19258C5[8]),  8,54},
  {&(_tg__ZTV8S19258C8__8S19258C5[5]),  5,10},
  {&(_tg__ZTV8S19258C98S19258C8__8S19258C5[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A1__8S19258C5[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A1__8S19258C5[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C98S19258C8__8S19258C5[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C98S19258C8__8S19258C5[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__8S19258C8__8S19258C5[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C8__8S19258C5[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C8__8S19258C5[5]),  5,8},
  {&(_ZTV8S19258C5[27]),  27,54},
  {&(_ZTV8S19258C5[34]),  34,54},
  {&(_ZTV8S19258C5[38]),  38,54},
  {&(_ZTV8S19258C5[44]),  44,54},
  {&(_ZTV8S19258C5[51]),  51,54},
  {&(_ZTV8S19258C5[18]),  18,54},
  {&(_tg__ZTV8S19258C6__8S19258C5[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C6__8S19258C5[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C6__8S19258C5[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C6__8S19258C5[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C6__8S19258C5[5]),  5,8},
  {&(_tg__ZTV8S19258C7__8S19258C5[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__8S19258C5[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C5[3]),  3,5},
  {&(_tg__ZTV8S19258C3__8S19258C4__8S19258C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19258C5[];
extern  VTBL_ENTRY _ZTV8S19258C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C5[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19258C6D0Ev,_ZThn3828_N8S19258C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19258C6D1Ev,_ZThn3828_N8S19258C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C5D0Ev,_ZTv0_n16_N8S19258C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19258C5D0Ev,_ZThn4168_N8S19258C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C5D1Ev,_ZTv0_n16_N8S19258C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19258C5D1Ev,_ZThn4168_N8S19258C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19258C5D0Ev,_ZTv0_n36_N8S19258C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19258C5D0Ev,_ZThn340_N8S19258C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19258C5D1Ev,_ZTv0_n36_N8S19258C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19258C5D1Ev,_ZThn340_N8S19258C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19258C5 = {  "S19258C5", // class name
  bases_S19258C5, 12,
  &(vtc_S19258C5[0]), // expected_vtbl_contents
  &(vtt_S19258C5[0]), // expected_vtt_contents
  ABISELECT(9392,4716), // object size
  NSPAIRA(_ZTI8S19258C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19258C5),54, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C5),25, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19258C12  : virtual S19258C3 , virtual S19258C4 , S19258C6 , S19258C7 , S19258C2 {
  void *s19258c12f0;
  char s19258c12f1;
  ~S19258C12(); // tgen
  S19258C12(); // tgen
};
//SIG(-1 S19258C12) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S19258C12()
{
  extern Class_Descriptor cd_S19258C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S19258C12, buf);
    S19258C12 *dp, &lv = *(dp=new (buf) S19258C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S19258C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C12)");
    /*is_ambiguous_... S19258C12::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*), ABISELECT(8384,4196), "S19258C12");
    check_base_class_offset(lv, (S19258C3*)(S19258C4*), ABISELECT(8384,4196), "S19258C12");
    /*is_ambiguous_... S19258C12::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(8384,4196), "S19258C12");
    /*is_ambiguous_... S19258C12::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(8384,4196), "S19258C12");
    check_base_class_offset(lv, (S19258C4*), ABISELECT(8560,4284), "S19258C12");
    check_base_class_offset(lv, (S19258C4*)(S19258C6*), ABISELECT(8560,4284), "S19258C12");
    check_base_class_offset(lv, (S19258C7*)(S19258C6*), ABISELECT(8752,4380), "S19258C12");
    /*is_ambiguous_... S19258C6::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*), 0, "S19258C12");
    /*is_ambiguous_... S19258C12::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(8784,4392), "S19258C12");
    check_base_class_offset(lv, (S19258C2*)(S19258C6*), ABISELECT(8784,4392), "S19258C12");
    check_base_class_offset(lv, (S19258C6*), 0, "S19258C12");
    /*is_ambiguous_... S19258C12::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C7*), ABISELECT(7440,3728), "S19258C12");
    /*is_ambiguous_... S19258C12::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(7472,3740), "S19258C12");
    /*is_ambiguous_... S19258C12::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C2*), ABISELECT(7472,3740), "S19258C12");
    check_field_offset(lv, s19258c12f0, ABISELECT(8368,4188), "S19258C12.s19258c12f0");
    check_field_offset(lv, s19258c12f1, ABISELECT(8376,4192), "S19258C12.s19258c12f1");
    test_class_info(&lv, &cd_S19258C12);
    dp->~S19258C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C12(Test_S19258C12, "S19258C12", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN9S19258C12C1Ev();
extern void _ZN9S19258C12D1Ev();
Name_Map name_map_S19258C12[] = {
  NSPAIR(_ZN9S19258C12C1Ev),
  NSPAIR(_ZN9S19258C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C4;
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
static Base_Class bases_S19258C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C4,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C7,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C2,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19258C7,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19258C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C2,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19258C12[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C12D1Ev();
extern void _ZN9S19258C12D0Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev)();
extern void ABISELECT(_ZThn8560_N9S19258C12D1Ev,_ZThn4284_N9S19258C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev)();
extern void ABISELECT(_ZThn8560_N9S19258C12D0Ev,_ZThn4284_N9S19258C12D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY vtc_S19258C12[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern VTBL_ENTRY _ZTV9S19258C12[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C6__9S19258C12[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C6__9S19258C12[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C6__9S19258C12[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19258C6D1Ev,_ZThn4284_N8S19258C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19258C6D0Ev,_ZThn4284_N8S19258C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C6__9S19258C12[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C6__9S19258C12[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A__9S19258C12[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__A__9S19258C12[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C12[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C4__9S19258C12[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C12[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__9S19258C12[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTT_ENTRY vtt_S19258C12[] = {
  {&(_ZTV9S19258C12[6]),  6,41},
  {&(_tg__ZTV8S19258C6__9S19258C12[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C6__9S19258C12[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C6__9S19258C12[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C6__9S19258C12[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C6__9S19258C12[5]),  5,8},
  {&(_tg__ZTV8S19258C7__A__9S19258C12[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__A__9S19258C12[4]),  4,6},
  {&(_ZTV9S19258C12[22]),  22,41},
  {&(_ZTV9S19258C12[28]),  28,41},
  {&(_ZTV9S19258C12[33]),  33,41},
  {&(_ZTV9S19258C12[38]),  38,41},
  {&(_ZTV9S19258C12[13]),  13,41},
  {&(_tg__ZTV8S19258C4__9S19258C12[3]),  3,5},
  {&(_tg__ZTV8S19258C3__8S19258C4__9S19258C12[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C12[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__9S19258C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19258C12[];
extern  VTBL_ENTRY _ZTV9S19258C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C12[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19258C6D0Ev,_ZThn4284_N8S19258C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19258C6D1Ev,_ZThn4284_N8S19258C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N9S19258C12D0Ev,_ZThn4284_N9S19258C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N9S19258C12D1Ev,_ZThn4284_N9S19258C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19258C12 = {  "S19258C12", // class name
  bases_S19258C12, 10,
  &(vtc_S19258C12[0]), // expected_vtbl_contents
  &(vtt_S19258C12[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI9S19258C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19258C12),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19258C12),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19258C14  : S19258C9 {
  int s19258c14f0[5];
  void *s19258c14f1;
  ::S19258C7 s19258c14f2;
  ::S19257C15 s19258c14f3;
  char s19258c14f4[9];
  int s19258c14f5;
  __tsi64 s19258c14f6[2];
  ~S19258C14(); // tgen
  S19258C14(); // tgen
};
//SIG(-1 S19258C14) C1{ BC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} Fi[5] Fp FC4 FU5{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]}


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

static void Test_S19258C14()
{
  extern Class_Descriptor cd_S19258C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(42,91)];
    init_test(&cd_S19258C14, buf);
    S19258C14 *dp, &lv = *(dp=new (buf) S19258C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(656,360), "sizeof(S19258C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C14)");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*), 0, "S19258C14");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*), ABISELECT(480,272), "S19258C14");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*), ABISELECT(168,88), "S19258C14");
    check_base_class_offset(lv, (S19258C9*), 0, "S19258C14");
    check_field_offset(lv, s19258c14f0, ABISELECT(192,104), "S19258C14.s19258c14f0");
    check_field_offset(lv, s19258c14f1, ABISELECT(216,124), "S19258C14.s19258c14f1");
    check_field_offset(lv, s19258c14f2, ABISELECT(224,128), "S19258C14.s19258c14f2");
    check_field_offset(lv, s19258c14f3, ABISELECT(432,228), "S19258C14.s19258c14f3");
    check_field_offset(lv, s19258c14f4, ABISELECT(448,240), "S19258C14.s19258c14f4");
    check_field_offset(lv, s19258c14f5, ABISELECT(460,252), "S19258C14.s19258c14f5");
    check_field_offset(lv, s19258c14f6, ABISELECT(464,256), "S19258C14.s19258c14f6");
    test_class_info(&lv, &cd_S19258C14);
    dp->~S19258C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C14(Test_S19258C14, "S19258C14", ABISELECT(656,360));

#else // __cplusplus

extern void _ZN9S19258C14C1Ev();
extern void _ZN9S19258C14D1Ev();
Name_Map name_map_S19258C14[] = {
  NSPAIR(_ZN9S19258C14C1Ev),
  NSPAIR(_ZN9S19258C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
static Base_Class bases_S19258C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19258C3,    ABISELECT(480,272), //bcp->offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(168,88), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19258C9,    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 _ZTI9S19258C14[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY vtc_S19258C14[] = {
  ABISELECT(480,272),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(312,184),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern VTBL_ENTRY _ZTV9S19258C14[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C9__9S19258C14[] = {
  ABISELECT(480,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C14[] = {
  ABISELECT(312,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C9__9S19258C14[] = {
  0,
  0,
  ABISELECT(-312,-184),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C9__9S19258C14[] = {
  ABISELECT(312,184),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C9__9S19258C14[] = {
  0,
  0,
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTT_ENTRY vtt_S19258C14[] = {
  {&(_ZTV9S19258C14[3]),  3,14},
  {&(_tg__ZTV8S19258C9__9S19258C14[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C14[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C9__9S19258C14[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C9__9S19258C14[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C9__9S19258C14[4]),  4,6},
  {&(_ZTV9S19258C14[8]),  8,14},
  {&(_ZTV9S19258C14[12]),  12,14},
};
extern VTBL_ENTRY _ZTI9S19258C14[];
extern  VTBL_ENTRY _ZTV9S19258C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C14[];
Class_Descriptor cd_S19258C14 = {  "S19258C14", // class name
  bases_S19258C14, 4,
  &(vtc_S19258C14[0]), // expected_vtbl_contents
  &(vtt_S19258C14[0]), // expected_vtt_contents
  ABISELECT(656,360), // object size
  NSPAIRA(_ZTI9S19258C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19258C14),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19258C14),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  S19258C13  : S19258C9 , virtual S19258C8 , virtual S19258C12 , S19258C14 , virtual S19258C6 {
  int s19258c13f0[6];
  ::S19258C7 s19258c13f1;
  ~S19258C13(); // tgen
  S19258C13(); // tgen
};
//SIG(-1 S19258C13) C1{ BC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} BC4{ VBC3 Fp Fs} Fi} VBC5{ BC2 VBC6{ m Fp} VBC7{ BC3 v3 FC3 FC8{ VBC3 vd Fp FC3} FC3} vd v4 FC2 FD Fp[7]} VBC9{ VBC3 VBC8 BC10{ VBC4 VBC8 BC3 VBC7 vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC4 BC7 Fp Fc} BC11{ BC2 Fi[5] Fp FC4 FU12{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]} VBC10 Fi[6] FC4}


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

static void Test_S19258C13()
{
  extern Class_Descriptor cd_S19258C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1168,2353)];
    init_test(&cd_S19258C13, buf);
    S19258C13 *dp, &lv = *(dp=new (buf) S19258C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(18672,9408), "sizeof(S19258C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C13)");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*), 0, "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*), ABISELECT(912,500), "S19258C13");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(912,500), "S19258C13");
    /*is_ambiguous_... S19258C12::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C12*), ABISELECT(912,500), "S19258C13");
    check_base_class_offset(lv, (S19258C3*)(S19258C4*), ABISELECT(912,500), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(912,500), "S19258C13");
    /*is_ambiguous_... S19258C12::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C12*), ABISELECT(912,500), "S19258C13");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C14*), ABISELECT(912,500), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C9*), ABISELECT(168,88), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C9*), 0, "S19258C13");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C8*), ABISELECT(1088,588), "S19258C13");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(1256,676), "S19258C13");
    check_base_class_offset(lv, (S19258C9*)(S19258C8*), ABISELECT(1088,588), "S19258C13");
    check_base_class_offset(lv, (S4224C43_nt*)(S19258C8*), ABISELECT(1720,924), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(1728,928), "S19258C13");
    check_base_class_offset(lv, (S19258C2*)(S19258C8*), ABISELECT(1728,928), "S19258C13");
    check_base_class_offset(lv, (S19258C2*)(S19258C6*)(S19258C12*), ABISELECT(1728,928), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*), ABISELECT(1728,928), "S19258C13");
    check_base_class_offset(lv, (S19258C8*), ABISELECT(1088,588), "S19258C13");
    check_base_class_offset(lv, (S19258C4*)(S19258C12*), ABISELECT(11008,5572), "S19258C13");
    check_base_class_offset(lv, (S19258C4*)(S19258C6*)(S19258C12*), ABISELECT(11008,5572), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*), ABISELECT(11008,5572), "S19258C13");
    check_base_class_offset(lv, (S19258C7*)(S19258C6*)(S19258C12*), ABISELECT(11200,5668), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*), ABISELECT(11200,5668), "S19258C13");
    /*is_ambiguous_... S19258C6::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*)(S19258C12*), ABISELECT(2624,1376), "S19258C13");
    check_base_class_offset(lv, (S19258C6*)(S19258C12*), ABISELECT(2624,1376), "S19258C13");
    /*is_ambiguous_... S19258C12::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C12*), ABISELECT(10064,5104), "S19258C13");
    /*is_ambiguous_... S19258C12::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*)(S19258C12*), ABISELECT(10096,5116), "S19258C13");
    /*is_ambiguous_... S19258C12::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C12*), ABISELECT(10096,5116), "S19258C13");
    check_base_class_offset(lv, (S19258C12*), ABISELECT(2624,1376), "S19258C13");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C14*), ABISELECT(192,104), "S19258C13");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C14*), ABISELECT(360,192), "S19258C13");
    check_base_class_offset(lv, (S19258C9*)(S19258C14*), ABISELECT(192,104), "S19258C13");
    check_base_class_offset(lv, (S19258C14*), ABISELECT(192,104), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*), ABISELECT(11232,5680), "S19258C13");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C6*), ABISELECT(11232,5680), "S19258C13");
    check_field_offset(lv, s19258c13f0, ABISELECT(672,376), "S19258C13.s19258c13f0");
    check_field_offset(lv, s19258c13f1, ABISELECT(704,400), "S19258C13.s19258c13f1");
    test_class_info(&lv, &cd_S19258C13);
    dp->~S19258C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C13(Test_S19258C13, "S19258C13", ABISELECT(18672,9408));

#else // __cplusplus

extern void _ZN9S19258C13C1Ev();
extern void _ZN9S19258C13D1Ev();
Name_Map name_map_S19258C13[] = {
  NSPAIR(_ZN9S19258C13C1Ev),
  NSPAIR(_ZN9S19258C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C8;
extern VTBL_ENTRY _ZTI8S19258C8[];
extern  VTBL_ENTRY _ZTV8S19258C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C8[];
extern Class_Descriptor cd_S19258C4;
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C12;
extern VTBL_ENTRY _ZTI9S19258C12[];
extern  VTBL_ENTRY _ZTV9S19258C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C12[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C14;
extern VTBL_ENTRY _ZTI9S19258C14[];
extern  VTBL_ENTRY _ZTV9S19258C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C14[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
static Base_Class bases_S19258C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(912,500), //bcp->offset
    25, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(168,88), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19258C9,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19258C3,    ABISELECT(1088,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(1256,676), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(1088,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(1720,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19258C3,    ABISELECT(1728,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(1728,928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19258C8,    ABISELECT(1088,588), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C4,    ABISELECT(11008,5572), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(11200,5668), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(2624,1376), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C6,    ABISELECT(2624,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(10064,5104), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(10096,5116), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(10096,5116), //bcp->offset
    73, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19258C12,    ABISELECT(2624,1376), //bcp->offset
    56, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    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
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(360,192), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19258C14,    ABISELECT(192,104), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19258C3,    ABISELECT(11232,5680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19258C6,    ABISELECT(11232,5680), //bcp->offset
    87, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19258C13[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C13D1Ev();
extern void _ZN9S19258C13D0Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn1088_N9S19258C13D1Ev,_ZThn588_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn1088_N9S19258C13D0Ev,_ZThn588_N9S19258C13D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn2624_N9S19258C13D1Ev,_ZThn1376_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn2624_N9S19258C13D0Ev,_ZThn1376_N9S19258C13D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19258C13D1Ev,_ZThn5572_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19258C13D0Ev,_ZThn5572_N9S19258C13D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn11232_N9S19258C13D1Ev,_ZThn5680_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn11232_N9S19258C13D0Ev,_ZThn5680_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19258C13[] = {
  ABISELECT(11232,5680),
  ABISELECT(11200,5668),
  ABISELECT(11008,5572),
  ABISELECT(2624,1376),
  ABISELECT(1728,928),
  ABISELECT(1720,924),
  ABISELECT(1088,588),
  ABISELECT(912,500),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D0Ev,
  ABISELECT(744,412),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  ABISELECT(720,396),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(552,308),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  0,
  0,
  ABISELECT(-912,-500),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  0,
  ABISELECT(-1088,-588),
  0,
  0,
  ABISELECT(640,340),
  ABISELECT(632,336),
  ABISELECT(-176,-88),
  ABISELECT(-1088,-588),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  ABISELECT(-344,-176),
  ABISELECT(-1256,-676),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  0,
  0,
  0,
  ABISELECT(-1728,-928),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  ABISELECT(7472,3740),
  ABISELECT(-2624,-1376),
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(8384,4196),
  ABISELECT(-1712,-876),
  ABISELECT(8576,4292),
  ABISELECT(-2624,-1376),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
  ABISELECT(-9152,-4604),
  ABISELECT(-10064,-5104),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  ABISELECT(-10096,-5116),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  ABISELECT(-11008,-5572),
  ABISELECT(-10096,-5072),
  ABISELECT(-11008,-5572),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev),
  ABISELECT(-10288,-5168),
  ABISELECT(-11200,-5668),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  ABISELECT(-11232,-5680),
  0,
  0,
  ABISELECT(-9504,-4752),
  ABISELECT(-224,-108),
  ABISELECT(-10320,-5180),
  ABISELECT(-32,-12),
  ABISELECT(-11232,-5680),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19258C13[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C9__9S19258C13[] = {
  ABISELECT(912,500),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C13[] = {
  ABISELECT(744,412),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C9__9S19258C13[] = {
  0,
  0,
  ABISELECT(-744,-412),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C9__9S19258C13[] = {
  ABISELECT(744,412),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C9__9S19258C13[] = {
  0,
  0,
  ABISELECT(-912,-500),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C14__9S19258C13[] = {
  ABISELECT(720,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C14__A2__9S19258C13[] = {
  ABISELECT(720,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C13[] = {
  ABISELECT(552,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C14__A4__9S19258C13[] = {
  0,
  0,
  ABISELECT(-552,-308),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C14__A2__9S19258C13[] = {
  ABISELECT(552,308),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C14__A2__9S19258C13[] = {
  0,
  0,
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C14__9S19258C13[] = {
  ABISELECT(552,308),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C14__9S19258C13[] = {
  0,
  0,
  ABISELECT(-720,-396),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C8D1Ev();
extern void _ZN8S19258C8D0Ev();
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__9S19258C13[] = {
  ABISELECT(640,340),
  ABISELECT(632,336),
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C98S19258C8__A1__9S19258C13[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C13[] = {
  ABISELECT(-344,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A1__9S19258C13[] = {
  0,
  0,
  ABISELECT(344,176),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C98S19258C8__A1__9S19258C13[] = {
  ABISELECT(-344,-176),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C98S19258C8__A1__9S19258C13[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__8S19258C8__9S19258C13[] = {
  ABISELECT(-344,-176),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C8__9S19258C13[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C8__9S19258C13[] = {
  0,
  0,
  0,
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C12D1Ev();
extern void _ZN9S19258C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C12__9S19258C13[] = {
  ABISELECT(-896,-448),
  ABISELECT(8384,4196),
  ABISELECT(-1712,-876),
  ABISELECT(8576,4292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C69S19258C12__9S19258C13[] = {
  ABISELECT(-896,-448),
  ABISELECT(8384,4196),
  ABISELECT(-1712,-876),
  ABISELECT(8576,4292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C69S19258C12__9S19258C13[] = {
  ABISELECT(-10288,-5168),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C69S19258C12__9S19258C13[] = {
  0,
  0,
  ABISELECT(1712,876),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZThn8384_N8S19258C6D1Ev,_ZThn4196_N8S19258C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
extern void ABISELECT(_ZThn8384_N8S19258C6D0Ev,_ZThn4196_N8S19258C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C69S19258C12__9S19258C13[] = {
  ABISELECT(-8384,-4196),
  ABISELECT(-10096,-5072),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C69S19258C12__9S19258C13[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A3__9S19258C13[] = {
  ABISELECT(-9152,-4604),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C79S19258C12__A3__9S19258C13[] = {
  0,
  0,
  ABISELECT(9152,4604),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__9S19258C12__9S19258C13[] = {
  0,
  0,
  ABISELECT(1712,876),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev)();
extern void ABISELECT(_ZThn8384_N9S19258C12D1Ev,_ZThn4196_N9S19258C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev)();
extern void ABISELECT(_ZThn8384_N9S19258C12D0Ev,_ZThn4196_N9S19258C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C12__9S19258C13[] = {
  ABISELECT(-8384,-4196),
  ABISELECT(-10096,-5072),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C12__9S19258C13[] = {
  ABISELECT(-10288,-5168),
  ABISELECT(-8576,-4292),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C12__9S19258C13[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A__9S19258C12__9S19258C13[] = {
  ABISELECT(-9152,-4604),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C13[] = {
  ABISELECT(-10096,-5072),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C4__9S19258C13[] = {
  0,
  0,
  ABISELECT(10096,5072),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A2__9S19258C13[] = {
  ABISELECT(-10288,-5168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__A2__9S19258C13[] = {
  0,
  0,
  ABISELECT(10288,5168),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C6__A1__9S19258C13[] = {
  ABISELECT(-9504,-4752),
  ABISELECT(-224,-108),
  ABISELECT(-10320,-5180),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C6__A1__9S19258C13[] = {
  ABISELECT(-10288,-5168),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C6__A1__9S19258C13[] = {
  0,
  0,
  ABISELECT(10320,5180),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C6__A1__9S19258C13[] = {
  ABISELECT(224,108),
  ABISELECT(-10096,-5072),
  ABISELECT(224,108),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C6__A1__9S19258C13[] = {
  0,
  0,
  0,
  ABISELECT(9504,4752),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTT_ENTRY vtt_S19258C13[] = {
  {&(_ZTV9S19258C13[10]),  10,100},
  {&(_tg__ZTV8S19258C9__9S19258C13[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C9__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C9__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C9__9S19258C13[4]),  4,6},
  {&(_tg__ZTV9S19258C14__9S19258C13[3]),  3,5},
  {&(_tg__ZTV8S19258C99S19258C14__A2__9S19258C13[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C14__A4__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C14__A2__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C14__A2__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C14__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C14__9S19258C13[4]),  4,6},
  {&(_ZTV9S19258C13[17]),  17,100},
  {&(_ZTV9S19258C13[29]),  29,100},
  {&(_ZTV9S19258C13[40]),  40,100},
  {&(_ZTV9S19258C13[48]),  48,100},
  {&(_ZTV9S19258C13[53]),  53,100},
  {&(_ZTV9S19258C13[66]),  66,100},
  {&(_ZTV9S19258C13[82]),  82,100},
  {&(_ZTV9S19258C13[87]),  87,100},
  {&(_ZTV9S19258C13[73]),  73,100},
  {&(_ZTV9S19258C13[75]),  75,100},
  {&(_ZTV9S19258C13[20]),  20,100},
  {&(_ZTV9S19258C13[25]),  25,100},
  {&(_ZTV9S19258C13[96]),  96,100},
  {&(_tg__ZTV8S19258C8__9S19258C13[5]),  5,10},
  {&(_tg__ZTV8S19258C98S19258C8__A1__9S19258C13[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A1__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C98S19258C8__A1__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C98S19258C8__A1__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__8S19258C8__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C8__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C8__9S19258C13[5]),  5,8},
  {&(_tg__ZTV9S19258C12__9S19258C13[6]),  6,10},
  {&(_tg__ZTV8S19258C69S19258C12__9S19258C13[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C69S19258C12__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C69S19258C12__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C69S19258C12__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C69S19258C12__9S19258C13[5]),  5,8},
  {&(_tg__ZTV8S19258C79S19258C12__A3__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C79S19258C12__A3__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C3__9S19258C12__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C4__9S19258C12__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C12__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C12__9S19258C13[5]),  5,8},
  {&(_tg__ZTV8S19258C7__A__9S19258C12__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C4__9S19258C13[3]),  3,5},
  {&(_tg__ZTV8S19258C3__8S19258C4__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C7__A2__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__A2__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C6__A1__9S19258C13[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C6__A1__9S19258C13[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C6__A1__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C6__A1__9S19258C13[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C6__A1__9S19258C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19258C13[];
extern  VTBL_ENTRY _ZTV9S19258C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C13[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N9S19258C12D0Ev,_ZThn4196_N9S19258C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N9S19258C12D1Ev,_ZThn4196_N9S19258C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N8S19258C6D0Ev,_ZThn4196_N8S19258C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8384_N8S19258C6D1Ev,_ZThn4196_N8S19258C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19258C13D0Ev,_ZThn5572_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19258C13D1Ev,_ZThn5572_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11232_N9S19258C13D0Ev,_ZThn5680_N9S19258C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2624_N9S19258C13D0Ev,_ZThn1376_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11232_N9S19258C13D1Ev,_ZThn5680_N9S19258C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2624_N9S19258C13D1Ev,_ZThn1376_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S19258C13D0Ev,_ZThn588_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N9S19258C13D1Ev,_ZThn588_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19258C13 = {  "S19258C13", // class name
  bases_S19258C13, 25,
  &(vtc_S19258C13[0]), // expected_vtbl_contents
  &(vtt_S19258C13[0]), // expected_vtt_contents
  ABISELECT(18672,9408), // object size
  NSPAIRA(_ZTI9S19258C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19258C13),100, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19258C13),58, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19258C11  : S19258C12 , S19258C13 {
  __tsi64 s19258c11f0;
  __tsi64  :0;
  __tsi64 s19258c11f2;
  void *s19258c11f3;
  virtual  ~S19258C11(); // _ZN9S19258C11D2Ev
  S19258C11(); // tgen
};
//SIG(-1 S19258C11) C1{ BC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ VBC3 vd Fp FC3} BC5{ VBC6{ VBC3 Fp Fs} VBC4 BC3 VBC7{ BC3 v3 FC3 FC4 FC3} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} BC8{ BC9{ BC3 BC6 Fi} VBC10{ BC9 VBC11{ m Fp} VBC7 vd v4 FC9 FD Fp[7]} VBC2 BC12{ BC9 Fi[5] Fp FC6 FU13{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]} VBC5 Fi[6] FC6} vd FL FL:0 FL Fp}


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

static void Test_S19258C11()
{
  extern Class_Descriptor cd_S19258C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1694,3407)];
    init_test(&cd_S19258C11, buf);
    S19258C11 *dp, &lv = *(dp=new (buf) S19258C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(27088,13624), "sizeof(S19258C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C11)");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C12*), ABISELECT(9328,4716), "S19258C11");
    check_base_class_offset(lv, (S19258C3*)(S19258C4*), ABISELECT(9328,4716), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(9328,4716), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C12*), ABISELECT(9328,4716), "S19258C11");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C13*), ABISELECT(9328,4716), "S19258C11");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(9328,4716), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C12*), ABISELECT(9328,4716), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C12*), ABISELECT(9328,4716), "S19258C11");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(9328,4716), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C12*), ABISELECT(9504,4804), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*)(S19258C12*), ABISELECT(9504,4804), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C12*), ABISELECT(9504,4804), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*)(S19258C12*), ABISELECT(9504,4804), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*), ABISELECT(9504,4804), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*)(S19258C12*), ABISELECT(9696,4900), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*)(S19258C12*), ABISELECT(9696,4900), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*), ABISELECT(9696,4900), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*)(S19258C12*), 0, "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(9728,4912), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*)(S19258C12*), ABISELECT(9728,4912), "S19258C11");
    check_base_class_offset(lv, (S19258C2*)(S19258C8*), ABISELECT(9728,4912), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*)(S19258C12*), ABISELECT(9728,4912), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*), ABISELECT(9728,4912), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C12*), 0, "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C12*), ABISELECT(7440,3728), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*)(S19258C12*), ABISELECT(7472,3740), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C12*), ABISELECT(7472,3740), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C12*), 0, "S19258C11");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C13*), ABISELECT(8384,4196), "S19258C11");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C13*), ABISELECT(8552,4284), "S19258C11");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C9*)(S19258C13*), ABISELECT(8384,4196), "S19258C11");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C8*), ABISELECT(10624,5360), "S19258C11");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(10792,5448), "S19258C11");
    check_base_class_offset(lv, (S19258C9*)(S19258C8*), ABISELECT(10624,5360), "S19258C11");
    check_base_class_offset(lv, (S4224C43_nt*)(S19258C8*), ABISELECT(11256,5696), "S19258C11");
    check_base_class_offset(lv, (S19258C8*)(S19258C13*), ABISELECT(10624,5360), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*)(S19258C12*), ABISELECT(11264,5700), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C12*), ABISELECT(11264,5700), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C12*), ABISELECT(18704,9428), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*)(S19258C12*), ABISELECT(18736,9440), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C12*), ABISELECT(18736,9440), "S19258C11");
    check_base_class_offset(lv, (S19258C12*)(S19258C13*), ABISELECT(11264,5700), "S19258C11");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(8576,4300), "S19258C11");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(8744,4388), "S19258C11");
    check_base_class_offset(lv, (S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(8576,4300), "S19258C11");
    check_base_class_offset(lv, (S19258C14*)(S19258C13*), ABISELECT(8576,4300), "S19258C11");
    /*is_ambiguous_... S19258C11::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*), ABISELECT(19648,9896), "S19258C11");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C13*), ABISELECT(19648,9896), "S19258C11");
    check_base_class_offset(lv, (S19258C13*), ABISELECT(8384,4196), "S19258C11");
    check_field_offset(lv, s19258c11f0, ABISELECT(9296,4696), "S19258C11.s19258c11f0");
    check_field_offset(lv, s19258c11f2, ABISELECT(9304,4704), "S19258C11.s19258c11f2");
    check_field_offset(lv, s19258c11f3, ABISELECT(9312,4712), "S19258C11.s19258c11f3");
    test_class_info(&lv, &cd_S19258C11);
    dp->~S19258C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C11(Test_S19258C11, "S19258C11", ABISELECT(27088,13624));

#else // __cplusplus

extern void _ZN9S19258C11C1Ev();
extern void _ZN9S19258C11D2Ev();
Name_Map name_map_S19258C11[] = {
  NSPAIR(_ZN9S19258C11C1Ev),
  NSPAIR(_ZN9S19258C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C4;
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C12;
extern VTBL_ENTRY _ZTI9S19258C12[];
extern  VTBL_ENTRY _ZTV9S19258C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C12[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19258C8;
extern VTBL_ENTRY _ZTI8S19258C8[];
extern  VTBL_ENTRY _ZTV8S19258C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C8[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C12;
extern VTBL_ENTRY _ZTI9S19258C12[];
extern  VTBL_ENTRY _ZTV9S19258C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C12[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C14;
extern VTBL_ENTRY _ZTI9S19258C14[];
extern  VTBL_ENTRY _ZTV9S19258C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C14[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C13;
extern VTBL_ENTRY _ZTI9S19258C13[];
extern  VTBL_ENTRY _ZTV9S19258C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C13[];
static Base_Class bases_S19258C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(9328,4716), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19258C4,    ABISELECT(9504,4804), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(9696,4900), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(9728,4912), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C2,    ABISELECT(9728,4912), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(7440,3728), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(7472,3740), //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
    22, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19258C12,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19258C3,    ABISELECT(8384,4196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(8552,4284), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(8384,4196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(10624,5360), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(10792,5448), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(10624,5360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(11256,5696), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19258C8,    ABISELECT(10624,5360), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(11264,5700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19258C6,    ABISELECT(11264,5700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(18704,9428), //bcp->offset
    101, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(18736,9440), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(18736,9440), //bcp->offset
    104, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19258C12,    ABISELECT(11264,5700), //bcp->offset
    87, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(8576,4300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(8744,4388), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(8576,4300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19258C14,    ABISELECT(8576,4300), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(19648,9896), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S19258C6,    ABISELECT(19648,9896), //bcp->offset
    109, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19258C13,    ABISELECT(8384,4196), //bcp->offset
    22, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19258C11[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C11D1Ev();
extern void _ZN9S19258C11D0Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZThn8384_N9S19258C11D1Ev,_ZThn4196_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn8384_N9S19258C11D0Ev,_ZThn4196_N9S19258C11D0Ev)();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S19258C11D1Ev,_ZTv0_n16_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn9504_N9S19258C11D1Ev,_ZThn4804_N9S19258C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C11D0Ev,_ZTv0_n16_N9S19258C11D0Ev)();
extern void ABISELECT(_ZThn9504_N9S19258C11D0Ev,_ZThn4804_N9S19258C11D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19258C11D1Ev,_ZTv0_n32_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn10624_N9S19258C11D1Ev,_ZThn5360_N9S19258C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19258C11D0Ev,_ZTv0_n32_N9S19258C11D0Ev)();
extern void ABISELECT(_ZThn10624_N9S19258C11D0Ev,_ZThn5360_N9S19258C11D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn11264_N9S19258C11D1Ev,_ZThn5700_N9S19258C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev)();
extern void ABISELECT(_ZThn11264_N9S19258C11D0Ev,_ZThn5700_N9S19258C11D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn19648_N9S19258C11D1Ev,_ZThn9896_N9S19258C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev)();
extern void ABISELECT(_ZThn19648_N9S19258C11D0Ev,_ZThn9896_N9S19258C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19258C11[] = {
  ABISELECT(19648,9896),
  ABISELECT(11264,5700),
  ABISELECT(11256,5696),
  ABISELECT(10624,5360),
  ABISELECT(9728,4912),
  ABISELECT(9504,4804),
  ABISELECT(9328,4716),
  ABISELECT(9696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C11D0Ev,
  ABISELECT(1888,988),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  ABISELECT(11264,5700),
  ABISELECT(1312,704),
  ABISELECT(1120,608),
  ABISELECT(2880,1504),
  ABISELECT(1344,716),
  ABISELECT(2872,1500),
  ABISELECT(2240,1164),
  ABISELECT(944,520),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19258C11D1Ev,_ZThn4196_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19258C11D0Ev,_ZThn4196_N9S19258C11D0Ev),
  ABISELECT(776,432),
  ABISELECT(-8552,-4284),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  ABISELECT(752,416),
  ABISELECT(-8576,-4300),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(584,328),
  ABISELECT(-8744,-4388),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  0,
  0,
  ABISELECT(-9328,-4716),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(-9504,-4804),
  ABISELECT(-176,-88),
  ABISELECT(-9504,-4804),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C11D1Ev,_ZTv0_n16_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C11D0Ev,_ZTv0_n16_N9S19258C11D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-9696,-4900),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  0,
  0,
  0,
  ABISELECT(-9728,-4912),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  0,
  ABISELECT(-10624,-5360),
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(632,336),
  ABISELECT(-1296,-644),
  ABISELECT(-10624,-5360),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C11D1Ev,_ZTv0_n32_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C11D0Ev,_ZTv0_n32_N9S19258C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  ABISELECT(-1464,-732),
  ABISELECT(-10792,-5448),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  ABISELECT(7472,3740),
  ABISELECT(-11264,-5700),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  ABISELECT(-11264,-5700),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev),
  ABISELECT(-9376,-4712),
  ABISELECT(-18704,-9428),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  ABISELECT(-18736,-9440),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  ABISELECT(-19648,-9896),
  0,
  0,
  ABISELECT(-9920,-4984),
  ABISELECT(-10144,-5092),
  ABISELECT(-10320,-5180),
  ABISELECT(-9952,-4996),
  ABISELECT(-19648,-9896),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19258C11[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C12D1Ev();
extern void _ZN9S19258C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C12__A__9S19258C11[] = {
  ABISELECT(9728,4912),
  ABISELECT(9504,4804),
  ABISELECT(9328,4716),
  ABISELECT(9696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C69S19258C12__9S19258C11[] = {
  ABISELECT(9728,4912),
  ABISELECT(9504,4804),
  ABISELECT(9328,4716),
  ABISELECT(9696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C69S19258C12__9S19258C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-9696,-4900),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C69S19258C12__9S19258C11[] = {
  0,
  0,
  ABISELECT(-9328,-4716),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZThn9504_N8S19258C6D1Ev,_ZThn4804_N8S19258C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
extern void ABISELECT(_ZThn9504_N8S19258C6D0Ev,_ZThn4804_N8S19258C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C69S19258C12__9S19258C11[] = {
  ABISELECT(-9504,-4804),
  ABISELECT(-176,-88),
  ABISELECT(-9504,-4804),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C69S19258C12__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(-9728,-4912),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A1__9S19258C11[] = {
  ABISELECT(1888,988),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C79S19258C12__A1__9S19258C11[] = {
  0,
  0,
  ABISELECT(-1888,-988),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__9S19258C12__A__9S19258C11[] = {
  0,
  0,
  ABISELECT(-9328,-4716),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev)();
extern void ABISELECT(_ZThn9504_N9S19258C12D1Ev,_ZThn4804_N9S19258C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev)();
extern void ABISELECT(_ZThn9504_N9S19258C12D0Ev,_ZThn4804_N9S19258C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C12__A__9S19258C11[] = {
  ABISELECT(-9504,-4804),
  ABISELECT(-176,-88),
  ABISELECT(-9504,-4804),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C12__A__9S19258C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-9696,-4900),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C12__A__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(-9728,-4912),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A__9S19258C12__A__9S19258C11[] = {
  ABISELECT(1888,988),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C13D1Ev();
extern void _ZN9S19258C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C13__9S19258C11[] = {
  ABISELECT(11264,5700),
  ABISELECT(1312,704),
  ABISELECT(1120,608),
  ABISELECT(2880,1504),
  ABISELECT(1344,716),
  ABISELECT(2872,1500),
  ABISELECT(2240,1164),
  ABISELECT(944,520),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C13__9S19258C11[] = {
  ABISELECT(944,520),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C13__A2__9S19258C11[] = {
  ABISELECT(776,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C13__A2__9S19258C11[] = {
  0,
  0,
  ABISELECT(-776,-432),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C13__9S19258C11[] = {
  ABISELECT(776,432),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C13__9S19258C11[] = {
  0,
  0,
  ABISELECT(-944,-520),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C149S19258C13__9S19258C11[] = {
  ABISELECT(752,416),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C149S19258C13__A2__9S19258C11[] = {
  ABISELECT(752,416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C149S19258C13__A5__9S19258C11[] = {
  ABISELECT(584,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C149S19258C13__A5__9S19258C11[] = {
  0,
  0,
  ABISELECT(-584,-328),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C149S19258C13__A2__9S19258C11[] = {
  ABISELECT(584,328),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C149S19258C13__A2__9S19258C11[] = {
  0,
  0,
  ABISELECT(-752,-416),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C149S19258C13__9S19258C11[] = {
  ABISELECT(584,328),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C149S19258C13__9S19258C11[] = {
  0,
  0,
  ABISELECT(-752,-416),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C13__9S19258C11[] = {
  ABISELECT(776,432),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C13__9S19258C11[] = {
  0,
  0,
  ABISELECT(-944,-520),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn2240_N9S19258C13D1Ev,_ZThn1164_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn2240_N9S19258C13D0Ev,_ZThn1164_N9S19258C13D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__9S19258C13__9S19258C11[] = {
  0,
  ABISELECT(-2240,-1164),
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(632,336),
  ABISELECT(-1296,-644),
  ABISELECT(-2240,-1164),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C13__9S19258C11[] = {
  ABISELECT(-1464,-732),
  ABISELECT(-2408,-1252),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C13__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(-1344,-716),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn2880_N9S19258C13D1Ev,_ZThn1504_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn2880_N9S19258C13D0Ev,_ZThn1504_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19258C12__9S19258C13__9S19258C11[] = {
  ABISELECT(7472,3740),
  ABISELECT(-2880,-1504),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  ABISELECT(-2880,-1504),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn1120_N9S19258C13D1Ev,_ZThn608_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn1120_N9S19258C13D0Ev,_ZThn608_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C13__9S19258C11[] = {
  ABISELECT(-1120,-608),
  ABISELECT(-176,-88),
  ABISELECT(-1120,-608),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A2__9S19258C13__9S19258C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(-1312,-704),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A3__9S19258C13__9S19258C11[] = {
  ABISELECT(-9376,-4712),
  ABISELECT(-10320,-5232),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C29S19258C12__A1__9S19258C13__9S19258C11[] = {
  ABISELECT(-10352,-5244),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C14__9S19258C13__9S19258C11[] = {
  ABISELECT(752,416),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C13__9S19258C11[] = {
  ABISELECT(584,328),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn11264_N9S19258C13D1Ev,_ZThn5700_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn11264_N9S19258C13D0Ev,_ZThn5700_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C6__A1__9S19258C13__9S19258C11[] = {
  ABISELECT(-11264,-5700),
  0,
  0,
  ABISELECT(-9920,-4984),
  ABISELECT(-10144,-5092),
  ABISELECT(-10320,-5180),
  ABISELECT(-9952,-4996),
  ABISELECT(-11264,-5700),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C11[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C4__9S19258C11[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C11[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__9S19258C11[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C8D1Ev();
extern void _ZN8S19258C8D0Ev();
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__9S19258C11[] = {
  ABISELECT(-896,-448),
  ABISELECT(632,336),
  ABISELECT(-1296,-644),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C98S19258C8__A1__9S19258C11[] = {
  ABISELECT(-1296,-644),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A3__9S19258C11[] = {
  ABISELECT(-1464,-732),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A3__9S19258C11[] = {
  0,
  0,
  ABISELECT(1464,732),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C98S19258C8__A1__9S19258C11[] = {
  ABISELECT(-1464,-732),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C98S19258C8__A1__9S19258C11[] = {
  0,
  0,
  ABISELECT(1296,644),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__8S19258C8__9S19258C11[] = {
  ABISELECT(-1464,-732),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C8__9S19258C11[] = {
  0,
  0,
  ABISELECT(1296,644),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C8__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C12D1Ev();
extern void _ZN9S19258C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C12__A1__9S19258C11[] = {
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C69S19258C12__A1__9S19258C11[] = {
  ABISELECT(-1536,-788),
  ABISELECT(-1760,-896),
  ABISELECT(-1936,-984),
  ABISELECT(-1568,-800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C69S19258C12__A1__9S19258C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(1568,800),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C69S19258C12__A1__9S19258C11[] = {
  0,
  0,
  ABISELECT(1936,984),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C69S19258C12__A1__9S19258C11[] = {
  ABISELECT(1760,896),
  ABISELECT(-176,-88),
  ABISELECT(1760,896),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C69S19258C12__A1__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(1536,788),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A4__9S19258C11[] = {
  ABISELECT(-9376,-4712),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C79S19258C12__A4__9S19258C11[] = {
  0,
  0,
  ABISELECT(9376,4712),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__9S19258C12__A1__9S19258C11[] = {
  0,
  0,
  ABISELECT(1936,984),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C12__A1__9S19258C11[] = {
  ABISELECT(1760,896),
  ABISELECT(-176,-88),
  ABISELECT(1760,896),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C12__A1__9S19258C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(1568,800),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C12__A1__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(1536,788),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A__9S19258C12__A1__9S19258C11[] = {
  ABISELECT(-9376,-4712),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C6__A2__9S19258C11[] = {
  ABISELECT(-9920,-4984),
  ABISELECT(-10144,-5092),
  ABISELECT(-10320,-5180),
  ABISELECT(-9952,-4996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C6__A2__9S19258C11[] = {
  ABISELECT(-368,-184),
  ABISELECT(9952,4996),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C6__A2__9S19258C11[] = {
  0,
  0,
  ABISELECT(10320,5180),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C6__A2__9S19258C11[] = {
  ABISELECT(10144,5092),
  ABISELECT(-176,-88),
  ABISELECT(10144,5092),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C6__A2__9S19258C11[] = {
  0,
  0,
  0,
  ABISELECT(9920,4984),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTT_ENTRY vtt_S19258C11[] = {
  {&(_ZTV9S19258C11[10]),  10,122},
  {&(_tg__ZTV9S19258C12__A__9S19258C11[6]),  6,10},
  {&(_tg__ZTV8S19258C69S19258C12__9S19258C11[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C69S19258C12__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C69S19258C12__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C69S19258C12__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C69S19258C12__9S19258C11[5]),  5,8},
  {&(_tg__ZTV8S19258C79S19258C12__A1__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C79S19258C12__A1__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C3__9S19258C12__A__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C4__9S19258C12__A__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C12__A__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C12__A__9S19258C11[5]),  5,8},
  {&(_tg__ZTV8S19258C7__A__9S19258C12__A__9S19258C11[3]),  3,3},
  {&(_tg__ZTV9S19258C13__9S19258C11[10]),  10,14},
  {&(_tg__ZTV8S19258C99S19258C13__9S19258C11[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C13__A2__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C13__A2__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C13__9S19258C11[4]),  4,6},
  {&(_tg__ZTV9S19258C149S19258C13__9S19258C11[3]),  3,5},
  {&(_tg__ZTV8S19258C99S19258C149S19258C13__A2__9S19258C11[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C149S19258C13__A5__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C149S19258C13__A5__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C149S19258C13__A2__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C149S19258C13__A2__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C149S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C149S19258C13__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C13__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C8__9S19258C13__9S19258C11[9]),  9,14},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C13__9S19258C11[5]),  5,8},
  {&(_tg__ZTV9S19258C12__9S19258C13__9S19258C11[10]),  10,14},
  {&(_tg__ZTV8S19258C4__9S19258C13__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__A2__9S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C79S19258C12__A3__9S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C29S19258C12__A1__9S19258C13__9S19258C11[2]),  2,5},
  {&(_tg__ZTV9S19258C14__9S19258C13__9S19258C11[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C13__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C6__A1__9S19258C13__9S19258C11[9]),  9,13},
  {&(_ZTV9S19258C11[51]),  51,122},
  {&(_ZTV9S19258C11[57]),  57,122},
  {&(_ZTV9S19258C11[62]),  62,122},
  {&(_ZTV9S19258C11[67]),  67,122},
  {&(_ZTV9S19258C11[17]),  17,122},
  {&(_ZTV9S19258C11[32]),  32,122},
  {&(_ZTV9S19258C11[39]),  39,122},
  {&(_ZTV9S19258C11[79]),  79,122},
  {&(_ZTV9S19258C11[87]),  87,122},
  {&(_ZTV9S19258C11[97]),  97,122},
  {&(_ZTV9S19258C11[104]),  104,122},
  {&(_ZTV9S19258C11[106]),  106,122},
  {&(_ZTV9S19258C11[42]),  42,122},
  {&(_ZTV9S19258C11[47]),  47,122},
  {&(_ZTV9S19258C11[118]),  118,122},
  {&(_tg__ZTV8S19258C4__9S19258C11[3]),  3,5},
  {&(_tg__ZTV8S19258C3__8S19258C4__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C8__9S19258C11[5]),  5,10},
  {&(_tg__ZTV8S19258C98S19258C8__A1__9S19258C11[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A3__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A3__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C98S19258C8__A1__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C98S19258C8__A1__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__8S19258C8__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C8__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C8__9S19258C11[5]),  5,8},
  {&(_tg__ZTV9S19258C12__A1__9S19258C11[6]),  6,10},
  {&(_tg__ZTV8S19258C69S19258C12__A1__9S19258C11[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C69S19258C12__A1__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C69S19258C12__A1__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C69S19258C12__A1__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C69S19258C12__A1__9S19258C11[5]),  5,8},
  {&(_tg__ZTV8S19258C79S19258C12__A4__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C79S19258C12__A4__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C3__9S19258C12__A1__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C4__9S19258C12__A1__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C12__A1__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C12__A1__9S19258C11[5]),  5,8},
  {&(_tg__ZTV8S19258C7__A__9S19258C12__A1__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C6__A2__9S19258C11[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C6__A2__9S19258C11[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C6__A2__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C6__A2__9S19258C11[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C6__A2__9S19258C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19258C11[];
extern  VTBL_ENTRY _ZTV9S19258C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C11[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N9S19258C13D0Ev,_ZThn608_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N9S19258C13D1Ev,_ZThn608_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19258C13D0Ev,_ZThn5700_N9S19258C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N9S19258C13D0Ev,_ZThn1504_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19258C13D1Ev,_ZThn5700_N9S19258C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N9S19258C13D1Ev,_ZThn1504_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N9S19258C13D0Ev,_ZThn1164_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N9S19258C13D1Ev,_ZThn1164_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19258C12D0Ev,_ZThn4804_N9S19258C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19258C12D1Ev,_ZThn4804_N9S19258C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N8S19258C6D0Ev,_ZThn4804_N8S19258C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N8S19258C6D1Ev,_ZThn4804_N8S19258C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19648_N9S19258C11D0Ev,_ZThn9896_N9S19258C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19258C11D0Ev,_ZThn5700_N9S19258C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19648_N9S19258C11D1Ev,_ZThn9896_N9S19258C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N9S19258C11D1Ev,_ZThn5700_N9S19258C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C11D0Ev,_ZTv0_n32_N9S19258C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10624_N9S19258C11D0Ev,_ZThn5360_N9S19258C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C11D1Ev,_ZTv0_n32_N9S19258C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10624_N9S19258C11D1Ev,_ZThn5360_N9S19258C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C11D0Ev,_ZTv0_n16_N9S19258C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19258C11D0Ev,_ZThn4804_N9S19258C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C11D1Ev,_ZTv0_n16_N9S19258C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9504_N9S19258C11D1Ev,_ZThn4804_N9S19258C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19258C11 = {  "S19258C11", // class name
  bases_S19258C11, 32,
  &(vtc_S19258C11[0]), // expected_vtbl_contents
  &(vtt_S19258C11[0]), // expected_vtt_contents
  ABISELECT(27088,13624), // object size
  NSPAIRA(_ZTI9S19258C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19258C11),122, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19258C11),87, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19258C1  : virtual S19258C2 , virtual S19258C5 , virtual S19258C11 , S19258C13 {
  void *s19258c1f0;
  int s19258c1f1;
  void *s19258c1f2;
  ::S20636C21_nt s19258c1f3;
  ~S19258C1(); // tgen
  S19258C1(); // tgen
};
//SIG(1 S19258C1) C1{ VBC2{ BC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} v3 FC3 FC4{ VBC3 vd Fp FC3} FC3} VBC5{ VBC6{ VBC7{ VBC3 Fp Fs} VBC4 BC3 VBC2 vd FC2 Fp Fl[8] FL[2] Fc FC2[7]} BC8{ BC9{ BC3 BC7 Fi} VBC10{ m Fp} VBC2 vd v4 FC9 FD Fp[7]} v5 v6 Fp} VBC11{ BC12{ VBC3 VBC4 BC6 BC7 BC2 Fp Fc} BC13{ BC9 VBC8 VBC12 BC14{ BC9 Fi[5] Fp FC7 FU15{ m Fp Fi Fp FD FD} Fc[9] Fi FL[2]} VBC6 Fi[6] FC7} vd FL FL:0 FL Fp} BC13 Fp Fi Fp FC16{}}


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

static void Test_S19258C1()
{
  extern Class_Descriptor cd_S19258C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1794,3621)];
    init_test(&cd_S19258C1, buf);
    S19258C1 *dp, &lv = *(dp=new (buf) S19258C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(28688,14480), "sizeof(S19258C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19258C1)");
    /*is_ambiguous_... S19258C1::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*), ABISELECT(944,516), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C2 */ AMB_check_base_class_offset(lv, (S19258C2*), ABISELECT(944,516), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*), ABISELECT(944,516), "S19258C1");
    check_base_class_offset(lv, (S19258C2*)(S19258C8*)(S19258C5*), ABISELECT(944,516), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*)(S19258C12*)(S19258C11*), ABISELECT(944,516), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C8 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C8*), ABISELECT(944,516), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C6*)(S19258C12*), ABISELECT(944,516), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C7 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*), ABISELECT(9952,5044), "S19258C1");
    check_base_class_offset(lv, (S19258C3*)(S19258C4*), ABISELECT(9952,5044), "S19258C1");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C8*)(S19258C5*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C12*)(S19258C11*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C12*)(S19258C11*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C13*)(S19258C11*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C8 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C12*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C12*), ABISELECT(9952,5044), "S19258C1");
    check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C14*)(S19258C13*)(S19258C11*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C13*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C7*)(S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(9952,5044), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*), ABISELECT(9920,5032), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*)(S19258C12*)(S19258C11*), ABISELECT(9920,5032), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C6*)(S19258C12*), ABISELECT(9920,5032), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*), ABISELECT(10128,5132), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C12*)(S19258C11*), ABISELECT(10128,5132), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*)(S19258C12*)(S19258C11*), ABISELECT(10128,5132), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C12*), ABISELECT(10128,5132), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C4*)(S19258C6*)(S19258C12*), ABISELECT(10128,5132), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*), ABISELECT(2480,1304), "S19258C1");
    check_base_class_offset(lv, (S19258C6*)(S19258C5*), ABISELECT(2480,1304), "S19258C1");
    /*is_ambiguous_... S19258C13::S19258C6 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C13*)(S19258C11*), ABISELECT(2480,1304), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C13*), ABISELECT(2480,1304), "S19258C1");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C8*)(S19258C5*), ABISELECT(1840,964), "S19258C1");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C8*)(S19258C5*), ABISELECT(2008,1052), "S19258C1");
    check_base_class_offset(lv, (S19258C9*)(S19258C8*)(S19258C5*), ABISELECT(1840,964), "S19258C1");
    check_base_class_offset(lv, (S4224C43_nt*)(S19258C8*)(S19258C5*), ABISELECT(10320,5228), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C8 */ AMB_check_base_class_offset(lv, (S4224C43_nt*)(S19258C8*), ABISELECT(10320,5228), "S19258C1");
    check_base_class_offset(lv, (S19258C8*)(S19258C5*), ABISELECT(1840,964), "S19258C1");
    check_base_class_offset(lv, (S19258C5*), ABISELECT(1840,964), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*)(S19258C12*)(S19258C11*), ABISELECT(10336,5232), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C12*)(S19258C11*), ABISELECT(10336,5232), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C12*)(S19258C11*), ABISELECT(17776,8960), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*)(S19258C12*)(S19258C11*), ABISELECT(17808,8972), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C12*)(S19258C11*), ABISELECT(17808,8972), "S19258C1");
    /*is_ambiguous_... S19258C11::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C12*)(S19258C11*), ABISELECT(10336,5232), "S19258C1");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C13*)(S19258C11*), ABISELECT(18720,9428), "S19258C1");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C13*)(S19258C11*), ABISELECT(18888,9516), "S19258C1");
    /*is_ambiguous_... S19258C13::S19258C9 */ AMB_check_base_class_offset(lv, (S19258C9*)(S19258C13*)(S19258C11*), ABISELECT(18720,9428), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C8 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C8*), ABISELECT(19664,9948), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C8 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C8*), ABISELECT(19832,10036), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C8 */ AMB_check_base_class_offset(lv, (S19258C9*)(S19258C8*), ABISELECT(19664,9948), "S19258C1");
    check_base_class_offset(lv, (S19258C8*)(S19258C13*)(S19258C11*), ABISELECT(19664,9948), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C8*)(S19258C13*), ABISELECT(19664,9948), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C6*)(S19258C12*), ABISELECT(20304,10284), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C6*)(S19258C12*), ABISELECT(20304,10284), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C12*), ABISELECT(27744,14012), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C2*)(S19258C12*), ABISELECT(27776,14024), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C12 */ AMB_check_base_class_offset(lv, (S19258C2*)(S19258C12*), ABISELECT(27776,14024), "S19258C1");
    check_base_class_offset(lv, (S19258C12*)(S19258C13*)(S19258C11*), ABISELECT(20304,10284), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C12*)(S19258C13*), ABISELECT(20304,10284), "S19258C1");
    /*is_ambiguous_... S19258C9::S19258C3 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C14*)(S19258C13*)(S19258C11*), ABISELECT(18912,9532), "S19258C1");
    check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C14*)(S19258C13*)(S19258C11*), ABISELECT(19080,9620), "S19258C1");
    check_base_class_offset(lv, (S19258C9*)(S19258C14*)(S19258C13*)(S19258C11*), ABISELECT(18912,9532), "S19258C1");
    check_base_class_offset(lv, (S19258C14*)(S19258C13*)(S19258C11*), ABISELECT(18912,9532), "S19258C1");
    check_base_class_offset(lv, (S19258C13*)(S19258C11*), ABISELECT(18720,9428), "S19258C1");
    check_base_class_offset(lv, (S19258C11*), ABISELECT(10336,5232), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C13*), 0, "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C13*), ABISELECT(168,88), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C9*)(S19258C13*), 0, "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C3*)(S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(192,104), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C7*)(S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(360,192), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C9*)(S19258C14*)(S19258C13*), ABISELECT(192,104), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C14*)(S19258C13*), ABISELECT(192,104), "S19258C1");
    /*is_ambiguous_... S19258C1::S19258C13 */ AMB_check_base_class_offset(lv, (S19258C13*), 0, "S19258C1");
    check_field_offset(lv, s19258c1f0, ABISELECT(912,500), "S19258C1.s19258c1f0");
    check_field_offset(lv, s19258c1f1, ABISELECT(920,504), "S19258C1.s19258c1f1");
    check_field_offset(lv, s19258c1f2, ABISELECT(928,508), "S19258C1.s19258c1f2");
    check_field_offset(lv, s19258c1f3, ABISELECT(936,512), "S19258C1.s19258c1f3");
    test_class_info(&lv, &cd_S19258C1);
    dp->~S19258C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19258C1(Test_S19258C1, "S19258C1", ABISELECT(28688,14480));

#else // __cplusplus

extern void _ZN8S19258C1C1Ev();
extern void _ZN8S19258C1D1Ev();
Name_Map name_map_S19258C1[] = {
  NSPAIR(_ZN8S19258C1C1Ev),
  NSPAIR(_ZN8S19258C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C4;
extern VTBL_ENTRY _ZTI8S19258C4[];
extern  VTBL_ENTRY _ZTV8S19258C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C4[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S19258C8;
extern VTBL_ENTRY _ZTI8S19258C8[];
extern  VTBL_ENTRY _ZTV8S19258C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C8[];
extern Class_Descriptor cd_S19258C5;
extern VTBL_ENTRY _ZTI8S19258C5[];
extern  VTBL_ENTRY _ZTV8S19258C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C5[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C12;
extern VTBL_ENTRY _ZTI9S19258C12[];
extern  VTBL_ENTRY _ZTV9S19258C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C12[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C8;
extern VTBL_ENTRY _ZTI8S19258C8[];
extern  VTBL_ENTRY _ZTV8S19258C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C8[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C6;
extern VTBL_ENTRY _ZTI8S19258C6[];
extern  VTBL_ENTRY _ZTV8S19258C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C6[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C2;
extern VTBL_ENTRY _ZTI8S19258C2[];
extern  VTBL_ENTRY _ZTV8S19258C2[];
extern Class_Descriptor cd_S19258C12;
extern VTBL_ENTRY _ZTI9S19258C12[];
extern  VTBL_ENTRY _ZTV9S19258C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C12[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C14;
extern VTBL_ENTRY _ZTI9S19258C14[];
extern  VTBL_ENTRY _ZTV9S19258C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C14[];
extern Class_Descriptor cd_S19258C13;
extern VTBL_ENTRY _ZTI9S19258C13[];
extern  VTBL_ENTRY _ZTV9S19258C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C13[];
extern Class_Descriptor cd_S19258C11;
extern VTBL_ENTRY _ZTI9S19258C11[];
extern  VTBL_ENTRY _ZTV9S19258C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C11[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C3;
extern VTBL_ENTRY _ZTI8S19258C3[];
extern  VTBL_ENTRY _ZTV8S19258C3[];
extern Class_Descriptor cd_S19258C7;
extern VTBL_ENTRY _ZTI8S19258C7[];
extern  VTBL_ENTRY _ZTV8S19258C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C7[];
extern Class_Descriptor cd_S19258C9;
extern VTBL_ENTRY _ZTI8S19258C9[];
extern  VTBL_ENTRY _ZTV8S19258C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C9[];
extern Class_Descriptor cd_S19258C14;
extern VTBL_ENTRY _ZTI9S19258C14[];
extern  VTBL_ENTRY _ZTV9S19258C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C14[];
extern Class_Descriptor cd_S19258C13;
extern VTBL_ENTRY _ZTI9S19258C13[];
extern  VTBL_ENTRY _ZTV9S19258C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19258C13[];
static Base_Class bases_S19258C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19258C3,    ABISELECT(944,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
    1, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(944,516), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    ABISELECT(9952,5044), //bcp->offset
    75, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19258C7,    ABISELECT(9920,5032), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C4,    ABISELECT(10128,5132), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(2480,1304), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C6,    ABISELECT(2480,1304), //bcp->offset
    59, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(1840,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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(2008,1052), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(1840,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4224C43_nt,    ABISELECT(10320,5228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19258C8,    ABISELECT(1840,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19258C5,    ABISELECT(1840,964), //bcp->offset
    35, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    ABISELECT(10336,5232), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S19258C6,    ABISELECT(10336,5232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(17776,8960), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(17808,8972), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19258C2,    ABISELECT(17808,8972), //bcp->offset
    108, //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
    27, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19258C12,    ABISELECT(10336,5232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(18720,9428), //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(18888,9516), //bcp->offset
    127, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(18720,9428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(19664,9948), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(19832,10036), //bcp->offset
    152, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(19664,9948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19258C8,    ABISELECT(19664,9948), //bcp->offset
    138, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(20304,10284), //bcp->offset
    -1, //bcp->virtual_function_table_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
    27, //immediately_derived
  0, 0},
  {&cd_S19258C6,    ABISELECT(20304,10284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(27744,14012), //bcp->offset
    169, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19258C3,    ABISELECT(27776,14024), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S19258C2,    ABISELECT(27776,14024), //bcp->offset
    172, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19258C12,    ABISELECT(20304,10284), //bcp->offset
    155, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19258C3,    ABISELECT(18912,9532), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(19080,9620), //bcp->offset
    135, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(18912,9532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19258C14,    ABISELECT(18912,9532), //bcp->offset
    130, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19258C13,    ABISELECT(18720,9428), //bcp->offset
    113, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19258C11,    ABISELECT(10336,5232), //bcp->offset
    87, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19258C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(168,88), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19258C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19258C3,    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
    41, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19258C7,    ABISELECT(360,192), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19258C9,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19258C14,    ABISELECT(192,104), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19258C13,    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
    45, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19258C1[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C1D1Ev();
extern void _ZN8S19258C1D0Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n88_N8S19258C1D1Ev,_ZTv0_n44_N8S19258C1D1Ev)();
extern void ABISELECT(_ZThn1840_N8S19258C1D1Ev,_ZThn964_N8S19258C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19258C1D0Ev,_ZTv0_n44_N8S19258C1D0Ev)();
extern void ABISELECT(_ZThn1840_N8S19258C1D0Ev,_ZThn964_N8S19258C1D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C52v5Ev();
extern void _ZN8S19258C52v6Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19258C1D1Ev,_ZTv0_n36_N8S19258C1D1Ev)();
extern void ABISELECT(_ZThn2480_N8S19258C1D1Ev,_ZThn1304_N8S19258C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19258C1D0Ev,_ZTv0_n36_N8S19258C1D0Ev)();
extern void ABISELECT(_ZThn2480_N8S19258C1D0Ev,_ZThn1304_N8S19258C1D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19258C1D1Ev,_ZTv0_n16_N8S19258C1D1Ev)();
extern void ABISELECT(_ZThn10128_N8S19258C1D1Ev,_ZThn5132_N8S19258C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C1D0Ev,_ZTv0_n16_N8S19258C1D0Ev)();
extern void ABISELECT(_ZThn10128_N8S19258C1D0Ev,_ZThn5132_N8S19258C1D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n104_N8S19258C1D1Ev,_ZTv0_n52_N8S19258C1D1Ev)();
extern void ABISELECT(_ZThn10336_N8S19258C1D1Ev,_ZThn5232_N8S19258C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19258C1D0Ev,_ZTv0_n52_N8S19258C1D0Ev)();
extern void ABISELECT(_ZThn10336_N8S19258C1D0Ev,_ZThn5232_N8S19258C1D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTvn8384_n104_N8S19258C1D1Ev,_ZTvn4196_n52_N8S19258C1D1Ev)();
extern void ABISELECT(_ZTvn8384_n104_N8S19258C1D0Ev,_ZTvn4196_n52_N8S19258C1D0Ev)();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19258C1D1Ev,_ZTv0_n32_N8S19258C1D1Ev)();
extern void ABISELECT(_ZThn19664_N8S19258C1D1Ev,_ZThn9948_N8S19258C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19258C1D0Ev,_ZTv0_n32_N8S19258C1D0Ev)();
extern void ABISELECT(_ZThn19664_N8S19258C1D0Ev,_ZThn9948_N8S19258C1D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19258C1D1Ev,_ZTv0_n36_N8S19258C1D1Ev)();
extern void ABISELECT(_ZThn20304_N8S19258C1D1Ev,_ZThn10284_N8S19258C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19258C1D0Ev,_ZTv0_n36_N8S19258C1D0Ev)();
extern void ABISELECT(_ZThn20304_N8S19258C1D0Ev,_ZThn10284_N8S19258C1D0Ev)() __attribute__((weak));
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY vtc_S19258C1[] = {
  ABISELECT(10336,5232),
  ABISELECT(1840,964),
  ABISELECT(2480,1304),
  ABISELECT(9920,5032),
  ABISELECT(10128,5132),
  ABISELECT(20304,10284),
  ABISELECT(944,516),
  ABISELECT(10320,5228),
  ABISELECT(19664,9948),
  ABISELECT(9952,5044),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C1D0Ev,
  ABISELECT(9784,4956),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  ABISELECT(9760,4940),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(9592,4852),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  0,
  0,
  0,
  ABISELECT(-944,-516),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  0,
  0,
  0,
  ABISELECT(-1840,-964),
  0,
  0,
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(-896,-448),
  ABISELECT(8480,4264),
  ABISELECT(8112,4080),
  ABISELECT(-1840,-964),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19258C1D1Ev,_ZTv0_n44_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19258C1D0Ev,_ZTv0_n44_N8S19258C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19258C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19258C52v6Ev,
  ABISELECT(7944,3992),
  ABISELECT(-2008,-1052),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  ABISELECT(-2480,-1304),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-2480,-1304),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C1D1Ev,_ZTv0_n36_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C1D0Ev,_ZTv0_n36_N8S19258C1D0Ev),
  ABISELECT(32,12),
  ABISELECT(-9920,-5032),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  0,
  0,
  ABISELECT(-9952,-5044),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(-10128,-5132),
  ABISELECT(-176,-88),
  ABISELECT(-10128,-5132),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C1D1Ev,_ZTv0_n16_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C1D0Ev,_ZTv0_n16_N8S19258C1D0Ev),
  ABISELECT(7472,3740),
  ABISELECT(-10336,-5232),
  0,
  0,
  ABISELECT(-7856,-3928),
  ABISELECT(9968,5052),
  ABISELECT(-16,-4),
  ABISELECT(9328,4716),
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  ABISELECT(-10336,-5232),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19258C1D1Ev,_ZTv0_n52_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19258C1D0Ev,_ZTv0_n52_N8S19258C1D0Ev),
  ABISELECT(-7824,-3916),
  ABISELECT(-17776,-8960),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  ABISELECT(-17808,-8972),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
  ABISELECT(-16240,-8124),
  ABISELECT(-8800,-4396),
  ABISELECT(-8592,-4296),
  ABISELECT(1584,856),
  ABISELECT(-17776,-8912),
  ABISELECT(-8400,-4200),
  ABISELECT(944,520),
  ABISELECT(-8768,-4384),
  ABISELECT(-18720,-9428),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8384_n104_N8S19258C1D1Ev,_ZTvn4196_n52_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8384_n104_N8S19258C1D0Ev,_ZTvn4196_n52_N8S19258C1D0Ev),
  ABISELECT(-8936,-4472),
  ABISELECT(-18888,-9516),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  ABISELECT(-8960,-4488),
  ABISELECT(-18912,-9532),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  ABISELECT(-9128,-4576),
  ABISELECT(-19080,-9620),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  0,
  ABISELECT(-19664,-9948),
  0,
  0,
  ABISELECT(-18720,-9432),
  ABISELECT(-9344,-4720),
  ABISELECT(-9712,-4904),
  ABISELECT(-19664,-9948),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19258C1D1Ev,_ZTv0_n32_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19258C1D0Ev,_ZTv0_n32_N8S19258C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  ABISELECT(-9880,-4992),
  ABISELECT(-19832,-10036),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  ABISELECT(7472,3740),
  ABISELECT(-20304,-10284),
  0,
  0,
  ABISELECT(-19360,-9768),
  ABISELECT(-10176,-5152),
  ABISELECT(-10352,-5240),
  ABISELECT(-10384,-5252),
  ABISELECT(-20304,-10284),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C1D1Ev,_ZTv0_n36_N8S19258C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C1D0Ev,_ZTv0_n36_N8S19258C1D0Ev),
  ABISELECT(-17792,-8968),
  ABISELECT(-27744,-14012),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  ABISELECT(-27776,-14024),
  (VTBL_ENTRY)&(_ZTI8S19258C1[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S19258C1[];
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C13D1Ev();
extern void _ZN9S19258C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C13__A1__8S19258C1[] = {
  ABISELECT(2480,1304),
  ABISELECT(9920,5032),
  ABISELECT(10128,5132),
  ABISELECT(20304,10284),
  ABISELECT(944,516),
  ABISELECT(10320,5228),
  ABISELECT(19664,9948),
  ABISELECT(9952,5044),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C13__A4__8S19258C1[] = {
  ABISELECT(9952,5044),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C13__A7__8S19258C1[] = {
  ABISELECT(9784,4956),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C13__A7__8S19258C1[] = {
  0,
  0,
  ABISELECT(-9784,-4956),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C13__A4__8S19258C1[] = {
  ABISELECT(9784,4956),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C13__A4__8S19258C1[] = {
  0,
  0,
  ABISELECT(-9952,-5044),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C149S19258C13__A1__8S19258C1[] = {
  ABISELECT(9760,4940),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C149S19258C13__A5__8S19258C1[] = {
  ABISELECT(9760,4940),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C149S19258C13__A8__8S19258C1[] = {
  ABISELECT(9592,4852),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C149S19258C13__A8__8S19258C1[] = {
  0,
  0,
  ABISELECT(-9592,-4852),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C149S19258C13__A5__8S19258C1[] = {
  ABISELECT(9592,4852),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C149S19258C13__A5__8S19258C1[] = {
  0,
  0,
  ABISELECT(-9760,-4940),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C149S19258C13__A1__8S19258C1[] = {
  ABISELECT(9592,4852),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C149S19258C13__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(-9760,-4940),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(9784,4956),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C13__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(-9952,-5044),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn19664_N9S19258C13D1Ev,_ZThn9948_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn19664_N9S19258C13D0Ev,_ZThn9948_N9S19258C13D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__9S19258C13__A1__8S19258C1[] = {
  0,
  ABISELECT(-19664,-9948),
  0,
  0,
  ABISELECT(-18720,-9432),
  ABISELECT(-9344,-4720),
  ABISELECT(-9712,-4904),
  ABISELECT(-19664,-9948),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(-9880,-4992),
  ABISELECT(-19832,-10036),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C13__A1__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(-944,-516),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn20304_N9S19258C13D1Ev,_ZThn10284_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn20304_N9S19258C13D0Ev,_ZThn10284_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19258C12__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(7472,3740),
  ABISELECT(-20304,-10284),
  0,
  0,
  ABISELECT(-19360,-9768),
  ABISELECT(-10176,-5152),
  ABISELECT(-10352,-5240),
  ABISELECT(-10384,-5252),
  ABISELECT(-20304,-10284),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn10128_N9S19258C13D1Ev,_ZThn5132_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn10128_N9S19258C13D0Ev,_ZThn5132_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(-10128,-5132),
  ABISELECT(-176,-88),
  ABISELECT(-10128,-5132),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A2__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(-9920,-5032),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A3__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(-17792,-8968),
  ABISELECT(-27744,-14012),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C29S19258C12__A1__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(-27776,-14024),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C14__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(9760,4940),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(9592,4852),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn2480_N9S19258C13D1Ev,_ZThn1304_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn2480_N9S19258C13D0Ev,_ZThn1304_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C6__A1__9S19258C13__A1__8S19258C1[] = {
  ABISELECT(-2480,-1304),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-2480,-1304),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C5D1Ev();
extern void _ZN8S19258C5D0Ev();
extern void _ZN8S19258C82v4Ev();
extern void _ZN8S19258C52v5Ev();
extern void _ZN8S19258C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C5__8S19258C1[] = {
  ABISELECT(8288,4168),
  ABISELECT(8080,4068),
  ABISELECT(640,340),
  ABISELECT(-896,-448),
  ABISELECT(8480,4264),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19258C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19258C52v6Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C8D1Ev();
extern void _ZN8S19258C8D0Ev();
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C88S19258C5__8S19258C1[] = {
  ABISELECT(-896,-448),
  ABISELECT(8480,4264),
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C98S19258C88S19258C5__8S19258C1[] = {
  ABISELECT(8112,4080),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C88S19258C5__A1__8S19258C1[] = {
  ABISELECT(7944,3992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C98S19258C88S19258C5__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(-7944,-3992),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C98S19258C88S19258C5__8S19258C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C98S19258C88S19258C5__8S19258C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__8S19258C88S19258C5__8S19258C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C88S19258C5__8S19258C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C88S19258C5__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19258C5D1Ev,_ZTv0_n36_N8S19258C5D1Ev)();
extern void ABISELECT(_ZThn640_N8S19258C5D1Ev,_ZThn340_N8S19258C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19258C5D0Ev,_ZTv0_n36_N8S19258C5D0Ev)();
extern void ABISELECT(_ZThn640_N8S19258C5D0Ev,_ZThn340_N8S19258C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C6__8S19258C5__8S19258C1[] = {
  ABISELECT(-640,-340),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C5D1Ev,_ZTv0_n36_N8S19258C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19258C5D0Ev,_ZTv0_n36_N8S19258C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C5__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(-8080,-4068),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C5__8S19258C1[] = {
  0,
  0,
  ABISELECT(-8112,-4080),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C5D1Ev,_ZTv0_n16_N8S19258C5D1Ev)();
extern void ABISELECT(_ZThn8288_N8S19258C5D1Ev,_ZThn4168_N8S19258C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C5D0Ev,_ZTv0_n16_N8S19258C5D0Ev)();
extern void ABISELECT(_ZThn8288_N8S19258C5D0Ev,_ZThn4168_N8S19258C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C5__8S19258C1[] = {
  ABISELECT(-8288,-4168),
  ABISELECT(-176,-88),
  ABISELECT(-8288,-4168),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C5D1Ev,_ZTv0_n16_N8S19258C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C5D0Ev,_ZTv0_n16_N8S19258C5D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C5__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(896,448),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A1__8S19258C5__8S19258C1[] = {
  ABISELECT(7944,3992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C5[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C6__8S19258C1[] = {
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C6__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C6__8S19258C1[] = {
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZThn7648_N8S19258C6D1Ev,_ZThn3828_N8S19258C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
extern void ABISELECT(_ZThn7648_N8S19258C6D0Ev,_ZThn3828_N8S19258C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C6__8S19258C1[] = {
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C6__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(1536,788),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C1[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C7__8S19258C1[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C4D1Ev();
extern void _ZN8S19258C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C4D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C4__8S19258C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S19258C4[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C11D1Ev();
extern void _ZN9S19258C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C11__8S19258C1[] = {
  ABISELECT(-7856,-3928),
  ABISELECT(9968,5052),
  ABISELECT(-16,-4),
  ABISELECT(9328,4716),
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C11D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C12D1Ev();
extern void _ZN9S19258C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C129S19258C11__8S19258C1[] = {
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C69S19258C129S19258C11__A1__8S19258C1[] = {
  ABISELECT(-9392,-4716),
  ABISELECT(-208,-100),
  ABISELECT(-384,-188),
  ABISELECT(-416,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C69S19258C129S19258C11__A1__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(416,200),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C69S19258C129S19258C11__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(384,188),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C69S19258C129S19258C11__A1__8S19258C1[] = {
  ABISELECT(208,100),
  ABISELECT(-176,-88),
  ABISELECT(208,100),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C69S19258C129S19258C11__A1__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(9392,4716),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C129S19258C11__A2__8S19258C1[] = {
  ABISELECT(-7824,-3916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C79S19258C129S19258C11__A2__8S19258C1[] = {
  0,
  0,
  ABISELECT(7824,3916),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__9S19258C129S19258C11__8S19258C1[] = {
  0,
  0,
  ABISELECT(384,188),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C129S19258C11__8S19258C1[] = {
  ABISELECT(208,100),
  ABISELECT(-176,-88),
  ABISELECT(208,100),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C129S19258C11__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(416,200),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C129S19258C11__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(9392,4716),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A__9S19258C129S19258C11__8S19258C1[] = {
  ABISELECT(-7824,-3916),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C13D1Ev();
extern void _ZN9S19258C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-16240,-8124),
  ABISELECT(-8800,-4396),
  ABISELECT(-8592,-4296),
  ABISELECT(1584,856),
  ABISELECT(-17776,-8912),
  ABISELECT(-8400,-4200),
  ABISELECT(944,520),
  ABISELECT(-8768,-4384),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C13D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C139S19258C11__A1__8S19258C1[] = {
  ABISELECT(-8768,-4384),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C139S19258C11__A3__8S19258C1[] = {
  ABISELECT(-8936,-4472),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C139S19258C11__A3__8S19258C1[] = {
  0,
  0,
  ABISELECT(8936,4472),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C139S19258C11__A1__8S19258C1[] = {
  ABISELECT(-8936,-4472),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C139S19258C11__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(8768,4384),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C149S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-8960,-4488),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C99S19258C149S19258C139S19258C11__A3__8S19258C1[] = {
  ABISELECT(-8960,-4488),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C149S19258C139S19258C11__A6__8S19258C1[] = {
  ABISELECT(-9128,-4576),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C99S19258C149S19258C139S19258C11__A6__8S19258C1[] = {
  0,
  0,
  ABISELECT(9128,4576),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C99S19258C149S19258C139S19258C11__A3__8S19258C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C99S19258C149S19258C139S19258C11__A3__8S19258C1[] = {
  0,
  0,
  ABISELECT(8960,4488),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C149S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C149S19258C139S19258C11__8S19258C1[] = {
  0,
  0,
  ABISELECT(8960,4488),
  (VTBL_ENTRY)&(_ZTI9S19258C14[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-8936,-4472),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__9S19258C139S19258C11__8S19258C1[] = {
  0,
  0,
  ABISELECT(8768,4384),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn944_N9S19258C13D1Ev,_ZThn520_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn944_N9S19258C13D0Ev,_ZThn520_N9S19258C13D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__9S19258C139S19258C11__8S19258C1[] = {
  0,
  ABISELECT(-944,-520),
  0,
  0,
  ABISELECT(-18720,-9432),
  ABISELECT(-9344,-4720),
  ABISELECT(-9712,-4904),
  ABISELECT(-944,-520),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-9880,-4992),
  ABISELECT(-1112,-608),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C139S19258C11__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(17776,8912),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZThn1584_N9S19258C13D1Ev,_ZThn856_N9S19258C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
extern void ABISELECT(_ZThn1584_N9S19258C13D0Ev,_ZThn856_N9S19258C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19258C12__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(7472,3740),
  ABISELECT(-1584,-856),
  0,
  0,
  ABISELECT(-19360,-9768),
  ABISELECT(-10176,-5152),
  ABISELECT(-10352,-5240),
  ABISELECT(-10384,-5252),
  ABISELECT(-1584,-856),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(8592,4296),
  ABISELECT(-176,-88),
  ABISELECT(8592,4296),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A2__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(8800,4396),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A3__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-17792,-8968),
  ABISELECT(-9024,-4584),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C29S19258C12__A1__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-9056,-4596),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C14__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-8960,-4488),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C6__A1__9S19258C139S19258C11__8S19258C1[] = {
  ABISELECT(16240,8124),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(16240,8124),
  (VTBL_ENTRY)&(_ZTI9S19258C13[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__9S19258C11__8S19258C1[] = {
  0,
  0,
  ABISELECT(384,188),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19258C11D1Ev,_ZTv0_n16_N9S19258C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19258C11D0Ev,_ZTv0_n16_N9S19258C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C11__8S19258C1[] = {
  ABISELECT(208,100),
  ABISELECT(-176,-88),
  ABISELECT(208,100),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C11D1Ev,_ZTv0_n16_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C11D0Ev,_ZTv0_n16_N9S19258C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C11__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(416,200),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C11__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(9392,4716),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A1__9S19258C11__8S19258C1[] = {
  ABISELECT(-7824,-3916),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZThn8384_N9S19258C11D1Ev,_ZThn4196_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn8384_N9S19258C11D0Ev,_ZThn4196_N9S19258C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19258C13__9S19258C11__8S19258C1[] = {
  ABISELECT(-16240,-8124),
  ABISELECT(-8800,-4396),
  ABISELECT(-8592,-4296),
  ABISELECT(1584,856),
  ABISELECT(-17776,-8912),
  ABISELECT(-8400,-4200),
  ABISELECT(944,520),
  ABISELECT(-8768,-4384),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19258C11D1Ev,_ZThn4196_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8384_N9S19258C11D0Ev,_ZThn4196_N9S19258C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C13__A2__9S19258C11__8S19258C1[] = {
  ABISELECT(-8936,-4472),
  ABISELECT(-8552,-4284),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19258C11D1Ev,_ZTv0_n32_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn9328_N9S19258C11D1Ev,_ZThn4716_N9S19258C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19258C11D0Ev,_ZTv0_n32_N9S19258C11D0Ev)();
extern void ABISELECT(_ZThn9328_N9S19258C11D0Ev,_ZThn4716_N9S19258C11D0Ev)() __attribute__((weak));
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__9S19258C11__8S19258C1[] = {
  0,
  ABISELECT(-9328,-4716),
  0,
  0,
  ABISELECT(-18720,-9432),
  ABISELECT(-9344,-4720),
  ABISELECT(-9712,-4904),
  ABISELECT(-9328,-4716),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C11D1Ev,_ZTv0_n32_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19258C11D0Ev,_ZTv0_n32_N9S19258C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A3__9S19258C11__8S19258C1[] = {
  ABISELECT(-9880,-4992),
  ABISELECT(-9496,-4804),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19258C11D1Ev,_ZThn5052_N9S19258C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19258C11D0Ev,_ZThn5052_N9S19258C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19258C12__A1__9S19258C11__8S19258C1[] = {
  ABISELECT(7472,3740),
  ABISELECT(-9968,-5052),
  0,
  0,
  ABISELECT(-19360,-9768),
  ABISELECT(-10176,-5152),
  ABISELECT(-10352,-5240),
  ABISELECT(-10384,-5252),
  ABISELECT(-9968,-5052),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A4__9S19258C11__8S19258C1[] = {
  ABISELECT(-17792,-8968),
  ABISELECT(-17408,-8780),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C29S19258C12__A2__9S19258C11__8S19258C1[] = {
  ABISELECT(-17440,-8792),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C149S19258C13__9S19258C11__8S19258C1[] = {
  ABISELECT(-8960,-4488),
  ABISELECT(-8576,-4300),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C99S19258C149S19258C13__A5__9S19258C11__8S19258C1[] = {
  ABISELECT(-9128,-4576),
  ABISELECT(-8744,-4388),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C6__A2__9S19258C11__8S19258C1[] = {
  ABISELECT(7856,3928),
  0,
  0,
  ABISELECT(-1536,-788),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  ABISELECT(7856,3928),
  (VTBL_ENTRY)&(_ZTI9S19258C11[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C8D1Ev();
extern void _ZN8S19258C8D0Ev();
extern void _ZN8S19258C82v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C8__A1__8S19258C1[] = {
  ABISELECT(-18720,-9432),
  ABISELECT(-9344,-4720),
  ABISELECT(-9712,-4904),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19258C82v4Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C98S19258C8__A2__8S19258C1[] = {
  ABISELECT(-9712,-4904),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C98S19258C8__A4__8S19258C1[] = {
  ABISELECT(-9880,-4992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A4__8S19258C1[] = {
  0,
  0,
  ABISELECT(9880,4992),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C98S19258C8__A2__8S19258C1[] = {
  ABISELECT(-9880,-4992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C98S19258C8__A2__8S19258C1[] = {
  0,
  0,
  ABISELECT(9712,4904),
  (VTBL_ENTRY)&(_ZTI8S19258C9[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C78S19258C9__8S19258C8__A1__8S19258C1[] = {
  ABISELECT(-9880,-4992),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__A1__8S19258C8__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(9712,4904),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C8__A1__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(18720,9432),
  (VTBL_ENTRY)&(_ZTI8S19258C8[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN9S19258C12D1Ev();
extern void _ZN9S19258C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19258C12__A1__8S19258C1[] = {
  ABISELECT(-19360,-9768),
  ABISELECT(-10176,-5152),
  ABISELECT(-10352,-5240),
  ABISELECT(-10384,-5252),
  0,
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19258C12D0Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C6D1Ev();
extern void _ZN8S19258C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C69S19258C12__A2__8S19258C1[] = {
  ABISELECT(-19360,-9768),
  ABISELECT(-10176,-5152),
  ABISELECT(-10352,-5240),
  ABISELECT(-10384,-5252),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19258C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__8S19258C69S19258C12__A2__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(10384,5252),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C69S19258C12__A2__8S19258C1[] = {
  0,
  0,
  ABISELECT(10352,5240),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__8S19258C69S19258C12__A2__8S19258C1[] = {
  ABISELECT(10176,5152),
  ABISELECT(-176,-88),
  ABISELECT(10176,5152),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__8S19258C69S19258C12__A2__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(19360,9768),
  (VTBL_ENTRY)&(_ZTI8S19258C6[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C79S19258C12__A5__8S19258C1[] = {
  ABISELECT(-17792,-8968),
  0,
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__8S19258C79S19258C12__A5__8S19258C1[] = {
  0,
  0,
  ABISELECT(17792,8968),
  (VTBL_ENTRY)&(_ZTI8S19258C7[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C3__9S19258C12__A1__8S19258C1[] = {
  0,
  0,
  ABISELECT(10352,5240),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19258C4__9S19258C12__A1__8S19258C1[] = {
  ABISELECT(10176,5152),
  ABISELECT(-176,-88),
  ABISELECT(10176,5152),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D1Ev,_ZTv0_n16_N9S19258C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19258C12D0Ev,_ZTv0_n16_N9S19258C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__9S19258C12__A1__8S19258C1[] = {
  ABISELECT(32,12),
  ABISELECT(10384,5252),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
extern void _ZN8S19258C32v1Ev();
extern void _ZN8S19258C32v2Ev();
extern void _ZN8S19258C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19258C2__9S19258C12__A1__8S19258C1[] = {
  0,
  0,
  0,
  ABISELECT(19360,9768),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
  (VTBL_ENTRY)&_ZN8S19258C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19258C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19258C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19258C7__A__9S19258C12__A1__8S19258C1[] = {
  ABISELECT(-17792,-8968),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI9S19258C12[0]),
};
static  VTT_ENTRY vtt_S19258C1[] = {
  {&(_ZTV8S19258C1[12]),  12,177},
  {&(_tg__ZTV9S19258C13__A1__8S19258C1[10]),  10,14},
  {&(_tg__ZTV8S19258C99S19258C13__A4__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C13__A7__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C13__A7__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C13__A4__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C13__A4__8S19258C1[4]),  4,6},
  {&(_tg__ZTV9S19258C149S19258C13__A1__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C99S19258C149S19258C13__A5__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C149S19258C13__A8__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C149S19258C13__A8__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C149S19258C13__A5__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C149S19258C13__A5__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C149S19258C13__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C149S19258C13__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C13__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C13__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C8__9S19258C13__A1__8S19258C1[9]),  9,14},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C13__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C13__A1__8S19258C1[5]),  5,8},
  {&(_tg__ZTV9S19258C12__9S19258C13__A1__8S19258C1[10]),  10,14},
  {&(_tg__ZTV8S19258C4__9S19258C13__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__A2__9S19258C13__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C79S19258C12__A3__9S19258C13__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C29S19258C12__A1__9S19258C13__A1__8S19258C1[2]),  2,5},
  {&(_tg__ZTV9S19258C14__9S19258C13__A1__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C13__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C6__A1__9S19258C13__A1__8S19258C1[9]),  9,13},
  {&(_ZTV8S19258C1[32]),  32,177},
  {&(_ZTV8S19258C1[49]),  49,177},
  {&(_ZTV8S19258C1[68]),  68,177},
  {&(_ZTV8S19258C1[75]),  75,177},
  {&(_ZTV8S19258C1[79]),  79,177},
  {&(_ZTV8S19258C1[85]),  85,177},
  {&(_ZTV8S19258C1[59]),  59,177},
  {&(_ZTV8S19258C1[101]),  101,177},
  {&(_ZTV8S19258C1[108]),  108,177},
  {&(_ZTV8S19258C1[110]),  110,177},
  {&(_ZTV8S19258C1[123]),  123,177},
  {&(_ZTV8S19258C1[130]),  130,177},
  {&(_ZTV8S19258C1[147]),  147,177},
  {&(_ZTV8S19258C1[155]),  155,177},
  {&(_ZTV8S19258C1[165]),  165,177},
  {&(_ZTV8S19258C1[172]),  172,177},
  {&(_ZTV8S19258C1[174]),  174,177},
  {&(_ZTV8S19258C1[133]),  133,177},
  {&(_ZTV8S19258C1[138]),  138,177},
  {&(_ZTV8S19258C1[19]),  19,177},
  {&(_ZTV8S19258C1[22]),  22,177},
  {&(_ZTV8S19258C1[27]),  27,177},
  {&(_tg__ZTV8S19258C5__8S19258C1[8]),  8,15},
  {&(_tg__ZTV8S19258C88S19258C5__8S19258C1[5]),  5,10},
  {&(_tg__ZTV8S19258C98S19258C88S19258C5__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C98S19258C88S19258C5__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C98S19258C88S19258C5__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C98S19258C88S19258C5__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C98S19258C88S19258C5__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__8S19258C88S19258C5__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C88S19258C5__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C88S19258C5__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C6__8S19258C5__8S19258C1[9]),  9,13},
  {&(_tg__ZTV8S19258C7__8S19258C5__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C5__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C5__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C5__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A1__8S19258C5__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C6__8S19258C1[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C6__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C6__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C6__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C6__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C7__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C7__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C3__8S19258C4__8S19258C1[4]),  4,6},
  {&(_tg__ZTV9S19258C11__8S19258C1[10]),  10,14},
  {&(_tg__ZTV9S19258C129S19258C11__8S19258C1[6]),  6,10},
  {&(_tg__ZTV8S19258C69S19258C129S19258C11__A1__8S19258C1[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C69S19258C129S19258C11__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C69S19258C129S19258C11__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C69S19258C129S19258C11__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C69S19258C129S19258C11__A1__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C79S19258C129S19258C11__A2__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C79S19258C129S19258C11__A2__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C3__9S19258C129S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__9S19258C129S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C129S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C129S19258C11__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C7__A__9S19258C129S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV9S19258C139S19258C11__8S19258C1[10]),  10,14},
  {&(_tg__ZTV8S19258C99S19258C139S19258C11__A1__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C139S19258C11__A3__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C139S19258C11__A3__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C139S19258C11__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C139S19258C11__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV9S19258C149S19258C139S19258C11__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C99S19258C149S19258C139S19258C11__A3__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C149S19258C139S19258C11__A6__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C99S19258C149S19258C139S19258C11__A6__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C99S19258C149S19258C139S19258C11__A3__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C99S19258C149S19258C139S19258C11__A3__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C149S19258C139S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C149S19258C139S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__9S19258C139S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__9S19258C139S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C8__9S19258C139S19258C11__8S19258C1[9]),  9,14},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A1__9S19258C139S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C139S19258C11__8S19258C1[5]),  5,8},
  {&(_tg__ZTV9S19258C12__9S19258C139S19258C11__8S19258C1[10]),  10,14},
  {&(_tg__ZTV8S19258C4__9S19258C139S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__A2__9S19258C139S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C79S19258C12__A3__9S19258C139S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C29S19258C12__A1__9S19258C139S19258C11__8S19258C1[2]),  2,5},
  {&(_tg__ZTV9S19258C14__9S19258C139S19258C11__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C14__A4__9S19258C139S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C6__A1__9S19258C139S19258C11__8S19258C1[9]),  9,13},
  {&(_tg__ZTV8S19258C3__9S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__9S19258C11__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C11__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C79S19258C12__A1__9S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV9S19258C13__9S19258C11__8S19258C1[10]),  10,14},
  {&(_tg__ZTV8S19258C78S19258C99S19258C13__A2__9S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C8__9S19258C11__8S19258C1[9]),  9,14},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A3__9S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV9S19258C12__A1__9S19258C11__8S19258C1[10]),  10,14},
  {&(_tg__ZTV8S19258C79S19258C12__A4__9S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C29S19258C12__A2__9S19258C11__8S19258C1[2]),  2,5},
  {&(_tg__ZTV9S19258C149S19258C13__9S19258C11__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C99S19258C149S19258C13__A5__9S19258C11__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C6__A2__9S19258C11__8S19258C1[9]),  9,13},
  {&(_tg__ZTV8S19258C8__A1__8S19258C1[5]),  5,10},
  {&(_tg__ZTV8S19258C98S19258C8__A2__8S19258C1[3]),  3,5},
  {&(_tg__ZTV8S19258C78S19258C98S19258C8__A4__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C78S19258C98S19258C8__A4__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__8S19258C98S19258C8__A2__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C98S19258C8__A2__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C78S19258C9__8S19258C8__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__A1__8S19258C8__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C8__A1__8S19258C1[5]),  5,8},
  {&(_tg__ZTV9S19258C12__A1__8S19258C1[6]),  6,10},
  {&(_tg__ZTV8S19258C69S19258C12__A2__8S19258C1[6]),  6,10},
  {&(_tg__ZTV8S19258C7__8S19258C69S19258C12__A2__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C69S19258C12__A2__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__8S19258C69S19258C12__A2__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C2__8S19258C69S19258C12__A2__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C79S19258C12__A5__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C3__8S19258C79S19258C12__A5__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C3__9S19258C12__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C4__9S19258C12__A1__8S19258C1[4]),  4,6},
  {&(_tg__ZTV8S19258C7__9S19258C12__A1__8S19258C1[3]),  3,3},
  {&(_tg__ZTV8S19258C2__9S19258C12__A1__8S19258C1[5]),  5,8},
  {&(_tg__ZTV8S19258C7__A__9S19258C12__A1__8S19258C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19258C1[];
extern  VTBL_ENTRY _ZTV8S19258C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19258C1[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C11D0Ev,_ZTv0_n36_N9S19258C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19258C11D0Ev,_ZThn5052_N9S19258C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C11D1Ev,_ZTv0_n36_N9S19258C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19258C11D1Ev,_ZThn5052_N9S19258C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C11D0Ev,_ZTv0_n32_N9S19258C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9328_N9S19258C11D0Ev,_ZThn4716_N9S19258C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C11D1Ev,_ZTv0_n32_N9S19258C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9328_N9S19258C11D1Ev,_ZThn4716_N9S19258C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D0Ev,_ZTv0_n16_N8S19258C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19258C6D0Ev,_ZThn3828_N8S19258C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C6D1Ev,_ZTv0_n16_N8S19258C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S19258C6D1Ev,_ZThn3828_N8S19258C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C5D0Ev,_ZTv0_n16_N8S19258C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19258C5D0Ev,_ZThn4168_N8S19258C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C5D1Ev,_ZTv0_n16_N8S19258C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8288_N8S19258C5D1Ev,_ZThn4168_N8S19258C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19258C5D0Ev,_ZTv0_n36_N8S19258C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19258C5D0Ev,_ZThn340_N8S19258C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19258C5D1Ev,_ZTv0_n36_N8S19258C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19258C5D1Ev,_ZThn340_N8S19258C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C13D0Ev,_ZTv0_n16_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N9S19258C13D0Ev,_ZThn5132_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19258C13D1Ev,_ZTv0_n16_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N9S19258C13D1Ev,_ZThn5132_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C13D0Ev,_ZTv0_n36_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N9S19258C13D0Ev,_ZThn856_N9S19258C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N9S19258C13D0Ev,_ZThn1304_N9S19258C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N9S19258C13D0Ev,_ZThn10284_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19258C13D1Ev,_ZTv0_n36_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N9S19258C13D1Ev,_ZThn856_N9S19258C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N9S19258C13D1Ev,_ZThn1304_N9S19258C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N9S19258C13D1Ev,_ZThn10284_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C13D0Ev,_ZTv0_n32_N9S19258C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N9S19258C13D0Ev,_ZThn520_N9S19258C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N9S19258C13D0Ev,_ZThn9948_N9S19258C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19258C13D1Ev,_ZTv0_n32_N9S19258C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N9S19258C13D1Ev,_ZThn520_N9S19258C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N9S19258C13D1Ev,_ZThn9948_N9S19258C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19258C1D0Ev,_ZTv0_n32_N8S19258C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N8S19258C1D0Ev,_ZThn9948_N8S19258C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19258C1D1Ev,_ZTv0_n32_N8S19258C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19664_N8S19258C1D1Ev,_ZThn9948_N8S19258C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19258C1D0Ev,_ZTv0_n52_N8S19258C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19258C1D0Ev,_ZThn5232_N8S19258C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19258C1D1Ev,_ZTv0_n52_N8S19258C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19258C1D1Ev,_ZThn5232_N8S19258C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C1D0Ev,_ZTv0_n16_N8S19258C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N8S19258C1D0Ev,_ZThn5132_N8S19258C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19258C1D1Ev,_ZTv0_n16_N8S19258C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10128_N8S19258C1D1Ev,_ZThn5132_N8S19258C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19258C1D0Ev,_ZTv0_n36_N8S19258C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N8S19258C1D0Ev,_ZThn10284_N8S19258C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N8S19258C1D0Ev,_ZThn1304_N8S19258C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19258C1D1Ev,_ZTv0_n36_N8S19258C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20304_N8S19258C1D1Ev,_ZThn10284_N8S19258C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2480_N8S19258C1D1Ev,_ZThn1304_N8S19258C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19258C1D0Ev,_ZTv0_n44_N8S19258C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1840_N8S19258C1D0Ev,_ZThn964_N8S19258C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19258C1D1Ev,_ZTv0_n44_N8S19258C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1840_N8S19258C1D1Ev,_ZThn964_N8S19258C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19258C1 = {  "S19258C1", // class name
  bases_S19258C1, 46,
  &(vtc_S19258C1[0]), // expected_vtbl_contents
  &(vtt_S19258C1[0]), // expected_vtt_contents
  ABISELECT(28688,14480), // object size
  NSPAIRA(_ZTI8S19258C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19258C1),177, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19258C1),153, //virtual table table var
  45, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19048C4  {
  virtual void  v11(); // _ZN8S19048C43v11Ev
  virtual void  v12(); // _ZN8S19048C43v12Ev
  ~S19048C4(); // tgen
  S19048C4(); // tgen
};
//SIG(-1 S19048C4) C1{ v1 v2}


void  S19048C4 ::v11(){vfunc_called(this, "_ZN8S19048C43v11Ev");}
void  S19048C4 ::v12(){vfunc_called(this, "_ZN8S19048C43v12Ev");}
S19048C4 ::~S19048C4(){ note_dtor("S19048C4", this);} // tgen
S19048C4 ::S19048C4(){ note_ctor("S19048C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19048C4C1Ev();
extern void _ZN8S19048C4D1Ev();
Name_Map name_map_S19048C4[] = {
  NSPAIR(_ZN8S19048C4C1Ev),
  NSPAIR(_ZN8S19048C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19048C4[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY vtc_S19048C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C4[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
Class_Descriptor cd_S19048C4 = {  "S19048C4", // class name
  0,0,//no base classes
  &(vtc_S19048C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19048C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19048C4),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  S19048C3  : S19048C4 {
  virtual void  v13(); // _ZN8S19048C33v13Ev
  virtual void  v14(); // _ZN8S19048C33v14Ev
  ~S19048C3(); // tgen
  S19048C3(); // tgen
};
//SIG(-1 S19048C3) C1{ BC2{ v3 v4} v1 v2}


void  S19048C3 ::v13(){vfunc_called(this, "_ZN8S19048C33v13Ev");}
void  S19048C3 ::v14(){vfunc_called(this, "_ZN8S19048C33v14Ev");}
S19048C3 ::~S19048C3(){ note_dtor("S19048C3", this);} // tgen
S19048C3 ::S19048C3(){ note_ctor("S19048C3", this);} // tgen

static void Test_S19048C3()
{
  extern Class_Descriptor cd_S19048C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19048C3, buf);
    S19048C3 *dp, &lv = *(dp=new (buf) S19048C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19048C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C3)");
    check_base_class_offset(lv, (S19048C4*), 0, "S19048C3");
    test_class_info(&lv, &cd_S19048C3);
    dp->~S19048C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C3(Test_S19048C3, "S19048C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19048C3C1Ev();
extern void _ZN8S19048C3D1Ev();
Name_Map name_map_S19048C3[] = {
  NSPAIR(_ZN8S19048C3C1Ev),
  NSPAIR(_ZN8S19048C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
static Base_Class bases_S19048C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19048C3[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY vtc_S19048C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C3[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
Class_Descriptor cd_S19048C3 = {  "S19048C3", // class name
  bases_S19048C3, 1,
  &(vtc_S19048C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19048C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19048C3),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  S19048C2  : S19048C3 , S19048C4 {
  __tsi64 s19048c2f0;
  virtual void  v15(); // _ZN8S19048C23v15Ev
  virtual void  v16(); // _ZN8S19048C23v16Ev
  virtual void  v17(); // _ZN8S19048C23v17Ev
  virtual void  v18(); // _ZN8S19048C23v18Ev
  ~S19048C2(); // tgen
  S19048C2(); // tgen
};
//SIG(-1 S19048C2) C1{ BC2{ BC3{ v5 v6} v7 v8} BC3 v1 v2 v3 v4 FL}


void  S19048C2 ::v15(){vfunc_called(this, "_ZN8S19048C23v15Ev");}
void  S19048C2 ::v16(){vfunc_called(this, "_ZN8S19048C23v16Ev");}
void  S19048C2 ::v17(){vfunc_called(this, "_ZN8S19048C23v17Ev");}
void  S19048C2 ::v18(){vfunc_called(this, "_ZN8S19048C23v18Ev");}
S19048C2 ::~S19048C2(){ note_dtor("S19048C2", this);} // tgen
S19048C2 ::S19048C2(){ note_ctor("S19048C2", this);} // tgen

static void Test_S19048C2()
{
  extern Class_Descriptor cd_S19048C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19048C2, buf);
    S19048C2 *dp, &lv = *(dp=new (buf) S19048C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19048C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C2)");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*), 0, "S19048C2");
    check_base_class_offset(lv, (S19048C3*), 0, "S19048C2");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*), ABISELECT(8,4), "S19048C2");
    check_field_offset(lv, s19048c2f0, ABISELECT(16,8), "S19048C2.s19048c2f0");
    test_class_info(&lv, &cd_S19048C2);
    dp->~S19048C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C2(Test_S19048C2, "S19048C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19048C2C1Ev();
extern void _ZN8S19048C2D1Ev();
Name_Map name_map_S19048C2[] = {
  NSPAIR(_ZN8S19048C2C1Ev),
  NSPAIR(_ZN8S19048C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
static Base_Class bases_S19048C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19048C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19048C4,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19048C2[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY vtc_S19048C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C2[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19048C2[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
Class_Descriptor cd_S19048C2 = {  "S19048C2", // class name
  bases_S19048C2, 3,
  &(vtc_S19048C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19048C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19048C2),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19048C7  {
  __tsi64 s19048c7f0[10];
  void *s19048c7f1;
  __tsi64 s19048c7f2;
  virtual void  v19(); // _ZN8S19048C73v19Ev
  virtual void  v20(); // _ZN8S19048C73v20Ev
  virtual void  v21(); // _ZN8S19048C73v21Ev
  virtual void  v22(); // _ZN8S19048C73v22Ev
  virtual void  v23(); // _ZN8S19048C73v23Ev
  virtual void  v24(); // _ZN8S19048C73v24Ev
  virtual void  v25(); // _ZN8S19048C73v25Ev
  ~S19048C7(); // tgen
  S19048C7(); // tgen
};
//SIG(-1 S19048C7) C1{ v1 v2 v3 v4 v5 v6 v7 FL[10] Fp FL}


void  S19048C7 ::v19(){vfunc_called(this, "_ZN8S19048C73v19Ev");}
void  S19048C7 ::v20(){vfunc_called(this, "_ZN8S19048C73v20Ev");}
void  S19048C7 ::v21(){vfunc_called(this, "_ZN8S19048C73v21Ev");}
void  S19048C7 ::v22(){vfunc_called(this, "_ZN8S19048C73v22Ev");}
void  S19048C7 ::v23(){vfunc_called(this, "_ZN8S19048C73v23Ev");}
void  S19048C7 ::v24(){vfunc_called(this, "_ZN8S19048C73v24Ev");}
void  S19048C7 ::v25(){vfunc_called(this, "_ZN8S19048C73v25Ev");}
S19048C7 ::~S19048C7(){ note_dtor("S19048C7", this);} // tgen
S19048C7 ::S19048C7(){ note_ctor("S19048C7", this);} // tgen

static void Test_S19048C7()
{
  extern Class_Descriptor cd_S19048C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,25)];
    init_test(&cd_S19048C7, buf);
    S19048C7 *dp, &lv = *(dp=new (buf) S19048C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,96), "sizeof(S19048C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C7)");
    check_field_offset(lv, s19048c7f0, ABISELECT(8,4), "S19048C7.s19048c7f0");
    check_field_offset(lv, s19048c7f1, ABISELECT(88,84), "S19048C7.s19048c7f1");
    check_field_offset(lv, s19048c7f2, ABISELECT(96,88), "S19048C7.s19048c7f2");
    test_class_info(&lv, &cd_S19048C7);
    dp->~S19048C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C7(Test_S19048C7, "S19048C7", ABISELECT(104,96));

#else // __cplusplus

extern void _ZN8S19048C7C1Ev();
extern void _ZN8S19048C7D1Ev();
Name_Map name_map_S19048C7[] = {
  NSPAIR(_ZN8S19048C7C1Ev),
  NSPAIR(_ZN8S19048C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19048C7[];
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY vtc_S19048C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C7[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
Class_Descriptor cd_S19048C7 = {  "S19048C7", // class name
  0,0,//no base classes
  &(vtc_S19048C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,96), // object size
  NSPAIRA(_ZTI8S19048C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19048C7),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  S19048C6  : S19048C4 , S19048C7 , virtual S19048C2 {
  void *s19048c6f0;
  virtual void  v26(); // _ZN8S19048C63v26Ev
  virtual void  v27(); // _ZN8S19048C63v27Ev
  ~S19048C6(); // tgen
  S19048C6(); // tgen
};
//SIG(-1 S19048C6) C1{ BC2{ v3 v4} BC3{ v5 v6 v7 v8 v9 v10 v11 FL[10] Fp FL} VBC4{ BC5{ BC2 v12 v13} BC2 v14 v15 v16 v17 FL} v1 v2 Fp}


void  S19048C6 ::v26(){vfunc_called(this, "_ZN8S19048C63v26Ev");}
void  S19048C6 ::v27(){vfunc_called(this, "_ZN8S19048C63v27Ev");}
S19048C6 ::~S19048C6(){ note_dtor("S19048C6", this);} // tgen
S19048C6 ::S19048C6(){ note_ctor("S19048C6", this);} // tgen

static void Test_S19048C6()
{
  extern Class_Descriptor cd_S19048C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,31)];
    init_test(&cd_S19048C6, buf);
    S19048C6 *dp, &lv = *(dp=new (buf) S19048C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,120), "sizeof(S19048C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C6)");
    /*is_ambiguous_... S19048C6::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*), 0, "S19048C6");
    check_base_class_offset(lv, (S19048C7*), ABISELECT(8,4), "S19048C6");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C2*), ABISELECT(120,104), "S19048C6");
    check_base_class_offset(lv, (S19048C3*)(S19048C2*), ABISELECT(120,104), "S19048C6");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C2*), ABISELECT(128,108), "S19048C6");
    check_base_class_offset(lv, (S19048C2*), ABISELECT(120,104), "S19048C6");
    check_field_offset(lv, s19048c6f0, ABISELECT(112,100), "S19048C6.s19048c6f0");
    test_class_info(&lv, &cd_S19048C6);
    dp->~S19048C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C6(Test_S19048C6, "S19048C6", ABISELECT(144,120));

#else // __cplusplus

extern void _ZN8S19048C6C1Ev();
extern void _ZN8S19048C6D1Ev();
Name_Map name_map_S19048C6[] = {
  NSPAIR(_ZN8S19048C6C1Ev),
  NSPAIR(_ZN8S19048C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C2;
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
static Base_Class bases_S19048C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19048C7,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19048C4,    ABISELECT(120,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
    3, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(128,108), //bcp->offset
    34, //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
    5, //immediately_derived
  0, 0},
  {&cd_S19048C2,    ABISELECT(120,104), //bcp->offset
    16, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19048C6[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY vtc_S19048C6[] = {
  ABISELECT(120,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S19048C6[];
static  VTT_ENTRY vtt_S19048C6[] = {
  {&(_ZTV8S19048C6[3]),  3,38},
  {&(_ZTV8S19048C6[26]),  26,38},
  {&(_ZTV8S19048C6[36]),  36,38},
};
extern VTBL_ENTRY _ZTI8S19048C6[];
extern  VTBL_ENTRY _ZTV8S19048C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C6[];
Class_Descriptor cd_S19048C6 = {  "S19048C6", // class name
  bases_S19048C6, 6,
  &(vtc_S19048C6[0]), // expected_vtbl_contents
  &(vtt_S19048C6[0]), // expected_vtt_contents
  ABISELECT(144,120), // object size
  NSPAIRA(_ZTI8S19048C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19048C6),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19048C6),3, //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  S19048C8  : virtual S19048C2 , S19048C3 {
  virtual void  v28(); // _ZN8S19048C83v28Ev
  virtual void  v29(); // _ZN8S19048C83v29Ev
  virtual void  v30(); // _ZN8S19048C83v30Ev
  ~S19048C8(); // tgen
  S19048C8(); // tgen
};
//SIG(-1 S19048C8) C1{ VBC2{ BC3{ BC4{ v4 v5} v6 v7} BC4 v8 v9 v10 v11 FL} BC3 v1 v2 v3}


void  S19048C8 ::v28(){vfunc_called(this, "_ZN8S19048C83v28Ev");}
void  S19048C8 ::v29(){vfunc_called(this, "_ZN8S19048C83v29Ev");}
void  S19048C8 ::v30(){vfunc_called(this, "_ZN8S19048C83v30Ev");}
S19048C8 ::~S19048C8(){ note_dtor("S19048C8", this);} // tgen
S19048C8 ::S19048C8(){ note_ctor("S19048C8", this);} // tgen

static void Test_S19048C8()
{
  extern Class_Descriptor cd_S19048C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19048C8, buf);
    S19048C8 *dp, &lv = *(dp=new (buf) S19048C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19048C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C8)");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C2*), ABISELECT(8,4), "S19048C8");
    check_base_class_offset(lv, (S19048C3*)(S19048C2*), ABISELECT(8,4), "S19048C8");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C2*), ABISELECT(16,8), "S19048C8");
    check_base_class_offset(lv, (S19048C2*), ABISELECT(8,4), "S19048C8");
    /*is_ambiguous_... S19048C8::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*), 0, "S19048C8");
    /*is_ambiguous_... S19048C8::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C3*), 0, "S19048C8");
    test_class_info(&lv, &cd_S19048C8);
    dp->~S19048C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C8(Test_S19048C8, "S19048C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19048C8C1Ev();
extern void _ZN8S19048C8D1Ev();
Name_Map name_map_S19048C8[] = {
  NSPAIR(_ZN8S19048C8C1Ev),
  NSPAIR(_ZN8S19048C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C2;
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
static Base_Class bases_S19048C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19048C4,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19048C2,    ABISELECT(8,4), //bcp->offset
    10, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19048C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19048C8[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY vtc_S19048C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S19048C8[];
static  VTT_ENTRY vtt_S19048C8[] = {
  {&(_ZTV8S19048C8[3]),  3,32},
  {&(_ZTV8S19048C8[20]),  20,32},
  {&(_ZTV8S19048C8[30]),  30,32},
};
extern VTBL_ENTRY _ZTI8S19048C8[];
extern  VTBL_ENTRY _ZTV8S19048C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C8[];
Class_Descriptor cd_S19048C8 = {  "S19048C8", // class name
  bases_S19048C8, 6,
  &(vtc_S19048C8[0]), // expected_vtbl_contents
  &(vtt_S19048C8[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19048C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19048C8),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19048C8),3, //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  S19048C10  : virtual S19048C3 , S19048C4 {
  virtual void  v31(); // _ZN9S19048C103v31Ev
  virtual void  v32(); // _ZN9S19048C103v32Ev
  virtual void  v33(); // _ZN9S19048C103v33Ev
  virtual void  v34(); // _ZN9S19048C103v34Ev
  virtual void  v35(); // _ZN9S19048C103v35Ev
  virtual void  v36(); // _ZN9S19048C103v36Ev
  virtual void  v37(); // _ZN9S19048C103v37Ev
  virtual void  v38(); // _ZN9S19048C103v38Ev
  ~S19048C10(); // tgen
  S19048C10(); // tgen
};
//SIG(-1 S19048C10) C1{ VBC2{ BC3{ v9 v10} v11 v12} BC3 v1 v2 v3 v4 v5 v6 v7 v8}


void  S19048C10 ::v31(){vfunc_called(this, "_ZN9S19048C103v31Ev");}
void  S19048C10 ::v32(){vfunc_called(this, "_ZN9S19048C103v32Ev");}
void  S19048C10 ::v33(){vfunc_called(this, "_ZN9S19048C103v33Ev");}
void  S19048C10 ::v34(){vfunc_called(this, "_ZN9S19048C103v34Ev");}
void  S19048C10 ::v35(){vfunc_called(this, "_ZN9S19048C103v35Ev");}
void  S19048C10 ::v36(){vfunc_called(this, "_ZN9S19048C103v36Ev");}
void  S19048C10 ::v37(){vfunc_called(this, "_ZN9S19048C103v37Ev");}
void  S19048C10 ::v38(){vfunc_called(this, "_ZN9S19048C103v38Ev");}
S19048C10 ::~S19048C10(){ note_dtor("S19048C10", this);} // tgen
S19048C10 ::S19048C10(){ note_ctor("S19048C10", this);} // tgen

static void Test_S19048C10()
{
  extern Class_Descriptor cd_S19048C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19048C10, buf);
    S19048C10 *dp, &lv = *(dp=new (buf) S19048C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19048C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C10)");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*), ABISELECT(8,4), "S19048C10");
    check_base_class_offset(lv, (S19048C3*), ABISELECT(8,4), "S19048C10");
    /*is_ambiguous_... S19048C10::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*), 0, "S19048C10");
    test_class_info(&lv, &cd_S19048C10);
    dp->~S19048C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C10(Test_S19048C10, "S19048C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19048C10C1Ev();
extern void _ZN9S19048C10D1Ev();
Name_Map name_map_S19048C10[] = {
  NSPAIR(_ZN9S19048C10C1Ev),
  NSPAIR(_ZN9S19048C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
static Base_Class bases_S19048C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(8,4), //bcp->offset
    13, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S19048C10[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY vtc_S19048C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern VTBL_ENTRY _ZTV9S19048C10[];
static  VTT_ENTRY vtt_S19048C10[] = {
  {&(_ZTV9S19048C10[3]),  3,23},
  {&(_ZTV9S19048C10[19]),  19,23},
};
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
Class_Descriptor cd_S19048C10 = {  "S19048C10", // class name
  bases_S19048C10, 3,
  &(vtc_S19048C10[0]), // expected_vtbl_contents
  &(vtt_S19048C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19048C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19048C10),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19048C10),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19048C9  : virtual S19048C7 , virtual S19048C2 , virtual S19048C6 , S19048C10 , S19048C3 {
  char s19048c9f0;
  short s19048c9f1;
  virtual void  v39(); // _ZN8S19048C93v39Ev
  virtual void  v40(); // _ZN8S19048C93v40Ev
  virtual void  v41(); // _ZN8S19048C93v41Ev
  virtual void  v42(); // _ZN8S19048C93v42Ev
  virtual void  v43(); // _ZN8S19048C93v43Ev
  virtual void  v44(); // _ZN8S19048C93v44Ev
  virtual void  v45(); // _ZN8S19048C93v45Ev
  ~S19048C9(); // tgen
  S19048C9(); // tgen
};
//SIG(-1 S19048C9) C1{ VBC2{ v8 v9 v10 v11 v12 v13 v14 FL[10] Fp FL} VBC3{ BC4{ BC5{ v15 v16} v17 v18} BC5 v19 v20 v21 v22 FL} VBC6{ BC5 BC2 VBC3 v23 v24 Fp} BC7{ VBC4 BC5 v25 v26 v27 v28 v29 v30 v31 v32} BC4 v1 v2 v3 v4 v5 v6 v7 Fc Fs}


void  S19048C9 ::v39(){vfunc_called(this, "_ZN8S19048C93v39Ev");}
void  S19048C9 ::v40(){vfunc_called(this, "_ZN8S19048C93v40Ev");}
void  S19048C9 ::v41(){vfunc_called(this, "_ZN8S19048C93v41Ev");}
void  S19048C9 ::v42(){vfunc_called(this, "_ZN8S19048C93v42Ev");}
void  S19048C9 ::v43(){vfunc_called(this, "_ZN8S19048C93v43Ev");}
void  S19048C9 ::v44(){vfunc_called(this, "_ZN8S19048C93v44Ev");}
void  S19048C9 ::v45(){vfunc_called(this, "_ZN8S19048C93v45Ev");}
S19048C9 ::~S19048C9(){ note_dtor("S19048C9", this);} // tgen
S19048C9 ::S19048C9(){ note_ctor("S19048C9", this);} // tgen

static void Test_S19048C9()
{
  extern Class_Descriptor cd_S19048C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,59)];
    init_test(&cd_S19048C9, buf);
    S19048C9 *dp, &lv = *(dp=new (buf) S19048C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,232), "sizeof(S19048C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C9)");
    /*is_ambiguous_... S19048C9::S19048C7 */ AMB_check_base_class_offset(lv, (S19048C7*), ABISELECT(24,12), "S19048C9");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C2*), ABISELECT(128,108), "S19048C9");
    check_base_class_offset(lv, (S19048C3*)(S19048C2*), ABISELECT(128,108), "S19048C9");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C2*), ABISELECT(136,112), "S19048C9");
    check_base_class_offset(lv, (S19048C2*), ABISELECT(128,108), "S19048C9");
    check_base_class_offset(lv, (S19048C2*)(S19048C6*), ABISELECT(128,108), "S19048C9");
    /*is_ambiguous_... S19048C6::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C6*), ABISELECT(152,124), "S19048C9");
    check_base_class_offset(lv, (S19048C7*)(S19048C6*), ABISELECT(160,128), "S19048C9");
    check_base_class_offset(lv, (S19048C6*), ABISELECT(152,124), "S19048C9");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*), ABISELECT(272,228), "S19048C9");
    check_base_class_offset(lv, (S19048C3*)(S19048C10*), ABISELECT(272,228), "S19048C9");
    /*is_ambiguous_... S19048C10::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*), 0, "S19048C9");
    check_base_class_offset(lv, (S19048C10*), 0, "S19048C9");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*), ABISELECT(8,4), "S19048C9");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C3*), ABISELECT(8,4), "S19048C9");
    check_field_offset(lv, s19048c9f0, ABISELECT(16,8), "S19048C9.s19048c9f0");
    check_field_offset(lv, s19048c9f1, ABISELECT(18,10), "S19048C9.s19048c9f1");
    test_class_info(&lv, &cd_S19048C9);
    dp->~S19048C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C9(Test_S19048C9, "S19048C9", ABISELECT(280,232));

#else // __cplusplus

extern void _ZN8S19048C9C1Ev();
extern void _ZN8S19048C9D1Ev();
Name_Map name_map_S19048C9[] = {
  NSPAIR(_ZN8S19048C9C1Ev),
  NSPAIR(_ZN8S19048C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C2;
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C6;
extern VTBL_ENTRY _ZTI8S19048C6[];
extern  VTBL_ENTRY _ZTV8S19048C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C6[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
static Base_Class bases_S19048C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C7,    ABISELECT(24,12), //bcp->offset
    29, //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
  1, 1},
  {&cd_S19048C4,    ABISELECT(128,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(128,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(136,112), //bcp->offset
    63, //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_S19048C2,    ABISELECT(128,108), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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_S19048C4,    ABISELECT(152,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19048C7,    ABISELECT(160,128), //bcp->offset
    85, //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19048C6,    ABISELECT(152,124), //bcp->offset
    67, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C4,    ABISELECT(272,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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(272,228), //bcp->offset
    94, //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
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19048C10,    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_S19048C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(8,4), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19048C9[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C93v39Ev();
extern void _ZN8S19048C93v40Ev();
extern void _ZN8S19048C93v41Ev();
extern void _ZN8S19048C93v42Ev();
extern void _ZN8S19048C93v43Ev();
extern void _ZN8S19048C93v44Ev();
extern void _ZN8S19048C93v45Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY vtc_S19048C9[] = {
  ABISELECT(152,124),
  ABISELECT(128,108),
  ABISELECT(24,12),
  ABISELECT(272,228),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v39Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v40Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v41Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v42Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v43Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v44Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v45Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern VTBL_ENTRY _ZTV8S19048C9[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C10__8S19048C9[] = {
  ABISELECT(272,228),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C10__8S19048C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__8S19048C9[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C6__8S19048C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A2__8S19048C6__8S19048C9[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
static  VTT_ENTRY vtt_S19048C9[] = {
  {&(_ZTV8S19048C9[6]),  6,104},
  {&(_tg__ZTV9S19048C10__8S19048C9[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C10__8S19048C9[6]),  6,10},
  {&(_ZTV8S19048C9[38]),  38,104},
  {&(_ZTV8S19048C9[55]),  55,104},
  {&(_ZTV8S19048C9[65]),  65,104},
  {&(_ZTV8S19048C9[81]),  81,104},
  {&(_ZTV8S19048C9[87]),  87,104},
  {&(_ZTV8S19048C9[100]),  100,104},
  {&(_tg__ZTV8S19048C6__8S19048C9[3]),  3,7},
  {&(_tg__ZTV8S19048C2__8S19048C6__8S19048C9[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A2__8S19048C6__8S19048C9[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S19048C9[];
extern  VTBL_ENTRY _ZTV8S19048C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C9[];
Class_Descriptor cd_S19048C9 = {  "S19048C9", // class name
  bases_S19048C9, 14,
  &(vtc_S19048C9[0]), // expected_vtbl_contents
  &(vtt_S19048C9[0]), // expected_vtt_contents
  ABISELECT(280,232), // object size
  NSPAIRA(_ZTI8S19048C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19048C9),104, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19048C9),12, //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  S19048C5  : S19048C6 , virtual S19048C8 , S19048C9 , virtual S19048C10 {
  int s19048c5f0;
  virtual void  v46(); // _ZN8S19048C53v46Ev
  virtual void  v47(); // _ZN8S19048C53v47Ev
  ~S19048C5(); // tgen
  S19048C5(); // tgen
};
//SIG(-1 S19048C5) C1{ BC2{ BC3{ v3 v4} BC4{ v5 v6 v7 v8 v9 v10 v11 FL[10] Fp FL} VBC5{ BC6{ BC3 v12 v13} BC3 v14 v15 v16 v17 FL} v18 v19 Fp} VBC7{ VBC5 BC6 v20 v21 v22} BC8{ VBC4 VBC5 VBC2 BC9{ VBC6 BC3 v23 v24 v25 v26 v27 v28 v29 v30} BC6 v31 v32 v33 v34 v35 v36 v37 Fc Fs} VBC9 v1 v2 Fi}


void  S19048C5 ::v46(){vfunc_called(this, "_ZN8S19048C53v46Ev");}
void  S19048C5 ::v47(){vfunc_called(this, "_ZN8S19048C53v47Ev");}
S19048C5 ::~S19048C5(){ note_dtor("S19048C5", this);} // tgen
S19048C5 ::S19048C5(){ note_ctor("S19048C5", this);} // tgen

static void Test_S19048C5()
{
  extern Class_Descriptor cd_S19048C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(53,88)];
    init_test(&cd_S19048C5, buf);
    S19048C5 *dp, &lv = *(dp=new (buf) S19048C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,348), "sizeof(S19048C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C5)");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C6*), 0, "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C7*)(S19048C6*), ABISELECT(8,4), "S19048C5");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C2*), ABISELECT(144,120), "S19048C5");
    check_base_class_offset(lv, (S19048C3*)(S19048C2*), ABISELECT(144,120), "S19048C5");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C2*), ABISELECT(152,124), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C2*)(S19048C6*), ABISELECT(144,120), "S19048C5");
    check_base_class_offset(lv, (S19048C2*)(S19048C8*), ABISELECT(144,120), "S19048C5");
    check_base_class_offset(lv, (S19048C2*)(S19048C9*), ABISELECT(144,120), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C2*)(S19048C6*), ABISELECT(144,120), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C6*), 0, "S19048C5");
    /*is_ambiguous_... S19048C8::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C8*), ABISELECT(168,136), "S19048C5");
    /*is_ambiguous_... S19048C8::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C8*), ABISELECT(168,136), "S19048C5");
    check_base_class_offset(lv, (S19048C8*), ABISELECT(168,136), "S19048C5");
    /*is_ambiguous_... S19048C9::S19048C7 */ AMB_check_base_class_offset(lv, (S19048C7*)(S19048C9*), ABISELECT(176,140), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C6*), ABISELECT(280,236), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C7*)(S19048C6*), ABISELECT(288,240), "S19048C5");
    check_base_class_offset(lv, (S19048C6*)(S19048C9*), ABISELECT(280,236), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*), ABISELECT(400,340), "S19048C5");
    check_base_class_offset(lv, (S19048C3*)(S19048C10*)(S19048C9*), ABISELECT(400,340), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C10*), ABISELECT(400,340), "S19048C5");
    /*is_ambiguous_... S19048C10::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*)(S19048C9*), ABISELECT(120,104), "S19048C5");
    check_base_class_offset(lv, (S19048C10*)(S19048C9*), ABISELECT(120,104), "S19048C5");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C9*), ABISELECT(128,108), "S19048C5");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C9*), ABISELECT(128,108), "S19048C5");
    check_base_class_offset(lv, (S19048C9*), ABISELECT(120,104), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*), ABISELECT(408,344), "S19048C5");
    /*is_ambiguous_... S19048C5::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C10*), ABISELECT(408,344), "S19048C5");
    check_field_offset(lv, s19048c5f0, ABISELECT(140,116), "S19048C5.s19048c5f0");
    test_class_info(&lv, &cd_S19048C5);
    dp->~S19048C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C5(Test_S19048C5, "S19048C5", ABISELECT(416,348));

#else // __cplusplus

extern void _ZN8S19048C5C1Ev();
extern void _ZN8S19048C5D1Ev();
Name_Map name_map_S19048C5[] = {
  NSPAIR(_ZN8S19048C5C1Ev),
  NSPAIR(_ZN8S19048C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C2;
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
extern Class_Descriptor cd_S19048C6;
extern VTBL_ENTRY _ZTI8S19048C6[];
extern  VTBL_ENTRY _ZTV8S19048C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C6[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C8;
extern VTBL_ENTRY _ZTI8S19048C8[];
extern  VTBL_ENTRY _ZTV8S19048C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C8[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C6;
extern VTBL_ENTRY _ZTI8S19048C6[];
extern  VTBL_ENTRY _ZTV8S19048C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C6[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C9;
extern VTBL_ENTRY _ZTI8S19048C9[];
extern  VTBL_ENTRY _ZTV8S19048C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C9[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
static Base_Class bases_S19048C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S19048C7,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(144,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
    3, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(144,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(152,124), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19048C2,    ABISELECT(144,120), //bcp->offset
    52, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19048C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19048C4,    ABISELECT(168,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(168,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19048C8,    ABISELECT(168,136), //bcp->offset
    74, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C7,    ABISELECT(176,140), //bcp->offset
    91, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19048C4,    ABISELECT(280,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19048C7,    ABISELECT(288,240), //bcp->offset
    125, //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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19048C6,    ABISELECT(280,236), //bcp->offset
    107, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19048C4,    ABISELECT(400,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(400,340), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19048C4,    ABISELECT(120,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
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19048C10,    ABISELECT(120,104), //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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(128,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
    21, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(128,108), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19048C9,    ABISELECT(120,104), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19048C4,    ABISELECT(408,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
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19048C10,    ABISELECT(408,344), //bcp->offset
    144, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19048C5[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C53v46Ev();
extern void _ZN8S19048C53v47Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C93v39Ev();
extern void _ZN8S19048C93v40Ev();
extern void _ZN8S19048C93v41Ev();
extern void _ZN8S19048C93v42Ev();
extern void _ZN8S19048C93v43Ev();
extern void _ZN8S19048C93v44Ev();
extern void _ZN8S19048C93v45Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY vtc_S19048C5[] = {
  ABISELECT(408,344),
  ABISELECT(400,340),
  ABISELECT(280,236),
  ABISELECT(176,140),
  ABISELECT(168,136),
  ABISELECT(144,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19048C53v46Ev,
  (VTBL_ENTRY)&_ZN8S19048C53v47Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  ABISELECT(160,132),
  ABISELECT(24,16),
  ABISELECT(56,36),
  ABISELECT(280,236),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v39Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v40Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v41Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v42Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v43Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v44Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v45Ev,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-140),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  ABISELECT(-288,-240),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-340),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-408,-344),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern VTBL_ENTRY _ZTV8S19048C5[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__A__8S19048C5[] = {
  ABISELECT(144,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C6__A__8S19048C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A2__8S19048C6__A__8S19048C5[] = {
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C93v39Ev();
extern void _ZN8S19048C93v40Ev();
extern void _ZN8S19048C93v41Ev();
extern void _ZN8S19048C93v42Ev();
extern void _ZN8S19048C93v43Ev();
extern void _ZN8S19048C93v44Ev();
extern void _ZN8S19048C93v45Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C9__8S19048C5[] = {
  ABISELECT(160,132),
  ABISELECT(24,16),
  ABISELECT(56,36),
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v39Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v40Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v41Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v42Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v43Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v44Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v45Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C108S19048C9__8S19048C5[] = {
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C108S19048C9__8S19048C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C7__8S19048C9__8S19048C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C9__8S19048C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A1__8S19048C9__8S19048C5[] = {
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__8S19048C9__8S19048C5[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  ABISELECT(-160,-132),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C78S19048C6__A1__8S19048C9__8S19048C5[] = {
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__A1__8S19048C9__8S19048C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C8__8S19048C5[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C8__8S19048C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A1__8S19048C8__8S19048C5[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__A1__8S19048C5[] = {
  ABISELECT(-136,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C6__A1__8S19048C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,116),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A2__8S19048C6__A1__8S19048C5[] = {
  ABISELECT(128,112),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C10__A1__8S19048C5[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C10__A1__8S19048C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
static  VTT_ENTRY vtt_S19048C5[] = {
  {&(_ZTV8S19048C5[8]),  8,167},
  {&(_tg__ZTV8S19048C6__A__8S19048C5[3]),  3,7},
  {&(_tg__ZTV8S19048C2__8S19048C6__A__8S19048C5[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A2__8S19048C6__A__8S19048C5[2]),  2,4},
  {&(_tg__ZTV8S19048C9__8S19048C5[6]),  6,23},
  {&(_tg__ZTV9S19048C108S19048C9__8S19048C5[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C108S19048C9__8S19048C5[6]),  6,10},
  {&(_tg__ZTV8S19048C7__8S19048C9__8S19048C5[9]),  9,16},
  {&(_tg__ZTV8S19048C2__8S19048C9__8S19048C5[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A1__8S19048C9__8S19048C5[2]),  2,4},
  {&(_tg__ZTV8S19048C6__8S19048C9__8S19048C5[14]),  14,18},
  {&(_tg__ZTV8S19048C78S19048C6__A1__8S19048C9__8S19048C5[2]),  2,9},
  {&(_tg__ZTV8S19048C3__A1__8S19048C9__8S19048C5[6]),  6,10},
  {&(_ZTV8S19048C5[62]),  62,167},
  {&(_ZTV8S19048C5[72]),  72,167},
  {&(_ZTV8S19048C5[84]),  84,167},
  {&(_ZTV8S19048C5[29]),  29,167},
  {&(_ZTV8S19048C5[100]),  100,167},
  {&(_ZTV8S19048C5[121]),  121,167},
  {&(_ZTV8S19048C5[127]),  127,167},
  {&(_ZTV8S19048C5[140]),  140,167},
  {&(_ZTV8S19048C5[157]),  157,167},
  {&(_tg__ZTV8S19048C8__8S19048C5[3]),  3,10},
  {&(_tg__ZTV8S19048C2__8S19048C8__8S19048C5[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A1__8S19048C8__8S19048C5[2]),  2,4},
  {&(_tg__ZTV8S19048C6__A1__8S19048C5[3]),  3,7},
  {&(_tg__ZTV8S19048C2__8S19048C6__A1__8S19048C5[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A2__8S19048C6__A1__8S19048C5[2]),  2,4},
  {&(_tg__ZTV9S19048C10__A1__8S19048C5[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C10__A1__8S19048C5[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19048C5[];
extern  VTBL_ENTRY _ZTV8S19048C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C5[];
Class_Descriptor cd_S19048C5 = {  "S19048C5", // class name
  bases_S19048C5, 23,
  &(vtc_S19048C5[0]), // expected_vtbl_contents
  &(vtt_S19048C5[0]), // expected_vtt_contents
  ABISELECT(416,348), // object size
  NSPAIRA(_ZTI8S19048C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19048C5),167, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19048C5),30, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19048C11  : virtual S19048C10 , virtual S19048C2 {
  int s19048c11f0[2];
  virtual void  v48(); // _ZN9S19048C113v48Ev
  virtual void  v49(); // _ZN9S19048C113v49Ev
  virtual void  v50(); // _ZN9S19048C113v50Ev
  virtual void  v51(); // _ZN9S19048C113v51Ev
  virtual void  v52(); // _ZN9S19048C113v52Ev
  virtual void  v53(); // _ZN9S19048C113v53Ev
  ~S19048C11(); // tgen
  S19048C11(); // tgen
};
//SIG(-1 S19048C11) C1{ VBC2{ VBC3{ BC4{ v7 v8} v9 v10} BC4 v11 v12 v13 v14 v15 v16 v17 v18} VBC5{ BC3 BC4 v19 v20 v21 v22 FL} v1 v2 v3 v4 v5 v6 Fi[2]}


void  S19048C11 ::v48(){vfunc_called(this, "_ZN9S19048C113v48Ev");}
void  S19048C11 ::v49(){vfunc_called(this, "_ZN9S19048C113v49Ev");}
void  S19048C11 ::v50(){vfunc_called(this, "_ZN9S19048C113v50Ev");}
void  S19048C11 ::v51(){vfunc_called(this, "_ZN9S19048C113v51Ev");}
void  S19048C11 ::v52(){vfunc_called(this, "_ZN9S19048C113v52Ev");}
void  S19048C11 ::v53(){vfunc_called(this, "_ZN9S19048C113v53Ev");}
S19048C11 ::~S19048C11(){ note_dtor("S19048C11", this);} // tgen
S19048C11 ::S19048C11(){ note_ctor("S19048C11", this);} // tgen

static void Test_S19048C11()
{
  extern Class_Descriptor cd_S19048C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19048C11, buf);
    S19048C11 *dp, &lv = *(dp=new (buf) S19048C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19048C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C11)");
    /*is_ambiguous_... S19048C11::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*), ABISELECT(16,12), "S19048C11");
    check_base_class_offset(lv, (S19048C3*)(S19048C10*), ABISELECT(16,12), "S19048C11");
    /*is_ambiguous_... S19048C10::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*), 0, "S19048C11");
    check_base_class_offset(lv, (S19048C10*), 0, "S19048C11");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C2*), ABISELECT(24,16), "S19048C11");
    check_base_class_offset(lv, (S19048C3*)(S19048C2*), ABISELECT(24,16), "S19048C11");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C2*), ABISELECT(32,20), "S19048C11");
    check_base_class_offset(lv, (S19048C2*), ABISELECT(24,16), "S19048C11");
    check_field_offset(lv, s19048c11f0, ABISELECT(8,4), "S19048C11.s19048c11f0");
    test_class_info(&lv, &cd_S19048C11);
    dp->~S19048C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C11(Test_S19048C11, "S19048C11", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S19048C11C1Ev();
extern void _ZN9S19048C11D1Ev();
Name_Map name_map_S19048C11[] = {
  NSPAIR(_ZN9S19048C11C1Ev),
  NSPAIR(_ZN9S19048C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C2;
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
static Base_Class bases_S19048C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(16,12), //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19048C10,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C4,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19048C3,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(32,20), //bcp->offset
    59, //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19048C2,    ABISELECT(24,16), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    4, //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 _ZTI9S19048C11[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN9S19048C113v48Ev();
extern void _ZN9S19048C113v49Ev();
extern void _ZN9S19048C113v50Ev();
extern void _ZN9S19048C113v51Ev();
extern void _ZN9S19048C113v52Ev();
extern void _ZN9S19048C113v53Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY vtc_S19048C11[] = {
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v48Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v49Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v53Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern VTBL_ENTRY _ZTV9S19048C11[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C10__9S19048C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C10__9S19048C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
static  VTT_ENTRY vtt_S19048C11[] = {
  {&(_ZTV9S19048C11[15]),  15,63},
  {&(_ZTV9S19048C11[15]),  15,63},
  {&(_ZTV9S19048C11[37]),  37,63},
  {&(_ZTV9S19048C11[51]),  51,63},
  {&(_ZTV9S19048C11[61]),  61,63},
  {&(_tg__ZTV9S19048C10__9S19048C11[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C10__9S19048C11[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S19048C11[];
extern  VTBL_ENTRY _ZTV9S19048C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C11[];
Class_Descriptor cd_S19048C11 = {  "S19048C11", // class name
  bases_S19048C11, 8,
  &(vtc_S19048C11[0]), // expected_vtbl_contents
  &(vtt_S19048C11[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S19048C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19048C11),63, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19048C11),7, //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  S19048C1  : virtual S19048C2 , virtual S19048C5 , S19048C10 , S19048C8 , virtual S19048C11 {
  ::S19048C7 s19048c1f0;
  virtual void  v1(); // _ZN8S19048C12v1Ev
  virtual void  v2(); // _ZN8S19048C12v2Ev
  virtual void  v3(); // _ZN8S19048C12v3Ev
  virtual void  v4(); // _ZN8S19048C12v4Ev
  virtual void  v5(); // _ZN8S19048C12v5Ev
  virtual void  v6(); // _ZN8S19048C12v6Ev
  virtual void  v7(); // _ZN8S19048C12v7Ev
  virtual void  v8(); // _ZN8S19048C12v8Ev
  virtual void  v9(); // _ZN8S19048C12v9Ev
  virtual void  v10(); // _ZN8S19048C13v10Ev
  ~S19048C1(); // tgen
  S19048C1(); // tgen
};
//SIG(1 S19048C1) C1{ VBC2{ BC3{ BC4{ v11 v12} v13 v14} BC4 v15 v16 v17 v18 FL} VBC5{ BC6{ BC4 BC7{ v19 v20 v21 v22 v23 v24 v25 FL[10] Fp FL} VBC2 v26 v27 Fp} VBC8{ VBC2 BC3 v28 v29 v30} BC9{ VBC7 VBC2 VBC6 BC10{ VBC3 BC4 v31 v32 v33 v34 v35 v36 v37 v38} BC3 v39 v40 v41 v42 v43 v44 v45 Fc Fs} VBC10 v46 v47 Fi} BC10 BC8 VBC11{ VBC10 VBC2 v48 v49 v50 v51 v52 v53 Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC7}


void  S19048C1 ::v1(){vfunc_called(this, "_ZN8S19048C12v1Ev");}
void  S19048C1 ::v2(){vfunc_called(this, "_ZN8S19048C12v2Ev");}
void  S19048C1 ::v3(){vfunc_called(this, "_ZN8S19048C12v3Ev");}
void  S19048C1 ::v4(){vfunc_called(this, "_ZN8S19048C12v4Ev");}
void  S19048C1 ::v5(){vfunc_called(this, "_ZN8S19048C12v5Ev");}
void  S19048C1 ::v6(){vfunc_called(this, "_ZN8S19048C12v6Ev");}
void  S19048C1 ::v7(){vfunc_called(this, "_ZN8S19048C12v7Ev");}
void  S19048C1 ::v8(){vfunc_called(this, "_ZN8S19048C12v8Ev");}
void  S19048C1 ::v9(){vfunc_called(this, "_ZN8S19048C12v9Ev");}
void  S19048C1 ::v10(){vfunc_called(this, "_ZN8S19048C13v10Ev");}
S19048C1 ::~S19048C1(){ note_dtor("S19048C1", this);} // tgen
S19048C1 ::S19048C1(){ note_ctor("S19048C1", this);} // tgen

static void Test_S19048C1()
{
  extern Class_Descriptor cd_S19048C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(69,116)];
    init_test(&cd_S19048C1, buf);
    S19048C1 *dp, &lv = *(dp=new (buf) S19048C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,460), "sizeof(S19048C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19048C1)");
    check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C2*), ABISELECT(120,104), "S19048C1");
    check_base_class_offset(lv, (S19048C3*)(S19048C2*), ABISELECT(120,104), "S19048C1");
    /*is_ambiguous_... S19048C2::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C2*), ABISELECT(128,108), "S19048C1");
    check_base_class_offset(lv, (S19048C2*), ABISELECT(120,104), "S19048C1");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C2*)(S19048C6*)(S19048C5*), ABISELECT(120,104), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C2*)(S19048C8*), ABISELECT(120,104), "S19048C1");
    check_base_class_offset(lv, (S19048C2*)(S19048C9*)(S19048C5*), ABISELECT(120,104), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C2*)(S19048C6*), ABISELECT(120,104), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C2*)(S19048C8*), ABISELECT(120,104), "S19048C1");
    check_base_class_offset(lv, (S19048C2*)(S19048C11*), ABISELECT(120,104), "S19048C1");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C6*)(S19048C5*), ABISELECT(144,120), "S19048C1");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C7*)(S19048C6*)(S19048C5*), ABISELECT(152,124), "S19048C1");
    /*is_ambiguous_... S19048C5::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C6*)(S19048C5*), ABISELECT(144,120), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C8*), ABISELECT(288,240), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C8*), ABISELECT(288,240), "S19048C1");
    check_base_class_offset(lv, (S19048C8*)(S19048C5*), ABISELECT(288,240), "S19048C1");
    /*is_ambiguous_... S19048C9::S19048C7 */ AMB_check_base_class_offset(lv, (S19048C7*)(S19048C9*)(S19048C5*), ABISELECT(296,244), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C6*), ABISELECT(400,340), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C6 */ AMB_check_base_class_offset(lv, (S19048C7*)(S19048C6*), ABISELECT(408,344), "S19048C1");
    check_base_class_offset(lv, (S19048C6*)(S19048C9*)(S19048C5*), ABISELECT(400,340), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*), ABISELECT(520,444), "S19048C1");
    check_base_class_offset(lv, (S19048C3*)(S19048C10*)(S19048C9*)(S19048C5*), ABISELECT(520,444), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C10*), ABISELECT(520,444), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C10*), ABISELECT(520,444), "S19048C1");
    /*is_ambiguous_... S19048C10::S19048C4 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*)(S19048C9*)(S19048C5*), ABISELECT(264,224), "S19048C1");
    check_base_class_offset(lv, (S19048C10*)(S19048C9*)(S19048C5*), ABISELECT(264,224), "S19048C1");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C9*)(S19048C5*), ABISELECT(272,228), "S19048C1");
    /*is_ambiguous_... S19048C9::S19048C3 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C9*)(S19048C5*), ABISELECT(272,228), "S19048C1");
    check_base_class_offset(lv, (S19048C9*)(S19048C5*), ABISELECT(264,224), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*), ABISELECT(528,448), "S19048C1");
    /*is_ambiguous_... S19048C5::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C10*)(S19048C5*), ABISELECT(528,448), "S19048C1");
    check_base_class_offset(lv, (S19048C10*)(S19048C11*), ABISELECT(528,448), "S19048C1");
    check_base_class_offset(lv, (S19048C5*), ABISELECT(144,120), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C10*), 0, "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C10 */ AMB_check_base_class_offset(lv, (S19048C10*), 0, "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C4*)(S19048C3*)(S19048C8*), ABISELECT(8,4), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C3*)(S19048C8*), ABISELECT(8,4), "S19048C1");
    /*is_ambiguous_... S19048C1::S19048C8 */ AMB_check_base_class_offset(lv, (S19048C8*), ABISELECT(8,4), "S19048C1");
    check_base_class_offset(lv, (S19048C11*), ABISELECT(528,448), "S19048C1");
    check_field_offset(lv, s19048c1f0, ABISELECT(16,8), "S19048C1.s19048c1f0");
    test_class_info(&lv, &cd_S19048C1);
    dp->~S19048C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19048C1(Test_S19048C1, "S19048C1", ABISELECT(544,460));

#else // __cplusplus

extern void _ZN8S19048C1C1Ev();
extern void _ZN8S19048C1D1Ev();
Name_Map name_map_S19048C1[] = {
  NSPAIR(_ZN8S19048C1C1Ev),
  NSPAIR(_ZN8S19048C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C2;
extern VTBL_ENTRY _ZTI8S19048C2[];
extern  VTBL_ENTRY _ZTV8S19048C2[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C6;
extern VTBL_ENTRY _ZTI8S19048C6[];
extern  VTBL_ENTRY _ZTV8S19048C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C6[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C8;
extern VTBL_ENTRY _ZTI8S19048C8[];
extern  VTBL_ENTRY _ZTV8S19048C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C8[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C7;
extern VTBL_ENTRY _ZTI8S19048C7[];
extern  VTBL_ENTRY _ZTV8S19048C7[];
extern Class_Descriptor cd_S19048C6;
extern VTBL_ENTRY _ZTI8S19048C6[];
extern  VTBL_ENTRY _ZTV8S19048C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C6[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C9;
extern VTBL_ENTRY _ZTI8S19048C9[];
extern  VTBL_ENTRY _ZTV8S19048C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C9[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
extern Class_Descriptor cd_S19048C5;
extern VTBL_ENTRY _ZTI8S19048C5[];
extern  VTBL_ENTRY _ZTV8S19048C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C5[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C10;
extern VTBL_ENTRY _ZTI9S19048C10[];
extern  VTBL_ENTRY _ZTV9S19048C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C10[];
extern Class_Descriptor cd_S19048C4;
extern VTBL_ENTRY _ZTI8S19048C4[];
extern  VTBL_ENTRY _ZTV8S19048C4[];
extern Class_Descriptor cd_S19048C3;
extern VTBL_ENTRY _ZTI8S19048C3[];
extern  VTBL_ENTRY _ZTV8S19048C3[];
extern Class_Descriptor cd_S19048C8;
extern VTBL_ENTRY _ZTI8S19048C8[];
extern  VTBL_ENTRY _ZTV8S19048C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C8[];
extern Class_Descriptor cd_S19048C11;
extern VTBL_ENTRY _ZTI9S19048C11[];
extern  VTBL_ENTRY _ZTV9S19048C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19048C11[];
static Base_Class bases_S19048C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19048C4,    ABISELECT(120,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
    1, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(128,108), //bcp->offset
    58, //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19048C2,    ABISELECT(120,104), //bcp->offset
    40, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C4,    ABISELECT(144,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
    16, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19048C7,    ABISELECT(152,124), //bcp->offset
    106, //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
    17, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19048C6,    ABISELECT(144,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19048C8,    ABISELECT(288,240), //bcp->offset
    144, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19048C7,    ABISELECT(296,244), //bcp->offset
    161, //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
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19048C4,    ABISELECT(400,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
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19048C7,    ABISELECT(408,344), //bcp->offset
    195, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19048C6,    ABISELECT(400,340), //bcp->offset
    177, //bcp->virtual_function_table_offset
    14, //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
    20, //immediately_derived
  0, 1},
  {&cd_S19048C4,    ABISELECT(520,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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(520,444), //bcp->offset
    204, //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
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19048C4,    ABISELECT(264,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19048C10,    ABISELECT(264,224), //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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(272,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
    21, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(272,228), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19048C9,    ABISELECT(264,224), //bcp->offset
    115, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19048C4,    ABISELECT(528,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
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19048C10,    ABISELECT(528,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19048C5,    ABISELECT(144,120), //bcp->offset
    62, //bcp->virtual_function_table_offset
    38, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19048C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19048C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19048C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    27, //immediately_derived
  0, 0},
  {&cd_S19048C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S19048C8,    ABISELECT(8,4), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19048C11,    ABISELECT(528,448), //bcp->offset
    214, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19048C1[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C12v1Ev();
extern void _ZN8S19048C12v2Ev();
extern void _ZN8S19048C12v3Ev();
extern void _ZN8S19048C12v4Ev();
extern void _ZN8S19048C12v5Ev();
extern void _ZN8S19048C12v6Ev();
extern void _ZN8S19048C12v7Ev();
extern void _ZN8S19048C12v8Ev();
extern void _ZN8S19048C12v9Ev();
extern void _ZN8S19048C13v10Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C53v46Ev();
extern void _ZN8S19048C53v47Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C93v39Ev();
extern void _ZN8S19048C93v40Ev();
extern void _ZN8S19048C93v41Ev();
extern void _ZN8S19048C93v42Ev();
extern void _ZN8S19048C93v43Ev();
extern void _ZN8S19048C93v44Ev();
extern void _ZN8S19048C93v45Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN9S19048C113v48Ev();
extern void _ZN9S19048C113v49Ev();
extern void _ZN9S19048C113v50Ev();
extern void _ZN9S19048C113v51Ev();
extern void _ZN9S19048C113v52Ev();
extern void _ZN9S19048C113v53Ev();
static  VTBL_ENTRY vtc_S19048C1[] = {
  ABISELECT(528,448),
  ABISELECT(528,448),
  ABISELECT(400,340),
  ABISELECT(296,244),
  ABISELECT(288,240),
  ABISELECT(144,120),
  ABISELECT(120,104),
  ABISELECT(520,444),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19048C12v9Ev,
  (VTBL_ENTRY)&_ZN8S19048C13v10Ev,
  ABISELECT(112,100),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  ABISELECT(128,108),
  ABISELECT(128,108),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  ABISELECT(120,104),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(384,328),
  ABISELECT(376,324),
  ABISELECT(256,220),
  ABISELECT(152,124),
  ABISELECT(144,120),
  ABISELECT(-24,-16),
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19048C53v46Ev,
  (VTBL_ENTRY)&_ZN8S19048C53v47Ev,
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  ABISELECT(136,116),
  ABISELECT(-144,-120),
  ABISELECT(32,20),
  ABISELECT(256,220),
  ABISELECT(-264,-224),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v39Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v40Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v41Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v42Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v43Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v44Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v45Ev,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-136),
  ABISELECT(-288,-240),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  ABISELECT(-400,-340),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  ABISELECT(-408,-344),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-520,-444),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-408,-344),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-528,-448),
  (VTBL_ENTRY)&(_ZTI8S19048C1[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v48Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v49Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v53Ev,
};
extern VTBL_ENTRY _ZTV8S19048C1[];
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C10__A__8S19048C1[] = {
  ABISELECT(520,444),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C10__A__8S19048C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-520,-444),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C8__A__8S19048C1[] = {
  ABISELECT(112,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C8__A__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-100),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A1__8S19048C8__A__8S19048C1[] = {
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
extern void _ZN8S19048C53v46Ev();
extern void _ZN8S19048C53v47Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C5__8S19048C1[] = {
  ABISELECT(384,328),
  ABISELECT(376,324),
  ABISELECT(256,220),
  ABISELECT(152,124),
  ABISELECT(144,120),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19048C53v46Ev,
  (VTBL_ENTRY)&_ZN8S19048C53v47Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C68S19048C5__8S19048C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C68S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A2__8S19048C68S19048C5__8S19048C1[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C93v39Ev();
extern void _ZN8S19048C93v40Ev();
extern void _ZN8S19048C93v41Ev();
extern void _ZN8S19048C93v42Ev();
extern void _ZN8S19048C93v43Ev();
extern void _ZN8S19048C93v44Ev();
extern void _ZN8S19048C93v45Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C98S19048C5__8S19048C1[] = {
  ABISELECT(136,116),
  ABISELECT(-144,-120),
  ABISELECT(32,20),
  ABISELECT(256,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v39Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v40Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v41Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v42Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v43Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v44Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v45Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C108S19048C98S19048C5__8S19048C1[] = {
  ABISELECT(256,220),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C108S19048C98S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-256,-220),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C7__8S19048C98S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C98S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,120),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A1__8S19048C98S19048C5__8S19048C1[] = {
  ABISELECT(136,116),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__8S19048C98S19048C5__8S19048C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  ABISELECT(-136,-116),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C78S19048C6__A1__8S19048C98S19048C5__8S19048C1[] = {
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__A1__8S19048C98S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-256,-220),
  (VTBL_ENTRY)&(_ZTI8S19048C9[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A2__8S19048C5__8S19048C1[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C8__8S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-136),
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN8S19048C93v39Ev();
extern void _ZN8S19048C93v40Ev();
extern void _ZN8S19048C93v41Ev();
extern void _ZN8S19048C93v42Ev();
extern void _ZN8S19048C93v43Ev();
extern void _ZN8S19048C93v44Ev();
extern void _ZN8S19048C93v45Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C9__8S19048C5__8S19048C1[] = {
  ABISELECT(136,116),
  ABISELECT(-144,-120),
  ABISELECT(32,20),
  ABISELECT(256,220),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v39Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v40Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v41Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v42Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v43Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v44Ev,
  (VTBL_ENTRY)&_ZN8S19048C93v45Ev,
};
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C7__A1__8S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__A1__8S19048C5__8S19048C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  ABISELECT(-256,-220),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C73v19Ev();
extern void _ZN8S19048C73v20Ev();
extern void _ZN8S19048C73v21Ev();
extern void _ZN8S19048C73v22Ev();
extern void _ZN8S19048C73v23Ev();
extern void _ZN8S19048C73v24Ev();
extern void _ZN8S19048C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C78S19048C6__A2__8S19048C5__8S19048C1[] = {
  ABISELECT(-264,-224),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v21Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19048C73v25Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__A2__8S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-376,-324),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C10__A1__8S19048C5__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-384,-328),
  (VTBL_ENTRY)&(_ZTI8S19048C5[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C83v28Ev();
extern void _ZN8S19048C83v29Ev();
extern void _ZN8S19048C83v30Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C8__8S19048C1[] = {
  ABISELECT(-168,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v29Ev,
  (VTBL_ENTRY)&_ZN8S19048C83v30Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C8__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A1__8S19048C8__8S19048C1[] = {
  ABISELECT(160,132),
  (VTBL_ENTRY)&(_ZTI8S19048C8[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C63v26Ev();
extern void _ZN8S19048C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C6__A1__8S19048C1[] = {
  ABISELECT(-280,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19048C63v27Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__8S19048C6__A1__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(280,236),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A2__8S19048C6__A1__8S19048C1[] = {
  ABISELECT(272,232),
  (VTBL_ENTRY)&(_ZTI8S19048C6[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C10__A1__8S19048C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C10__A1__8S19048C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19048C10[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN9S19048C103v31Ev();
extern void _ZN9S19048C103v32Ev();
extern void _ZN9S19048C103v33Ev();
extern void _ZN9S19048C103v34Ev();
extern void _ZN9S19048C103v35Ev();
extern void _ZN9S19048C103v36Ev();
extern void _ZN9S19048C103v37Ev();
extern void _ZN9S19048C103v38Ev();
extern void _ZN9S19048C113v48Ev();
extern void _ZN9S19048C113v49Ev();
extern void _ZN9S19048C113v50Ev();
extern void _ZN9S19048C113v51Ev();
extern void _ZN9S19048C113v52Ev();
extern void _ZN9S19048C113v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19048C11__8S19048C1[] = {
  ABISELECT(-408,-344),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v31Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v32Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v33Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v34Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v35Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19048C103v38Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v48Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v49Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19048C113v53Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C3__9S19048C11__8S19048C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
extern void _ZN8S19048C33v13Ev();
extern void _ZN8S19048C33v14Ev();
extern void _ZN8S19048C23v15Ev();
extern void _ZN8S19048C23v16Ev();
extern void _ZN8S19048C23v17Ev();
extern void _ZN8S19048C23v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C2__9S19048C11__8S19048C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(408,344),
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19048C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19048C23v18Ev,
};
extern void _ZN8S19048C43v11Ev();
extern void _ZN8S19048C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19048C48S19048C2__A3__9S19048C11__8S19048C1[] = {
  ABISELECT(400,340),
  (VTBL_ENTRY)&(_ZTI9S19048C11[0]),
  (VTBL_ENTRY)&_ZN8S19048C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19048C43v12Ev,
};
static  VTT_ENTRY vtt_S19048C1[] = {
  {&(_ZTV8S19048C1[10]),  10,251},
  {&(_tg__ZTV9S19048C10__A__8S19048C1[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C10__A__8S19048C1[6]),  6,10},
  {&(_tg__ZTV8S19048C8__A__8S19048C1[3]),  3,10},
  {&(_tg__ZTV8S19048C2__8S19048C8__A__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A1__8S19048C8__A__8S19048C1[2]),  2,4},
  {&(_ZTV8S19048C1[50]),  50,251},
  {&(_ZTV8S19048C1[60]),  60,251},
  {&(_ZTV8S19048C1[100]),  100,251},
  {&(_ZTV8S19048C1[108]),  108,251},
  {&(_ZTV8S19048C1[154]),  154,251},
  {&(_ZTV8S19048C1[121]),  121,251},
  {&(_ZTV8S19048C1[170]),  170,251},
  {&(_ZTV8S19048C1[191]),  191,251},
  {&(_ZTV8S19048C1[197]),  197,251},
  {&(_ZTV8S19048C1[210]),  210,251},
  {&(_ZTV8S19048C1[140]),  140,251},
  {&(_ZTV8S19048C1[235]),  235,251},
  {&(_ZTV8S19048C1[33]),  33,251},
  {&(_ZTV8S19048C1[235]),  235,251},
  {&(_tg__ZTV8S19048C5__8S19048C1[8]),  8,14},
  {&(_tg__ZTV8S19048C68S19048C5__8S19048C1[3]),  3,7},
  {&(_tg__ZTV8S19048C2__8S19048C68S19048C5__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A2__8S19048C68S19048C5__8S19048C1[2]),  2,4},
  {&(_tg__ZTV8S19048C98S19048C5__8S19048C1[6]),  6,23},
  {&(_tg__ZTV9S19048C108S19048C98S19048C5__8S19048C1[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C108S19048C98S19048C5__8S19048C1[6]),  6,10},
  {&(_tg__ZTV8S19048C7__8S19048C98S19048C5__8S19048C1[9]),  9,16},
  {&(_tg__ZTV8S19048C2__8S19048C98S19048C5__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A1__8S19048C98S19048C5__8S19048C1[2]),  2,4},
  {&(_tg__ZTV8S19048C6__8S19048C98S19048C5__8S19048C1[14]),  14,18},
  {&(_tg__ZTV8S19048C78S19048C6__A1__8S19048C98S19048C5__8S19048C1[2]),  2,9},
  {&(_tg__ZTV8S19048C3__A1__8S19048C98S19048C5__8S19048C1[6]),  6,10},
  {&(_tg__ZTV8S19048C2__8S19048C5__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A2__8S19048C5__8S19048C1[2]),  2,4},
  {&(_tg__ZTV8S19048C8__8S19048C5__8S19048C1[10]),  10,17},
  {&(_tg__ZTV8S19048C9__8S19048C5__8S19048C1[6]),  6,23},
  {&(_tg__ZTV8S19048C7__A1__8S19048C5__8S19048C1[9]),  9,16},
  {&(_tg__ZTV8S19048C6__A1__8S19048C5__8S19048C1[14]),  14,18},
  {&(_tg__ZTV8S19048C78S19048C6__A2__8S19048C5__8S19048C1[2]),  2,9},
  {&(_tg__ZTV8S19048C3__A2__8S19048C5__8S19048C1[6]),  6,10},
  {&(_tg__ZTV9S19048C10__A1__8S19048C5__8S19048C1[13]),  13,23},
  {&(_tg__ZTV8S19048C8__8S19048C1[3]),  3,10},
  {&(_tg__ZTV8S19048C2__8S19048C8__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A1__8S19048C8__8S19048C1[2]),  2,4},
  {&(_tg__ZTV8S19048C6__A1__8S19048C1[3]),  3,7},
  {&(_tg__ZTV8S19048C2__8S19048C6__A1__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A2__8S19048C6__A1__8S19048C1[2]),  2,4},
  {&(_tg__ZTV9S19048C10__A1__8S19048C1[3]),  3,13},
  {&(_tg__ZTV8S19048C3__9S19048C10__A1__8S19048C1[6]),  6,10},
  {&(_tg__ZTV9S19048C11__8S19048C1[15]),  15,31},
  {&(_tg__ZTV9S19048C11__8S19048C1[15]),  15,31},
  {&(_tg__ZTV8S19048C3__9S19048C11__8S19048C1[6]),  6,10},
  {&(_tg__ZTV8S19048C2__9S19048C11__8S19048C1[10]),  10,18},
  {&(_tg__ZTV8S19048C48S19048C2__A3__9S19048C11__8S19048C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S19048C1[];
extern  VTBL_ENTRY _ZTV8S19048C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19048C1[];
Class_Descriptor cd_S19048C1 = {  "S19048C1", // class name
  bases_S19048C1, 30,
  &(vtc_S19048C1[0]), // expected_vtbl_contents
  &(vtt_S19048C1[0]), // expected_vtt_contents
  ABISELECT(544,460), // object size
  NSPAIRA(_ZTI8S19048C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19048C1),251, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19048C1),55, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C3_nt  {
  void *s13081c3f0[3];
  char s13081c3f1[60];
  int s13081c3f2;
};
//SIG(-1 S13081C3_nt) C1{ Fp[3] Fc[60] Fi}



//skip512 S13081C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C4  {
  __tsi64 s13081c4f0;
  char s13081c4f1[288];
};
//SIG(-1 S13081C4) C1{ FL Fc[288]}



static void Test_S13081C4()
{
  {
    init_simple_test("S13081C4");
    S13081C4 lv;
    check2(sizeof(lv), 296, "sizeof(S13081C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13081C4)");
    check_field_offset(lv, s13081c4f0, 0, "S13081C4.s13081c4f0");
    check_field_offset(lv, s13081c4f1, 8, "S13081C4.s13081c4f1");
  }
}
static Arrange_To_Call_Me vS13081C4(Test_S13081C4, "S13081C4", 296);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C2  {
  int s13081c2f0;
  ::S13081C3_nt s13081c2f1;
  ::S13081C4 s13081c2f2;
  int s13081c2f3;
  char s13081c2f4[28];
};
//SIG(-1 S13081C2) C1{ Fi FC2{ Fp[3] Fc[60] Fi} FC3{ FL Fc[288]} Fi Fc[28]}



static void Test_S13081C2()
{
  {
    init_simple_test("S13081C2");
    S13081C2 lv;
    check2(sizeof(lv), ABISELECT(424,408), "sizeof(S13081C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13081C2)");
    check_field_offset(lv, s13081c2f0, 0, "S13081C2.s13081c2f0");
    check_field_offset(lv, s13081c2f1, ABISELECT(8,4), "S13081C2.s13081c2f1");
    check_field_offset(lv, s13081c2f2, ABISELECT(96,80), "S13081C2.s13081c2f2");
    check_field_offset(lv, s13081c2f3, ABISELECT(392,376), "S13081C2.s13081c2f3");
    check_field_offset(lv, s13081c2f4, ABISELECT(396,380), "S13081C2.s13081c2f4");
  }
}
static Arrange_To_Call_Me vS13081C2(Test_S13081C2, "S13081C2", ABISELECT(424,408));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C5  {
  int s13081c5f0;
  void *s13081c5f1;
  char s13081c5f2[28];
};
//SIG(-1 S13081C5) C1{ Fi Fp Fc[28]}



static void Test_S13081C5()
{
  {
    init_simple_test("S13081C5");
    S13081C5 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S13081C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13081C5)");
    check_field_offset(lv, s13081c5f0, 0, "S13081C5.s13081c5f0");
    check_field_offset(lv, s13081c5f1, ABISELECT(8,4), "S13081C5.s13081c5f1");
    check_field_offset(lv, s13081c5f2, ABISELECT(16,8), "S13081C5.s13081c5f2");
  }
}
static Arrange_To_Call_Me vS13081C5(Test_S13081C5, "S13081C5", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C8_nt  {
  int s13081c8f0;
  int s13081c8f1;
  int s13081c8f2;
};
//SIG(-1 S13081C8_nt) C1{ Fi[3]}



//skip512 S13081C8_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S13081C7  : S13081C8_nt {
  int s13081c7f0;
  char s13081c7f1[257];
  char s13081c7f2[181];
  int s13081c7f3;
  char s13081c7f4[257];
  int s13081c7f5;
  int s13081c7f6;
};
//SIG(1 S13081C7) C1{ BC2{ Fi[3]} Fi Fc[438] Fi Fc[257] Fi[2]}



static void Test_S13081C7()
{
  extern Class_Descriptor cd_S13081C7;
  void *lvp;
  {
    int buf[183];
    init_test(&cd_S13081C7, buf);
    S13081C7 &lv = *(new (buf) S13081C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 728, "sizeof(S13081C7)");
    check2(__alignof__(lv), 4, "__alignof__(S13081C7)");
    check_base_class_offset(lv, (S13081C8_nt*), 0, "S13081C7");
    check_field_offset(lv, s13081c7f0, 12, "S13081C7.s13081c7f0");
    check_field_offset(lv, s13081c7f1, 16, "S13081C7.s13081c7f1");
    check_field_offset(lv, s13081c7f2, 273, "S13081C7.s13081c7f2");
    check_field_offset(lv, s13081c7f3, 456, "S13081C7.s13081c7f3");
    check_field_offset(lv, s13081c7f4, 460, "S13081C7.s13081c7f4");
    check_field_offset(lv, s13081c7f5, 720, "S13081C7.s13081c7f5");
    check_field_offset(lv, s13081c7f6, 724, "S13081C7.s13081c7f6");
    test_class_info(&lv, &cd_S13081C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS13081C7(Test_S13081C7, "S13081C7", 728);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S13081C9  : S13081C8_nt {
  int s13081c9f0;
  char s13081c9f1[257];
  char s13081c9f2[257];
  int s13081c9f3;
};
//SIG(1 S13081C9) C1{ BC2{ Fi[3]} Fi Fc[514] Fi}



static void Test_S13081C9()
{
  extern Class_Descriptor cd_S13081C9;
  void *lvp;
  {
    int buf[135];
    init_test(&cd_S13081C9, buf);
    S13081C9 &lv = *(new (buf) S13081C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), 536, "sizeof(S13081C9)");
    check2(__alignof__(lv), 4, "__alignof__(S13081C9)");
    check_base_class_offset(lv, (S13081C8_nt*), 0, "S13081C9");
    check_field_offset(lv, s13081c9f0, 12, "S13081C9.s13081c9f0");
    check_field_offset(lv, s13081c9f1, 16, "S13081C9.s13081c9f1");
    check_field_offset(lv, s13081c9f2, 273, "S13081C9.s13081c9f2");
    check_field_offset(lv, s13081c9f3, 532, "S13081C9.s13081c9f3");
    test_class_info(&lv, &cd_S13081C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS13081C9(Test_S13081C9, "S13081C9", 536);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S13081C11  {
  int s13081c11f0;
  char s13081c11f1[257];
  char s13081c11f2[181];
  int s13081c11f3;
  char s13081c11f4[257];
  int s13081c11f5;
  int s13081c11f6;
};
//SIG(1 S13081C11) C1{ Fi Fc[438] Fi Fc[257] Fi[2]}



static void Test_S13081C11()
{
  {
    init_simple_test("S13081C11");
    S13081C11 lv;
    check2(sizeof(lv), 716, "sizeof(S13081C11)");
    check2(__alignof__(lv), 4, "__alignof__(S13081C11)");
    check_field_offset(lv, s13081c11f0, 0, "S13081C11.s13081c11f0");
    check_field_offset(lv, s13081c11f1, 4, "S13081C11.s13081c11f1");
    check_field_offset(lv, s13081c11f2, 261, "S13081C11.s13081c11f2");
    check_field_offset(lv, s13081c11f3, 444, "S13081C11.s13081c11f3");
    check_field_offset(lv, s13081c11f4, 448, "S13081C11.s13081c11f4");
    check_field_offset(lv, s13081c11f5, 708, "S13081C11.s13081c11f5");
    check_field_offset(lv, s13081c11f6, 712, "S13081C11.s13081c11f6");
  }
}
static Arrange_To_Call_Me vS13081C11(Test_S13081C11, "S13081C11", 716);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C10  : S13081C8_nt {
  int s13081c10f0;
  ::S13081C11 s13081c10f1[16];
};
//SIG(1 S13081C10) C1{ BC2{ Fi[3]} Fi FC3{ Fi Fc[438] Fi Fc[257] Fi[2]}[16]}



static void Test_S13081C10()
{
  extern Class_Descriptor cd_S13081C10;
  void *lvp;
  {
    int buf[2869];
    init_test(&cd_S13081C10, buf);
    S13081C10 &lv = *(new (buf) S13081C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), 11472, "sizeof(S13081C10)");
    check2(__alignof__(lv), 4, "__alignof__(S13081C10)");
    check_base_class_offset(lv, (S13081C8_nt*), 0, "S13081C10");
    check_field_offset(lv, s13081c10f0, 12, "S13081C10.s13081c10f0");
    check_field_offset(lv, s13081c10f1, 16, "S13081C10.s13081c10f1");
    test_class_info(&lv, &cd_S13081C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS13081C10(Test_S13081C10, "S13081C10", 11472);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S13081C13  {
  int s13081c13f0;
  char s13081c13f1[257];
  char s13081c13f2[257];
  int s13081c13f3;
};
//SIG(1 S13081C13) C1{ Fi Fc[514] Fi}



static void Test_S13081C13()
{
  {
    init_simple_test("S13081C13");
    S13081C13 lv;
    check2(sizeof(lv), 524, "sizeof(S13081C13)");
    check2(__alignof__(lv), 4, "__alignof__(S13081C13)");
    check_field_offset(lv, s13081c13f0, 0, "S13081C13.s13081c13f0");
    check_field_offset(lv, s13081c13f1, 4, "S13081C13.s13081c13f1");
    check_field_offset(lv, s13081c13f2, 261, "S13081C13.s13081c13f2");
    check_field_offset(lv, s13081c13f3, 520, "S13081C13.s13081c13f3");
  }
}
static Arrange_To_Call_Me vS13081C13(Test_S13081C13, "S13081C13", 524);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C12  : S13081C8_nt {
  int s13081c12f0;
  ::S13081C13 s13081c12f1[16];
};
//SIG(1 S13081C12) C1{ BC2{ Fi[3]} Fi FC3{ Fi Fc[514] Fi}[16]}



static void Test_S13081C12()
{
  extern Class_Descriptor cd_S13081C12;
  void *lvp;
  {
    int buf[2101];
    init_test(&cd_S13081C12, buf);
    S13081C12 &lv = *(new (buf) S13081C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8400, "sizeof(S13081C12)");
    check2(__alignof__(lv), 4, "__alignof__(S13081C12)");
    check_base_class_offset(lv, (S13081C8_nt*), 0, "S13081C12");
    check_field_offset(lv, s13081c12f0, 12, "S13081C12.s13081c12f0");
    check_field_offset(lv, s13081c12f1, 16, "S13081C12.s13081c12f1");
    test_class_info(&lv, &cd_S13081C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS13081C12(Test_S13081C12, "S13081C12", 8400);

#else // __cplusplus

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

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

#ifdef __cplusplus

union  S13081C6  {
  ::S13081C7 s13081c6f0;
  ::S13081C9 s13081c6f1;
  ::S13081C10 s13081c6f2;
  ::S13081C12 s13081c6f3;
};
//SIG(1 S13081C6) U1{ FC2{ BC3{ Fi Fi Fi} Fi Fc[257] Fc[181] Fi Fc[257] Fi Fi} FC4{ BC3 Fi Fc[257] Fc[257] Fi} FC5{ BC3 Fi FC6{ Fi Fc[257] Fc[181] Fi Fc[257] Fi Fi}[16]} FC7{ BC3 Fi FC8{ Fi Fc[257] Fc[257] Fi}[16]}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S13081C14  {
  char s13081c14f0;
  char s13081c14f1;
  char s13081c14f2;
  char s13081c14f3;
};
//SIG(-1 S13081C14) C1{ Fc[4]}



static void Test_S13081C14()
{
  {
    init_simple_test("S13081C14");
    S13081C14 lv;
    check2(sizeof(lv), 4, "sizeof(S13081C14)");
    check2(__alignof__(lv), 1, "__alignof__(S13081C14)");
    check_field_offset(lv, s13081c14f0, 0, "S13081C14.s13081c14f0");
    check_field_offset(lv, s13081c14f1, 1, "S13081C14.s13081c14f1");
    check_field_offset(lv, s13081c14f2, 2, "S13081C14.s13081c14f2");
    check_field_offset(lv, s13081c14f3, 3, "S13081C14.s13081c14f3");
  }
}
static Arrange_To_Call_Me vS13081C14(Test_S13081C14, "S13081C14", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C15_nt  {
  int s13081c15f0;
  char s13081c15f1[32];
};
//SIG(-1 S13081C15_nt) C1{ Fi Fc[32]}



//skip512 S13081C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C17  {
  __tsi64 s13081c17f0;
  char s13081c17f1[4097];
  char s13081c17f2[39];
};
//SIG(-1 S13081C17) C1{ FL Fc[4136]}



static void Test_S13081C17()
{
  {
    init_simple_test("S13081C17");
    S13081C17 lv;
    check2(sizeof(lv), 4144, "sizeof(S13081C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13081C17)");
    check_field_offset(lv, s13081c17f0, 0, "S13081C17.s13081c17f0");
    check_field_offset(lv, s13081c17f1, 8, "S13081C17.s13081c17f1");
    check_field_offset(lv, s13081c17f2, 4105, "S13081C17.s13081c17f2");
  }
}
static Arrange_To_Call_Me vS13081C17(Test_S13081C17, "S13081C17", 4144);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C16  {
  ::S13081C17 s13081c16f0;
  int s13081c16f1;
  char s13081c16f2[36];
};
//SIG(-1 S13081C16) C1{ FC2{ FL Fc[4136]} Fi Fc[36]}



static void Test_S13081C16()
{
  {
    init_simple_test("S13081C16");
    S13081C16 lv;
    check2(sizeof(lv), 4184, "sizeof(S13081C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13081C16)");
    check_field_offset(lv, s13081c16f0, 0, "S13081C16.s13081c16f0");
    check_field_offset(lv, s13081c16f1, 4144, "S13081C16.s13081c16f1");
    check_field_offset(lv, s13081c16f2, 4148, "S13081C16.s13081c16f2");
  }
}
static Arrange_To_Call_Me vS13081C16(Test_S13081C16, "S13081C16", 4184);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13081C1  {
  int s13081c1f0[2];
  ::S13081C2 s13081c1f1;
  ::S13081C5 s13081c1f2;
  int s13081c1f3;
  ::S13081C6 s13081c1f4;
  ::S13081C14 s13081c1f5;
  char s13081c1f6;
  ::S13081C15_nt s13081c1f7;
  ::S13081C16 s13081c1f8;
  char s13081c1f9[64];
};
//SIG(1 S13081C1) C1{ Fi[2] FC2{ Fi FC3{ Fp[3] Fc[60] Fi} FC4{ FL Fc[288]} Fi Fc[28]} FC5{ Fi Fp Fc[28]} Fi FU6{ FC7{ BC8{ Fi Fi Fi} Fi Fc[257] Fc[181] Fi Fc[257] Fi Fi} FC9{ BC8 Fi Fc[257] Fc[257] Fi} FC10{ BC8 Fi FC11{ Fi Fc[257] Fc[181] Fi Fc[257] Fi Fi}[16]} FC12{ BC8 Fi FC13{ Fi Fc[257] Fc[257] Fi}[16]}} FC14{ Fc Fc Fc Fc} Fc FC15{ Fi Fc[32]} FC16{ FC17{ FL Fc[4097] Fc[39]} Fi Fc[36]} Fc[64]}



static void Test_S13081C1()
{
  {
    init_simple_test("S13081C1");
    S13081C1 lv;
    check2(sizeof(lv), ABISELECT(16248,16220), "sizeof(S13081C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13081C1)");
    check_field_offset(lv, s13081c1f0, 0, "S13081C1.s13081c1f0");
    check_field_offset(lv, s13081c1f1, 8, "S13081C1.s13081c1f1");
    check_field_offset(lv, s13081c1f2, ABISELECT(432,416), "S13081C1.s13081c1f2");
    check_field_offset(lv, s13081c1f3, ABISELECT(480,452), "S13081C1.s13081c1f3");
    check_field_offset(lv, s13081c1f4, ABISELECT(484,456), "S13081C1.s13081c1f4");
    check_field_offset(lv, s13081c1f5, ABISELECT(11956,11928), "S13081C1.s13081c1f5");
    check_field_offset(lv, s13081c1f6, ABISELECT(11960,11932), "S13081C1.s13081c1f6");
    check_field_offset(lv, s13081c1f7, ABISELECT(11964,11936), "S13081C1.s13081c1f7");
    check_field_offset(lv, s13081c1f8, ABISELECT(12000,11972), "S13081C1.s13081c1f8");
    check_field_offset(lv, s13081c1f9, ABISELECT(16184,16156), "S13081C1.s13081c1f9");
  }
}
static Arrange_To_Call_Me vS13081C1(Test_S13081C1, "S13081C1", ABISELECT(16248,16220));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13080C4  {
  long s13080c4f0;
  char s13080c4f1[288];
};
//SIG(-1 S13080C4) C1{ Fl Fc[288]}



static void Test_S13080C4()
{
  {
    init_simple_test("S13080C4");
    S13080C4 lv;
    check2(sizeof(lv), ABISELECT(296,292), "sizeof(S13080C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13080C4)");
    check_field_offset(lv, s13080c4f0, 0, "S13080C4.s13080c4f0");
    check_field_offset(lv, s13080c4f1, ABISELECT(8,4), "S13080C4.s13080c4f1");
  }
}
static Arrange_To_Call_Me vS13080C4(Test_S13080C4, "S13080C4", ABISELECT(296,292));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13080C2  {
  int s13080c2f0;
  ::S13081C3_nt s13080c2f1;
  ::S13080C4 s13080c2f2;
  int s13080c2f3;
  char s13080c2f4[28];
};
//SIG(-1 S13080C2) C1{ Fi FC2{ Fp[3] Fc[60] Fi} FC3{ Fl Fc[288]} Fi Fc[28]}



static void Test_S13080C2()
{
  {
    init_simple_test("S13080C2");
    S13080C2 lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S13080C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13080C2)");
    check_field_offset(lv, s13080c2f0, 0, "S13080C2.s13080c2f0");
    check_field_offset(lv, s13080c2f1, ABISELECT(8,4), "S13080C2.s13080c2f1");
    check_field_offset(lv, s13080c2f2, ABISELECT(96,80), "S13080C2.s13080c2f2");
    check_field_offset(lv, s13080c2f3, ABISELECT(392,372), "S13080C2.s13080c2f3");
    check_field_offset(lv, s13080c2f4, ABISELECT(396,376), "S13080C2.s13080c2f4");
  }
}
static Arrange_To_Call_Me vS13080C2(Test_S13080C2, "S13080C2", ABISELECT(424,404));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13080C17  {
  long s13080c17f0;
  char s13080c17f1[4097];
  char s13080c17f2[39];
};
//SIG(-1 S13080C17) C1{ Fl Fc[4136]}



static void Test_S13080C17()
{
  {
    init_simple_test("S13080C17");
    S13080C17 lv;
    check2(sizeof(lv), ABISELECT(4144,4140), "sizeof(S13080C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13080C17)");
    check_field_offset(lv, s13080c17f0, 0, "S13080C17.s13080c17f0");
    check_field_offset(lv, s13080c17f1, ABISELECT(8,4), "S13080C17.s13080c17f1");
    check_field_offset(lv, s13080c17f2, ABISELECT(4105,4101), "S13080C17.s13080c17f2");
  }
}
static Arrange_To_Call_Me vS13080C17(Test_S13080C17, "S13080C17", ABISELECT(4144,4140));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13080C16  {
  ::S13080C17 s13080c16f0;
  int s13080c16f1;
  char s13080c16f2[36];
};
//SIG(-1 S13080C16) C1{ FC2{ Fl Fc[4136]} Fi Fc[36]}



static void Test_S13080C16()
{
  {
    init_simple_test("S13080C16");
    S13080C16 lv;
    check2(sizeof(lv), ABISELECT(4184,4180), "sizeof(S13080C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13080C16)");
    check_field_offset(lv, s13080c16f0, 0, "S13080C16.s13080c16f0");
    check_field_offset(lv, s13080c16f1, ABISELECT(4144,4140), "S13080C16.s13080c16f1");
    check_field_offset(lv, s13080c16f2, ABISELECT(4148,4144), "S13080C16.s13080c16f2");
  }
}
static Arrange_To_Call_Me vS13080C16(Test_S13080C16, "S13080C16", ABISELECT(4184,4180));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13080C1  {
  int s13080c1f0[2];
  ::S13080C2 s13080c1f1;
  ::S13081C5 s13080c1f2;
  int s13080c1f3;
  ::S13081C6 s13080c1f4;
  ::S13081C14 s13080c1f5;
  char s13080c1f6;
  ::S13081C15_nt s13080c1f7;
  ::S13080C16 s13080c1f8;
  char s13080c1f9[64];
};
//SIG(1 S13080C1) C1{ Fi[2] FC2{ Fi FC3{ Fp[3] Fc[60] Fi} FC4{ Fl Fc[288]} Fi Fc[28]} FC5{ Fi Fp Fc[28]} Fi FU6{ FC7{ BC8{ Fi Fi Fi} Fi Fc[257] Fc[181] Fi Fc[257] Fi Fi} FC9{ BC8 Fi Fc[257] Fc[257] Fi} FC10{ BC8 Fi FC11{ Fi Fc[257] Fc[181] Fi Fc[257] Fi Fi}[16]} FC12{ BC8 Fi FC13{ Fi Fc[257] Fc[257] Fi}[16]}} FC14{ Fc Fc Fc Fc} Fc FC15{ Fi Fc[32]} FC16{ FC17{ Fl Fc[4097] Fc[39]} Fi Fc[36]} Fc[64]}



static void Test_S13080C1()
{
  {
    init_simple_test("S13080C1");
    S13080C1 lv;
    check2(sizeof(lv), ABISELECT(16248,16212), "sizeof(S13080C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13080C1)");
    check_field_offset(lv, s13080c1f0, 0, "S13080C1.s13080c1f0");
    check_field_offset(lv, s13080c1f1, 8, "S13080C1.s13080c1f1");
    check_field_offset(lv, s13080c1f2, ABISELECT(432,412), "S13080C1.s13080c1f2");
    check_field_offset(lv, s13080c1f3, ABISELECT(480,448), "S13080C1.s13080c1f3");
    check_field_offset(lv, s13080c1f4, ABISELECT(484,452), "S13080C1.s13080c1f4");
    check_field_offset(lv, s13080c1f5, ABISELECT(11956,11924), "S13080C1.s13080c1f5");
    check_field_offset(lv, s13080c1f6, ABISELECT(11960,11928), "S13080C1.s13080c1f6");
    check_field_offset(lv, s13080c1f7, ABISELECT(11964,11932), "S13080C1.s13080c1f7");
    check_field_offset(lv, s13080c1f8, ABISELECT(12000,11968), "S13080C1.s13080c1f8");
    check_field_offset(lv, s13080c1f9, ABISELECT(16184,16148), "S13080C1.s13080c1f9");
  }
}
static Arrange_To_Call_Me vS13080C1(Test_S13080C1, "S13080C1", ABISELECT(16248,16212));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6726C2  {
  int s6726c2f0;
  __tsi64 s6726c2f1;
  void *s6726c2f2[4];
  int s6726c2f3[2];
  void *s6726c2f4;
  ::S3281C4_nt s6726c2f5;
  void *s6726c2f6[2];
  virtual  ~S6726C2(); // _ZN7S6726C2D1Ev
  virtual void  v3(); // _ZN7S6726C22v3Ev
  virtual void  v4(); // _ZN7S6726C22v4Ev
  virtual void  v5(); // _ZN7S6726C22v5Ev
  virtual void  v6(); // _ZN7S6726C22v6Ev
  virtual void  v7(); // _ZN7S6726C22v7Ev
  virtual void  v8(); // _ZN7S6726C22v8Ev
  virtual void  v9(); // _ZN7S6726C22v9Ev
  virtual void  v10(); // _ZN7S6726C23v10Ev
  virtual void  v11(); // _ZN7S6726C23v11Ev
  virtual void  v12(); // _ZN7S6726C23v12Ev
  virtual void  v13(); // _ZN7S6726C23v13Ev
  virtual void  v14(); // _ZN7S6726C23v14Ev
  virtual void  v15(); // _ZN7S6726C23v15Ev
  virtual void  v16(); // _ZN7S6726C23v16Ev
  virtual void  v17(); // _ZN7S6726C23v17Ev
  virtual void  v18(); // _ZN7S6726C23v18Ev
  virtual void  v19(); // _ZN7S6726C23v19Ev
  virtual void  v20(); // _ZN7S6726C23v20Ev
  virtual void  v21(); // _ZN7S6726C23v21Ev
  virtual void  v22(); // _ZN7S6726C23v22Ev
  virtual void  v23(); // _ZN7S6726C23v23Ev
  virtual void  v24(); // _ZN7S6726C23v24Ev
  virtual void  v25(); // _ZN7S6726C23v25Ev
  virtual void  v26(); // _ZN7S6726C23v26Ev
  virtual void  v27(); // _ZN7S6726C23v27Ev
  virtual void  v28(); // _ZN7S6726C23v28Ev
  virtual void  v29(); // _ZN7S6726C23v29Ev
  virtual void  v30(); // _ZN7S6726C23v30Ev
  virtual void  v31(); // _ZN7S6726C23v31Ev
  virtual void  v32(); // _ZN7S6726C23v32Ev
  virtual void  v33(); // _ZN7S6726C23v33Ev
  virtual void  v34(); // _ZN7S6726C23v34Ev
  virtual void  v35(); // _ZN7S6726C23v35Ev
  virtual void  v36(); // _ZN7S6726C23v36Ev
  virtual void  v37(); // _ZN7S6726C23v37Ev
  virtual void  v38(); // _ZN7S6726C23v38Ev
  virtual void  v39(); // _ZN7S6726C23v39Ev
  virtual void  v40(); // _ZN7S6726C23v40Ev
  virtual void  v41(); // _ZN7S6726C23v41Ev
  virtual void  v42(); // _ZN7S6726C23v42Ev
  virtual void  v43(); // _ZN7S6726C23v43Ev
  virtual void  v44(); // _ZN7S6726C23v44Ev
  virtual void  v45(); // _ZN7S6726C23v45Ev
  virtual void  v46(); // _ZN7S6726C23v46Ev
  virtual void  v47(); // _ZN7S6726C23v47Ev
  virtual void  v48(); // _ZN7S6726C23v48Ev
  virtual void  v49(); // _ZN7S6726C23v49Ev
  virtual void  v50(); // _ZN7S6726C23v50Ev
  virtual void  v51(); // _ZN7S6726C23v51Ev
  virtual void  v52(); // _ZN7S6726C23v52Ev
  virtual void  v53(); // _ZN7S6726C23v53Ev
  virtual void  v54(); // _ZN7S6726C23v54Ev
  virtual void  v55(); // _ZN7S6726C23v55Ev
  virtual void  v56(); // _ZN7S6726C23v56Ev
  virtual void  v57(); // _ZN7S6726C23v57Ev
  virtual void  v58(); // _ZN7S6726C23v58Ev
  virtual void  v59(); // _ZN7S6726C23v59Ev
  virtual void  v60(); // _ZN7S6726C23v60Ev
  virtual void  v61(); // _ZN7S6726C23v61Ev
  virtual void  v62(); // _ZN7S6726C23v62Ev
  virtual void  v63(); // _ZN7S6726C23v63Ev
  virtual void  v64(); // _ZN7S6726C23v64Ev
  virtual void  v65(); // _ZN7S6726C23v65Ev
  virtual void  v66(); // _ZN7S6726C23v66Ev
  S6726C2(); // tgen
};
//SIG(-1 S6726C2) 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]}


 S6726C2 ::~S6726C2(){ note_dtor("S6726C2", this);}
void  S6726C2 ::v3(){vfunc_called(this, "_ZN7S6726C22v3Ev");}
void  S6726C2 ::v4(){vfunc_called(this, "_ZN7S6726C22v4Ev");}
void  S6726C2 ::v5(){vfunc_called(this, "_ZN7S6726C22v5Ev");}
void  S6726C2 ::v6(){vfunc_called(this, "_ZN7S6726C22v6Ev");}
void  S6726C2 ::v7(){vfunc_called(this, "_ZN7S6726C22v7Ev");}
void  S6726C2 ::v8(){vfunc_called(this, "_ZN7S6726C22v8Ev");}
void  S6726C2 ::v9(){vfunc_called(this, "_ZN7S6726C22v9Ev");}
void  S6726C2 ::v10(){vfunc_called(this, "_ZN7S6726C23v10Ev");}
void  S6726C2 ::v11(){vfunc_called(this, "_ZN7S6726C23v11Ev");}
void  S6726C2 ::v12(){vfunc_called(this, "_ZN7S6726C23v12Ev");}
void  S6726C2 ::v13(){vfunc_called(this, "_ZN7S6726C23v13Ev");}
void  S6726C2 ::v14(){vfunc_called(this, "_ZN7S6726C23v14Ev");}
void  S6726C2 ::v15(){vfunc_called(this, "_ZN7S6726C23v15Ev");}
void  S6726C2 ::v16(){vfunc_called(this, "_ZN7S6726C23v16Ev");}
void  S6726C2 ::v17(){vfunc_called(this, "_ZN7S6726C23v17Ev");}
void  S6726C2 ::v18(){vfunc_called(this, "_ZN7S6726C23v18Ev");}
void  S6726C2 ::v19(){vfunc_called(this, "_ZN7S6726C23v19Ev");}
void  S6726C2 ::v20(){vfunc_called(this, "_ZN7S6726C23v20Ev");}
void  S6726C2 ::v21(){vfunc_called(this, "_ZN7S6726C23v21Ev");}
void  S6726C2 ::v22(){vfunc_called(this, "_ZN7S6726C23v22Ev");}
void  S6726C2 ::v23(){vfunc_called(this, "_ZN7S6726C23v23Ev");}
void  S6726C2 ::v24(){vfunc_called(this, "_ZN7S6726C23v24Ev");}
void  S6726C2 ::v25(){vfunc_called(this, "_ZN7S6726C23v25Ev");}
void  S6726C2 ::v26(){vfunc_called(this, "_ZN7S6726C23v26Ev");}
void  S6726C2 ::v27(){vfunc_called(this, "_ZN7S6726C23v27Ev");}
void  S6726C2 ::v28(){vfunc_called(this, "_ZN7S6726C23v28Ev");}
void  S6726C2 ::v29(){vfunc_called(this, "_ZN7S6726C23v29Ev");}
void  S6726C2 ::v30(){vfunc_called(this, "_ZN7S6726C23v30Ev");}
void  S6726C2 ::v31(){vfunc_called(this, "_ZN7S6726C23v31Ev");}
void  S6726C2 ::v32(){vfunc_called(this, "_ZN7S6726C23v32Ev");}
void  S6726C2 ::v33(){vfunc_called(this, "_ZN7S6726C23v33Ev");}
void  S6726C2 ::v34(){vfunc_called(this, "_ZN7S6726C23v34Ev");}
void  S6726C2 ::v35(){vfunc_called(this, "_ZN7S6726C23v35Ev");}
void  S6726C2 ::v36(){vfunc_called(this, "_ZN7S6726C23v36Ev");}
void  S6726C2 ::v37(){vfunc_called(this, "_ZN7S6726C23v37Ev");}
void  S6726C2 ::v38(){vfunc_called(this, "_ZN7S6726C23v38Ev");}
void  S6726C2 ::v39(){vfunc_called(this, "_ZN7S6726C23v39Ev");}
void  S6726C2 ::v40(){vfunc_called(this, "_ZN7S6726C23v40Ev");}
void  S6726C2 ::v41(){vfunc_called(this, "_ZN7S6726C23v41Ev");}
void  S6726C2 ::v42(){vfunc_called(this, "_ZN7S6726C23v42Ev");}
void  S6726C2 ::v43(){vfunc_called(this, "_ZN7S6726C23v43Ev");}
void  S6726C2 ::v44(){vfunc_called(this, "_ZN7S6726C23v44Ev");}
void  S6726C2 ::v45(){vfunc_called(this, "_ZN7S6726C23v45Ev");}
void  S6726C2 ::v46(){vfunc_called(this, "_ZN7S6726C23v46Ev");}
void  S6726C2 ::v47(){vfunc_called(this, "_ZN7S6726C23v47Ev");}
void  S6726C2 ::v48(){vfunc_called(this, "_ZN7S6726C23v48Ev");}
void  S6726C2 ::v49(){vfunc_called(this, "_ZN7S6726C23v49Ev");}
void  S6726C2 ::v50(){vfunc_called(this, "_ZN7S6726C23v50Ev");}
void  S6726C2 ::v51(){vfunc_called(this, "_ZN7S6726C23v51Ev");}
void  S6726C2 ::v52(){vfunc_called(this, "_ZN7S6726C23v52Ev");}
void  S6726C2 ::v53(){vfunc_called(this, "_ZN7S6726C23v53Ev");}
void  S6726C2 ::v54(){vfunc_called(this, "_ZN7S6726C23v54Ev");}
void  S6726C2 ::v55(){vfunc_called(this, "_ZN7S6726C23v55Ev");}
void  S6726C2 ::v56(){vfunc_called(this, "_ZN7S6726C23v56Ev");}
void  S6726C2 ::v57(){vfunc_called(this, "_ZN7S6726C23v57Ev");}
void  S6726C2 ::v58(){vfunc_called(this, "_ZN7S6726C23v58Ev");}
void  S6726C2 ::v59(){vfunc_called(this, "_ZN7S6726C23v59Ev");}
void  S6726C2 ::v60(){vfunc_called(this, "_ZN7S6726C23v60Ev");}
void  S6726C2 ::v61(){vfunc_called(this, "_ZN7S6726C23v61Ev");}
void  S6726C2 ::v62(){vfunc_called(this, "_ZN7S6726C23v62Ev");}
void  S6726C2 ::v63(){vfunc_called(this, "_ZN7S6726C23v63Ev");}
void  S6726C2 ::v64(){vfunc_called(this, "_ZN7S6726C23v64Ev");}
void  S6726C2 ::v65(){vfunc_called(this, "_ZN7S6726C23v65Ev");}
void  S6726C2 ::v66(){vfunc_called(this, "_ZN7S6726C23v66Ev");}
S6726C2 ::S6726C2(){ note_ctor("S6726C2", this);} // tgen

static void Test_S6726C2()
{
  extern Class_Descriptor cd_S6726C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6726C2, buf);
    S6726C2 *dp, &lv = *(dp=new (buf) S6726C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6726C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6726C2)");
    check_field_offset(lv, s6726c2f0, ABISELECT(8,4), "S6726C2.s6726c2f0");
    check_field_offset(lv, s6726c2f1, ABISELECT(16,8), "S6726C2.s6726c2f1");
    check_field_offset(lv, s6726c2f2, ABISELECT(24,16), "S6726C2.s6726c2f2");
    check_field_offset(lv, s6726c2f3, ABISELECT(56,32), "S6726C2.s6726c2f3");
    check_field_offset(lv, s6726c2f4, ABISELECT(64,40), "S6726C2.s6726c2f4");
    check_field_offset(lv, s6726c2f5, ABISELECT(72,44), "S6726C2.s6726c2f5");
    check_field_offset(lv, s6726c2f6, ABISELECT(80,52), "S6726C2.s6726c2f6");
    test_class_info(&lv, &cd_S6726C2);
    dp->~S6726C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6726C2(Test_S6726C2, "S6726C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6726C2C1Ev();
extern void _ZN7S6726C2D1Ev();
Name_Map name_map_S6726C2[] = {
  NSPAIR(_ZN7S6726C2C1Ev),
  NSPAIR(_ZN7S6726C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6726C2[];
extern void _ZN7S6726C2D1Ev();
extern void _ZN7S6726C2D0Ev();
extern void _ZN7S6726C22v3Ev();
extern void _ZN7S6726C22v4Ev();
extern void _ZN7S6726C22v5Ev();
extern void _ZN7S6726C22v6Ev();
extern void _ZN7S6726C22v7Ev();
extern void _ZN7S6726C22v8Ev();
extern void _ZN7S6726C22v9Ev();
extern void _ZN7S6726C23v10Ev();
extern void _ZN7S6726C23v11Ev();
extern void _ZN7S6726C23v12Ev();
extern void _ZN7S6726C23v13Ev();
extern void _ZN7S6726C23v14Ev();
extern void _ZN7S6726C23v15Ev();
extern void _ZN7S6726C23v16Ev();
extern void _ZN7S6726C23v17Ev();
extern void _ZN7S6726C23v18Ev();
extern void _ZN7S6726C23v19Ev();
extern void _ZN7S6726C23v20Ev();
extern void _ZN7S6726C23v21Ev();
extern void _ZN7S6726C23v22Ev();
extern void _ZN7S6726C23v23Ev();
extern void _ZN7S6726C23v24Ev();
extern void _ZN7S6726C23v25Ev();
extern void _ZN7S6726C23v26Ev();
extern void _ZN7S6726C23v27Ev();
extern void _ZN7S6726C23v28Ev();
extern void _ZN7S6726C23v29Ev();
extern void _ZN7S6726C23v30Ev();
extern void _ZN7S6726C23v31Ev();
extern void _ZN7S6726C23v32Ev();
extern void _ZN7S6726C23v33Ev();
extern void _ZN7S6726C23v34Ev();
extern void _ZN7S6726C23v35Ev();
extern void _ZN7S6726C23v36Ev();
extern void _ZN7S6726C23v37Ev();
extern void _ZN7S6726C23v38Ev();
extern void _ZN7S6726C23v39Ev();
extern void _ZN7S6726C23v40Ev();
extern void _ZN7S6726C23v41Ev();
extern void _ZN7S6726C23v42Ev();
extern void _ZN7S6726C23v43Ev();
extern void _ZN7S6726C23v44Ev();
extern void _ZN7S6726C23v45Ev();
extern void _ZN7S6726C23v46Ev();
extern void _ZN7S6726C23v47Ev();
extern void _ZN7S6726C23v48Ev();
extern void _ZN7S6726C23v49Ev();
extern void _ZN7S6726C23v50Ev();
extern void _ZN7S6726C23v51Ev();
extern void _ZN7S6726C23v52Ev();
extern void _ZN7S6726C23v53Ev();
extern void _ZN7S6726C23v54Ev();
extern void _ZN7S6726C23v55Ev();
extern void _ZN7S6726C23v56Ev();
extern void _ZN7S6726C23v57Ev();
extern void _ZN7S6726C23v58Ev();
extern void _ZN7S6726C23v59Ev();
extern void _ZN7S6726C23v60Ev();
extern void _ZN7S6726C23v61Ev();
extern void _ZN7S6726C23v62Ev();
extern void _ZN7S6726C23v63Ev();
extern void _ZN7S6726C23v64Ev();
extern void _ZN7S6726C23v65Ev();
extern void _ZN7S6726C23v66Ev();
static  VTBL_ENTRY vtc_S6726C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6726C2[0]),
  (VTBL_ENTRY)&_ZN7S6726C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6726C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v66Ev,
};
extern VTBL_ENTRY _ZTI7S6726C2[];
extern  VTBL_ENTRY _ZTV7S6726C2[];
Class_Descriptor cd_S6726C2 = {  "S6726C2", // class name
  0,0,//no base classes
  &(vtc_S6726C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6726C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6726C2),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  S6726C4_nt  {
  int s6726c4f0[2];
  void  mf6726c4(); // _ZN10S6726C4_nt8mf6726c4Ev
};
//SIG(-1 S6726C4_nt) C1{ m Fi[2]}


void  S6726C4_nt ::mf6726c4(){}

//skip512 S6726C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6726C1  : S6726C2 {
  void *s6726c1f0;
  ::S6726C4_nt s6726c1f1;
  ::S6726C4_nt s6726c1f2;
  ::S15502C13_nt s6726c1f3;
  virtual  ~S6726C1(); // _ZN7S6726C1D1Ev
  virtual void  v1(); // _ZN7S6726C12v1Ev
  virtual void  v2(); // _ZN7S6726C12v2Ev
  S6726C1(); // tgen
};
//SIG(1 S6726C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 Fp FC4{ m Fi[2]} FC4 FC5{ m Fi[4]}}


 S6726C1 ::~S6726C1(){ note_dtor("S6726C1", this);}
void  S6726C1 ::v1(){vfunc_called(this, "_ZN7S6726C12v1Ev");}
void  S6726C1 ::v2(){vfunc_called(this, "_ZN7S6726C12v2Ev");}
S6726C1 ::S6726C1(){ note_ctor("S6726C1", this);} // tgen

static void Test_S6726C1()
{
  extern Class_Descriptor cd_S6726C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,25)];
    init_test(&cd_S6726C1, buf);
    S6726C1 *dp, &lv = *(dp=new (buf) S6726C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,96), "sizeof(S6726C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6726C1)");
    check_base_class_offset(lv, (S6726C2*), 0, "S6726C1");
    check_field_offset(lv, s6726c1f0, ABISELECT(96,60), "S6726C1.s6726c1f0");
    check_field_offset(lv, s6726c1f1, ABISELECT(104,64), "S6726C1.s6726c1f1");
    check_field_offset(lv, s6726c1f2, ABISELECT(112,72), "S6726C1.s6726c1f2");
    check_field_offset(lv, s6726c1f3, ABISELECT(120,80), "S6726C1.s6726c1f3");
    test_class_info(&lv, &cd_S6726C1);
    dp->~S6726C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6726C1(Test_S6726C1, "S6726C1", ABISELECT(136,96));

#else // __cplusplus

extern void _ZN7S6726C1C1Ev();
extern void _ZN7S6726C1D1Ev();
Name_Map name_map_S6726C1[] = {
  NSPAIR(_ZN7S6726C1C1Ev),
  NSPAIR(_ZN7S6726C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6726C2;
extern VTBL_ENTRY _ZTI7S6726C2[];
extern  VTBL_ENTRY _ZTV7S6726C2[];
static Base_Class bases_S6726C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6726C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6726C1[];
extern void _ZN7S6726C1D1Ev();
extern void _ZN7S6726C1D0Ev();
extern void _ZN7S6726C22v3Ev();
extern void _ZN7S6726C22v4Ev();
extern void _ZN7S6726C22v5Ev();
extern void _ZN7S6726C22v6Ev();
extern void _ZN7S6726C22v7Ev();
extern void _ZN7S6726C22v8Ev();
extern void _ZN7S6726C22v9Ev();
extern void _ZN7S6726C23v10Ev();
extern void _ZN7S6726C23v11Ev();
extern void _ZN7S6726C23v12Ev();
extern void _ZN7S6726C23v13Ev();
extern void _ZN7S6726C23v14Ev();
extern void _ZN7S6726C23v15Ev();
extern void _ZN7S6726C23v16Ev();
extern void _ZN7S6726C23v17Ev();
extern void _ZN7S6726C23v18Ev();
extern void _ZN7S6726C23v19Ev();
extern void _ZN7S6726C23v20Ev();
extern void _ZN7S6726C23v21Ev();
extern void _ZN7S6726C23v22Ev();
extern void _ZN7S6726C23v23Ev();
extern void _ZN7S6726C23v24Ev();
extern void _ZN7S6726C23v25Ev();
extern void _ZN7S6726C23v26Ev();
extern void _ZN7S6726C23v27Ev();
extern void _ZN7S6726C23v28Ev();
extern void _ZN7S6726C23v29Ev();
extern void _ZN7S6726C23v30Ev();
extern void _ZN7S6726C23v31Ev();
extern void _ZN7S6726C23v32Ev();
extern void _ZN7S6726C23v33Ev();
extern void _ZN7S6726C23v34Ev();
extern void _ZN7S6726C23v35Ev();
extern void _ZN7S6726C23v36Ev();
extern void _ZN7S6726C23v37Ev();
extern void _ZN7S6726C23v38Ev();
extern void _ZN7S6726C23v39Ev();
extern void _ZN7S6726C23v40Ev();
extern void _ZN7S6726C23v41Ev();
extern void _ZN7S6726C23v42Ev();
extern void _ZN7S6726C23v43Ev();
extern void _ZN7S6726C23v44Ev();
extern void _ZN7S6726C23v45Ev();
extern void _ZN7S6726C23v46Ev();
extern void _ZN7S6726C23v47Ev();
extern void _ZN7S6726C23v48Ev();
extern void _ZN7S6726C23v49Ev();
extern void _ZN7S6726C23v50Ev();
extern void _ZN7S6726C23v51Ev();
extern void _ZN7S6726C23v52Ev();
extern void _ZN7S6726C23v53Ev();
extern void _ZN7S6726C23v54Ev();
extern void _ZN7S6726C23v55Ev();
extern void _ZN7S6726C23v56Ev();
extern void _ZN7S6726C23v57Ev();
extern void _ZN7S6726C23v58Ev();
extern void _ZN7S6726C23v59Ev();
extern void _ZN7S6726C23v60Ev();
extern void _ZN7S6726C23v61Ev();
extern void _ZN7S6726C23v62Ev();
extern void _ZN7S6726C23v63Ev();
extern void _ZN7S6726C23v64Ev();
extern void _ZN7S6726C23v65Ev();
extern void _ZN7S6726C23v66Ev();
extern void _ZN7S6726C12v1Ev();
extern void _ZN7S6726C12v2Ev();
static  VTBL_ENTRY vtc_S6726C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6726C1[0]),
  (VTBL_ENTRY)&_ZN7S6726C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6726C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6726C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6726C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6726C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6726C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6726C1[];
extern  VTBL_ENTRY _ZTV7S6726C1[];
Class_Descriptor cd_S6726C1 = {  "S6726C1", // class name
  bases_S6726C1, 1,
  &(vtc_S6726C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,96), // object size
  NSPAIRA(_ZTI7S6726C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6726C1),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C4  {
  virtual void  v9(); // _ZN8S21105C42v9Ev
  virtual void  v10(); // _ZN8S21105C43v10Ev
  virtual void  v11(); // _ZN8S21105C43v11Ev
  virtual void  v12(); // _ZN8S21105C43v12Ev
  ~S21105C4(); // tgen
  S21105C4(); // tgen
};
//SIG(-1 S21105C4) C1{ v1 v2 v3 v4}


void  S21105C4 ::v9(){vfunc_called(this, "_ZN8S21105C42v9Ev");}
void  S21105C4 ::v10(){vfunc_called(this, "_ZN8S21105C43v10Ev");}
void  S21105C4 ::v11(){vfunc_called(this, "_ZN8S21105C43v11Ev");}
void  S21105C4 ::v12(){vfunc_called(this, "_ZN8S21105C43v12Ev");}
S21105C4 ::~S21105C4(){ note_dtor("S21105C4", this);} // tgen
S21105C4 ::S21105C4(){ note_ctor("S21105C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21105C4C1Ev();
extern void _ZN8S21105C4D1Ev();
Name_Map name_map_S21105C4[] = {
  NSPAIR(_ZN8S21105C4C1Ev),
  NSPAIR(_ZN8S21105C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21105C4[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
static  VTBL_ENTRY vtc_S21105C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C4[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
Class_Descriptor cd_S21105C4 = {  "S21105C4", // class name
  0,0,//no base classes
  &(vtc_S21105C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21105C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21105C4),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  S21105C5  : virtual S21105C4 {
  virtual void  v13(); // _ZN8S21105C53v13Ev
  virtual void  v14(); // _ZN8S21105C53v14Ev
  virtual void  v15(); // _ZN8S21105C53v15Ev
  ~S21105C5(); // tgen
  S21105C5(); // tgen
};
//SIG(-1 S21105C5) C1{ VBC2{ v4 v5 v6 v7} v1 v2 v3}


void  S21105C5 ::v13(){vfunc_called(this, "_ZN8S21105C53v13Ev");}
void  S21105C5 ::v14(){vfunc_called(this, "_ZN8S21105C53v14Ev");}
void  S21105C5 ::v15(){vfunc_called(this, "_ZN8S21105C53v15Ev");}
S21105C5 ::~S21105C5(){ note_dtor("S21105C5", this);} // tgen
S21105C5 ::S21105C5(){ note_ctor("S21105C5", this);} // tgen

static void Test_S21105C5()
{
  extern Class_Descriptor cd_S21105C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21105C5, buf);
    S21105C5 *dp, &lv = *(dp=new (buf) S21105C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21105C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C5)");
    check_base_class_offset(lv, (S21105C4*), 0, "S21105C5");
    test_class_info(&lv, &cd_S21105C5);
    dp->~S21105C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C5(Test_S21105C5, "S21105C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21105C5C1Ev();
extern void _ZN8S21105C5D1Ev();
Name_Map name_map_S21105C5[] = {
  NSPAIR(_ZN8S21105C5C1Ev),
  NSPAIR(_ZN8S21105C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
static Base_Class bases_S21105C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C4,    0, //bcp->offset
    -1, //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 _ZTI8S21105C5[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY vtc_S21105C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C5[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern VTBL_ENTRY _ZTV8S21105C5[];
static  VTT_ENTRY vtt_S21105C5[] = {
  {&(_ZTV8S21105C5[7]),  7,14},
  {&(_ZTV8S21105C5[7]),  7,14},
};
extern VTBL_ENTRY _ZTI8S21105C5[];
extern  VTBL_ENTRY _ZTV8S21105C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C5[];
Class_Descriptor cd_S21105C5 = {  "S21105C5", // class name
  bases_S21105C5, 1,
  &(vtc_S21105C5[0]), // expected_vtbl_contents
  &(vtt_S21105C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21105C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21105C5),14, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21105C5),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  S21105C7  {
  int s21105c7f0;
  virtual  ~S21105C7(); // _ZN8S21105C7D1Ev
  virtual void  v16(); // _ZN8S21105C73v16Ev
  virtual void  v17(); // _ZN8S21105C73v17Ev
  virtual void  v18(); // _ZN8S21105C73v18Ev
  virtual void  v19(); // _ZN8S21105C73v19Ev
  S21105C7(); // tgen
};
//SIG(-1 S21105C7) C1{ vd v1 v2 v3 v4 Fi}


 S21105C7 ::~S21105C7(){ note_dtor("S21105C7", this);}
void  S21105C7 ::v16(){vfunc_called(this, "_ZN8S21105C73v16Ev");}
void  S21105C7 ::v17(){vfunc_called(this, "_ZN8S21105C73v17Ev");}
void  S21105C7 ::v18(){vfunc_called(this, "_ZN8S21105C73v18Ev");}
void  S21105C7 ::v19(){vfunc_called(this, "_ZN8S21105C73v19Ev");}
S21105C7 ::S21105C7(){ note_ctor("S21105C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S21105C7C1Ev();
extern void _ZN8S21105C7D1Ev();
Name_Map name_map_S21105C7[] = {
  NSPAIR(_ZN8S21105C7C1Ev),
  NSPAIR(_ZN8S21105C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21105C7[];
extern void _ZN8S21105C7D1Ev();
extern void _ZN8S21105C7D0Ev();
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY vtc_S21105C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C7[0]),
  (VTBL_ENTRY)&_ZN8S21105C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
Class_Descriptor cd_S21105C7 = {  "S21105C7", // class name
  0,0,//no base classes
  &(vtc_S21105C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21105C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21105C7),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  S21105C6  : virtual S21105C7 {
  __tsi64 s21105c6f0;
  int s21105c6f1;
  virtual void  v20(); // _ZN8S21105C63v20Ev
  virtual void  v21(); // _ZN8S21105C63v21Ev
  virtual void  v22(); // _ZN8S21105C63v22Ev
  virtual void  v23(); // _ZN8S21105C63v23Ev
  virtual void  v24(); // _ZN8S21105C63v24Ev
  virtual void  v25(); // _ZN8S21105C63v25Ev
  virtual void  v26(); // _ZN8S21105C63v26Ev
  ~S21105C6(); // tgen
  S21105C6(); // tgen
};
//SIG(-1 S21105C6) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S21105C6 ::v20(){vfunc_called(this, "_ZN8S21105C63v20Ev");}
void  S21105C6 ::v21(){vfunc_called(this, "_ZN8S21105C63v21Ev");}
void  S21105C6 ::v22(){vfunc_called(this, "_ZN8S21105C63v22Ev");}
void  S21105C6 ::v23(){vfunc_called(this, "_ZN8S21105C63v23Ev");}
void  S21105C6 ::v24(){vfunc_called(this, "_ZN8S21105C63v24Ev");}
void  S21105C6 ::v25(){vfunc_called(this, "_ZN8S21105C63v25Ev");}
void  S21105C6 ::v26(){vfunc_called(this, "_ZN8S21105C63v26Ev");}
S21105C6 ::~S21105C6(){ note_dtor("S21105C6", this);} // tgen
S21105C6 ::S21105C6(){ note_ctor("S21105C6", this);} // tgen

static void Test_S21105C6()
{
  extern Class_Descriptor cd_S21105C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S21105C6, buf);
    S21105C6 *dp, &lv = *(dp=new (buf) S21105C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S21105C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C6)");
    check_base_class_offset(lv, (S21105C7*), ABISELECT(24,16), "S21105C6");
    check_field_offset(lv, s21105c6f0, ABISELECT(8,4), "S21105C6.s21105c6f0");
    check_field_offset(lv, s21105c6f1, ABISELECT(16,12), "S21105C6.s21105c6f1");
    test_class_info(&lv, &cd_S21105C6);
    dp->~S21105C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C6(Test_S21105C6, "S21105C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S21105C6C1Ev();
extern void _ZN8S21105C6D1Ev();
Name_Map name_map_S21105C6[] = {
  NSPAIR(_ZN8S21105C6C1Ev),
  NSPAIR(_ZN8S21105C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C7;
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
static Base_Class bases_S21105C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C7,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI8S21105C6[];
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void _ZN8S21105C6D1Ev();
extern void _ZN8S21105C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY vtc_S21105C6[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern VTBL_ENTRY _ZTV8S21105C6[];
static  VTT_ENTRY vtt_S21105C6[] = {
  {&(_ZTV8S21105C6[3]),  3,25},
  {&(_ZTV8S21105C6[19]),  19,25},
};
extern VTBL_ENTRY _ZTI8S21105C6[];
extern  VTBL_ENTRY _ZTV8S21105C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C6[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21105C6 = {  "S21105C6", // class name
  bases_S21105C6, 1,
  &(vtc_S21105C6[0]), // expected_vtbl_contents
  &(vtt_S21105C6[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S21105C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21105C6),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21105C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C8  : S21105C4 {
  virtual  ~S21105C8(); // _ZN8S21105C8D1Ev
  virtual void  v27(); // _ZN8S21105C83v27Ev
  S21105C8(); // tgen
};
//SIG(-1 S21105C8) C1{ BC2{ v2 v3 v4 v5} vd v1}


 S21105C8 ::~S21105C8(){ note_dtor("S21105C8", this);}
void  S21105C8 ::v27(){vfunc_called(this, "_ZN8S21105C83v27Ev");}
S21105C8 ::S21105C8(){ note_ctor("S21105C8", this);} // tgen

static void Test_S21105C8()
{
  extern Class_Descriptor cd_S21105C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21105C8, buf);
    S21105C8 *dp, &lv = *(dp=new (buf) S21105C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21105C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C8)");
    check_base_class_offset(lv, (S21105C4*), 0, "S21105C8");
    test_class_info(&lv, &cd_S21105C8);
    dp->~S21105C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C8(Test_S21105C8, "S21105C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21105C8C1Ev();
extern void _ZN8S21105C8D1Ev();
Name_Map name_map_S21105C8[] = {
  NSPAIR(_ZN8S21105C8C1Ev),
  NSPAIR(_ZN8S21105C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
static Base_Class bases_S21105C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21105C8[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C8D1Ev();
extern void _ZN8S21105C8D0Ev();
extern void _ZN8S21105C83v27Ev();
static  VTBL_ENTRY vtc_S21105C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C8[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C8D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
};
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
Class_Descriptor cd_S21105C8 = {  "S21105C8", // class name
  bases_S21105C8, 1,
  &(vtc_S21105C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21105C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21105C8),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C9  : virtual S21105C6 {
  ::S7688C10 s21105c9f0;
  virtual  ~S21105C9(); // _ZN8S21105C9D2Ev
  virtual void  v28(); // _ZN8S21105C93v28Ev
  virtual void  v29(); // _ZN8S21105C93v29Ev
  virtual void  v30(); // _ZN8S21105C93v30Ev
  virtual void  v31(); // _ZN8S21105C93v31Ev
  virtual void  v32(); // _ZN8S21105C93v32Ev
  virtual void  v33(); // _ZN8S21105C93v33Ev
  virtual void  v34(); // _ZN8S21105C93v34Ev
  virtual void  v35(); // _ZN8S21105C93v35Ev
  virtual void  v36(); // _ZN8S21105C93v36Ev
  S21105C9(); // tgen
};
//SIG(-1 S21105C9) C1{ VBC2{ VBC3{ vd v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 FL Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ vd m Fp[9]}}


 S21105C9 ::~S21105C9(){ note_dtor("S21105C9", this);}
void  S21105C9 ::v28(){vfunc_called(this, "_ZN8S21105C93v28Ev");}
void  S21105C9 ::v29(){vfunc_called(this, "_ZN8S21105C93v29Ev");}
void  S21105C9 ::v30(){vfunc_called(this, "_ZN8S21105C93v30Ev");}
void  S21105C9 ::v31(){vfunc_called(this, "_ZN8S21105C93v31Ev");}
void  S21105C9 ::v32(){vfunc_called(this, "_ZN8S21105C93v32Ev");}
void  S21105C9 ::v33(){vfunc_called(this, "_ZN8S21105C93v33Ev");}
void  S21105C9 ::v34(){vfunc_called(this, "_ZN8S21105C93v34Ev");}
void  S21105C9 ::v35(){vfunc_called(this, "_ZN8S21105C93v35Ev");}
void  S21105C9 ::v36(){vfunc_called(this, "_ZN8S21105C93v36Ev");}
S21105C9 ::S21105C9(){ note_ctor("S21105C9", this);} // tgen

static void Test_S21105C9()
{
  extern Class_Descriptor cd_S21105C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S21105C9, buf);
    S21105C9 *dp, &lv = *(dp=new (buf) S21105C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S21105C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C9)");
    check_base_class_offset(lv, (S21105C7*)(S21105C6*), ABISELECT(112,60), "S21105C9");
    check_base_class_offset(lv, (S21105C6*), ABISELECT(88,44), "S21105C9");
    check_field_offset(lv, s21105c9f0, ABISELECT(8,4), "S21105C9.s21105c9f0");
    test_class_info(&lv, &cd_S21105C9);
    dp->~S21105C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C9(Test_S21105C9, "S21105C9", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S21105C9C1Ev();
extern void _ZN8S21105C9D2Ev();
Name_Map name_map_S21105C9[] = {
  NSPAIR(_ZN8S21105C9C1Ev),
  NSPAIR(_ZN8S21105C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C7;
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
extern Class_Descriptor cd_S21105C6;
extern VTBL_ENTRY _ZTI8S21105C6[];
extern  VTBL_ENTRY _ZTV8S21105C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C6[];
static Base_Class bases_S21105C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C7,    ABISELECT(112,60), //bcp->offset
    35, //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
    1, //immediately_derived
  0, 1},
  {&cd_S21105C6,    ABISELECT(88,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //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 _ZTI8S21105C9[];
extern void _ZN8S21105C9D1Ev();
extern void _ZN8S21105C9D0Ev();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S21105C9D1Ev,_ZThn44_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S21105C9D0Ev,_ZThn44_N8S21105C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21105C9D1Ev,_ZThn60_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21105C9D0Ev,_ZThn60_N8S21105C9D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY vtc_S21105C9[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern VTBL_ENTRY _ZTV8S21105C9[];
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void _ZN8S21105C6D1Ev();
extern void _ZN8S21105C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C6__8S21105C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
static  VTT_ENTRY vtt_S21105C9[] = {
  {&(_ZTV8S21105C9[4]),  4,48},
  {&(_ZTV8S21105C9[26]),  26,48},
  {&(_ZTV8S21105C9[42]),  42,48},
  {&(_tg__ZTV8S21105C6__8S21105C9[3]),  3,12},
  {&(_tg__ZTV8S21105C7__8S21105C6__8S21105C9[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S21105C9[];
extern  VTBL_ENTRY _ZTV8S21105C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C9[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21105C9D0Ev,_ZThn60_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21105C9D1Ev,_ZThn60_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21105C9D0Ev,_ZThn44_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21105C9D1Ev,_ZThn44_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21105C9 = {  "S21105C9", // class name
  bases_S21105C9, 2,
  &(vtc_S21105C9[0]), // expected_vtbl_contents
  &(vtt_S21105C9[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S21105C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21105C9),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21105C9),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C3  : virtual S21105C4 , virtual S21105C5 , virtual S21105C6 , S21105C8 , S21105C9 {
  int s21105c3f0;
  virtual  ~S21105C3(); // _ZN8S21105C3D2Ev
  virtual void  v37(); // _ZN8S21105C33v37Ev
  virtual void  v38(); // _ZN8S21105C33v38Ev
  virtual void  v39(); // _ZN8S21105C33v39Ev
  virtual void  v40(); // _ZN8S21105C33v40Ev
  virtual void  v41(); // _ZN8S21105C33v41Ev
  virtual void  v42(); // _ZN8S21105C33v42Ev
  virtual void  v43(); // _ZN8S21105C33v43Ev
  S21105C3(); // tgen
};
//SIG(-1 S21105C3) C1{ VBC2{ v8 v9 v10 v11} VBC3{ VBC2 v12 v13 v14} VBC4{ VBC5{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC6{ BC2 vd v26} BC7{ VBC4 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC8{ vd m Fp[9]}} vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S21105C3 ::~S21105C3(){ note_dtor("S21105C3", this);}
void  S21105C3 ::v37(){vfunc_called(this, "_ZN8S21105C33v37Ev");}
void  S21105C3 ::v38(){vfunc_called(this, "_ZN8S21105C33v38Ev");}
void  S21105C3 ::v39(){vfunc_called(this, "_ZN8S21105C33v39Ev");}
void  S21105C3 ::v40(){vfunc_called(this, "_ZN8S21105C33v40Ev");}
void  S21105C3 ::v41(){vfunc_called(this, "_ZN8S21105C33v41Ev");}
void  S21105C3 ::v42(){vfunc_called(this, "_ZN8S21105C33v42Ev");}
void  S21105C3 ::v43(){vfunc_called(this, "_ZN8S21105C33v43Ev");}
S21105C3 ::S21105C3(){ note_ctor("S21105C3", this);} // tgen

static void Test_S21105C3()
{
  extern Class_Descriptor cd_S21105C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S21105C3, buf);
    S21105C3 *dp, &lv = *(dp=new (buf) S21105C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S21105C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C3)");
    /*is_ambiguous_... S21105C3::S21105C4 */ AMB_check_base_class_offset(lv, (S21105C4*), ABISELECT(104,52), "S21105C3");
    check_base_class_offset(lv, (S21105C4*)(S21105C5*), ABISELECT(104,52), "S21105C3");
    check_base_class_offset(lv, (S21105C5*), ABISELECT(104,52), "S21105C3");
    check_base_class_offset(lv, (S21105C7*)(S21105C6*), ABISELECT(136,72), "S21105C3");
    check_base_class_offset(lv, (S21105C6*), ABISELECT(112,56), "S21105C3");
    check_base_class_offset(lv, (S21105C6*)(S21105C9*), ABISELECT(112,56), "S21105C3");
    check_base_class_offset(lv, (S21105C4*)(S21105C8*), 0, "S21105C3");
    check_base_class_offset(lv, (S21105C8*), 0, "S21105C3");
    check_base_class_offset(lv, (S21105C9*), ABISELECT(8,4), "S21105C3");
    check_field_offset(lv, s21105c3f0, ABISELECT(96,48), "S21105C3.s21105c3f0");
    test_class_info(&lv, &cd_S21105C3);
    dp->~S21105C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C3(Test_S21105C3, "S21105C3", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN8S21105C3C1Ev();
extern void _ZN8S21105C3D2Ev();
Name_Map name_map_S21105C3[] = {
  NSPAIR(_ZN8S21105C3C1Ev),
  NSPAIR(_ZN8S21105C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C5;
extern VTBL_ENTRY _ZTI8S21105C5[];
extern  VTBL_ENTRY _ZTV8S21105C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C5[];
extern Class_Descriptor cd_S21105C7;
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
extern Class_Descriptor cd_S21105C6;
extern VTBL_ENTRY _ZTI8S21105C6[];
extern  VTBL_ENTRY _ZTV8S21105C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C6[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C8;
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
extern Class_Descriptor cd_S21105C9;
extern VTBL_ENTRY _ZTI8S21105C9[];
extern  VTBL_ENTRY _ZTV8S21105C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C9[];
static Base_Class bases_S21105C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C4,    ABISELECT(104,52), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21105C5,    ABISELECT(104,52), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S21105C7,    ABISELECT(136,72), //bcp->offset
    72, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21105C6,    ABISELECT(112,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21105C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21105C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21105C9,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI8S21105C3[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C3D1Ev();
extern void _ZN8S21105C3D0Ev();
extern void _ZN8S21105C83v27Ev();
extern void _ZN8S21105C33v37Ev();
extern void _ZN8S21105C33v38Ev();
extern void _ZN8S21105C33v39Ev();
extern void _ZN8S21105C33v40Ev();
extern void _ZN8S21105C33v41Ev();
extern void _ZN8S21105C33v42Ev();
extern void _ZN8S21105C33v43Ev();
extern void ABISELECT(_ZThn8_N8S21105C3D1Ev,_ZThn4_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S21105C3D0Ev,_ZThn4_N8S21105C3D0Ev)();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21105C3D1Ev,_ZThn56_N8S21105C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21105C3D0Ev,_ZThn56_N8S21105C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S21105C3D1Ev,_ZThn72_N8S21105C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S21105C3D0Ev,_ZThn72_N8S21105C3D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY vtc_S21105C3[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v43Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S21105C3D1Ev,_ZThn4_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S21105C3D0Ev,_ZThn4_N8S21105C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern VTBL_ENTRY _ZTV8S21105C3[];
extern void _ZN8S21105C9D1Ev();
extern void _ZN8S21105C9D0Ev();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C9__8S21105C3[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S21105C9D1Ev,_ZThn52_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S21105C9D0Ev,_ZThn52_N8S21105C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C9__8S21105C3[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21105C9D1Ev,_ZThn68_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21105C9D0Ev,_ZThn68_N8S21105C9D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C9__8S21105C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__8S21105C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C5[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void _ZN8S21105C6D1Ev();
extern void _ZN8S21105C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C6__8S21105C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
static  VTT_ENTRY vtt_S21105C3[] = {
  {&(_ZTV8S21105C3[6]),  6,85},
  {&(_tg__ZTV8S21105C9__8S21105C3[4]),  4,15},
  {&(_tg__ZTV8S21105C6__8S21105C9__8S21105C3[11]),  11,20},
  {&(_tg__ZTV8S21105C7__8S21105C9__8S21105C3[7]),  7,13},
  {&(_ZTV8S21105C3[45]),  45,85},
  {&(_ZTV8S21105C3[45]),  45,85},
  {&(_ZTV8S21105C3[63]),  63,85},
  {&(_ZTV8S21105C3[79]),  79,85},
  {&(_ZTV8S21105C3[24]),  24,85},
  {&(_tg__ZTV8S21105C5__8S21105C3[7]),  7,14},
  {&(_tg__ZTV8S21105C5__8S21105C3[7]),  7,14},
  {&(_tg__ZTV8S21105C6__8S21105C3[3]),  3,12},
  {&(_tg__ZTV8S21105C7__8S21105C6__8S21105C3[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S21105C3[];
extern  VTBL_ENTRY _ZTV8S21105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C3[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C9D0Ev,_ZThn68_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C9D1Ev,_ZThn68_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21105C9D0Ev,_ZThn52_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21105C9D1Ev,_ZThn52_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21105C3D0Ev,_ZThn72_N8S21105C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21105C3D1Ev,_ZThn72_N8S21105C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21105C3D0Ev,_ZThn56_N8S21105C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21105C3D1Ev,_ZThn56_N8S21105C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21105C3 = {  "S21105C3", // class name
  bases_S21105C3, 7,
  &(vtc_S21105C3[0]), // expected_vtbl_contents
  &(vtt_S21105C3[0]), // expected_vtt_contents
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI8S21105C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21105C3),85, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21105C3),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C11  : virtual S21105C8 , virtual S7688C10 , virtual S21105C6 , virtual S21105C5 {
  virtual  ~S21105C11(); // _ZN9S21105C11D2Ev
  virtual void  v44(); // _ZN9S21105C113v44Ev
  virtual void  v45(); // _ZN9S21105C113v45Ev
  S21105C11(); // tgen
};
//SIG(-1 S21105C11) C1{ VBC2{ BC3{ v3 v4 v5 v6} vd v7} VBC4{ vd m Fp[9]} VBC5{ VBC6{ vd v8 v9 v10 v11 Fi} v12 v13 v14 v15 v16 v17 v18 FL Fi} VBC7{ VBC3 v19 v20 v21} vd v1 v2}


 S21105C11 ::~S21105C11(){ note_dtor("S21105C11", this);}
void  S21105C11 ::v44(){vfunc_called(this, "_ZN9S21105C113v44Ev");}
void  S21105C11 ::v45(){vfunc_called(this, "_ZN9S21105C113v45Ev");}
S21105C11 ::S21105C11(){ note_ctor("S21105C11", this);} // tgen

static void Test_S21105C11()
{
  extern Class_Descriptor cd_S21105C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S21105C11, buf);
    S21105C11 *dp, &lv = *(dp=new (buf) S21105C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S21105C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C11)");
    check_base_class_offset(lv, (S21105C4*)(S21105C8*), 0, "S21105C11");
    check_base_class_offset(lv, (S21105C8*), 0, "S21105C11");
    check_base_class_offset(lv, (S7688C10*), ABISELECT(8,4), "S21105C11");
    check_base_class_offset(lv, (S21105C7*)(S21105C6*), ABISELECT(112,60), "S21105C11");
    check_base_class_offset(lv, (S21105C6*), ABISELECT(88,44), "S21105C11");
    check_base_class_offset(lv, (S21105C4*)(S21105C5*), ABISELECT(128,68), "S21105C11");
    check_base_class_offset(lv, (S21105C5*), ABISELECT(128,68), "S21105C11");
    test_class_info(&lv, &cd_S21105C11);
    dp->~S21105C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C11(Test_S21105C11, "S21105C11", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN9S21105C11C1Ev();
extern void _ZN9S21105C11D2Ev();
Name_Map name_map_S21105C11[] = {
  NSPAIR(_ZN9S21105C11C1Ev),
  NSPAIR(_ZN9S21105C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C8;
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S21105C7;
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
extern Class_Descriptor cd_S21105C6;
extern VTBL_ENTRY _ZTI8S21105C6[];
extern  VTBL_ENTRY _ZTV8S21105C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C6[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C5;
extern VTBL_ENTRY _ZTI8S21105C5[];
extern  VTBL_ENTRY _ZTV8S21105C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C5[];
static Base_Class bases_S21105C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21105C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7688C10,    ABISELECT(8,4), //bcp->offset
    23, //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_S21105C7,    ABISELECT(112,60), //bcp->offset
    48, //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
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21105C6,    ABISELECT(88,44), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21105C4,    ABISELECT(128,68), //bcp->offset
    -1, //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
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21105C5,    ABISELECT(128,68), //bcp->offset
    61, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21105C11[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN9S21105C11D1Ev();
extern void _ZN9S21105C11D0Ev();
extern void _ZN8S21105C83v27Ev();
extern void _ZN9S21105C113v44Ev();
extern void _ZN9S21105C113v45Ev();
extern void ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S21105C11D1Ev,_ZThn4_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S21105C11D0Ev,_ZThn4_N9S21105C11D0Ev)() __attribute__((weak));
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S21105C11D1Ev,_ZThn44_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S21105C11D0Ev,_ZThn44_N9S21105C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21105C11D1Ev,_ZThn60_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21105C11D0Ev,_ZThn60_N9S21105C11D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY vtc_S21105C11[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(112,60),
  ABISELECT(88,44),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN9S21105C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21105C11D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v44Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v45Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev),
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern VTBL_ENTRY _ZTV9S21105C11[];
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void _ZN8S21105C6D1Ev();
extern void _ZN8S21105C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C6__9S21105C11[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C6__9S21105C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__9S21105C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C5[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
static  VTT_ENTRY vtt_S21105C11[] = {
  {&(_ZTV9S21105C11[14]),  14,78},
  {&(_ZTV9S21105C11[14]),  14,78},
  {&(_ZTV9S21105C11[26]),  26,78},
  {&(_ZTV9S21105C11[39]),  39,78},
  {&(_ZTV9S21105C11[55]),  55,78},
  {&(_ZTV9S21105C11[71]),  71,78},
  {&(_ZTV9S21105C11[71]),  71,78},
  {&(_tg__ZTV8S21105C6__9S21105C11[3]),  3,12},
  {&(_tg__ZTV8S21105C7__8S21105C6__9S21105C11[7]),  7,13},
  {&(_tg__ZTV8S21105C5__9S21105C11[7]),  7,14},
  {&(_tg__ZTV8S21105C5__9S21105C11[7]),  7,14},
};
extern VTBL_ENTRY _ZTI9S21105C11[];
extern  VTBL_ENTRY _ZTV9S21105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21105C11[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21105C11D0Ev,_ZThn44_N9S21105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21105C11D1Ev,_ZThn44_N9S21105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21105C11D0Ev,_ZThn60_N9S21105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21105C11D0Ev,_ZThn4_N9S21105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21105C11D1Ev,_ZThn60_N9S21105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21105C11D1Ev,_ZThn4_N9S21105C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21105C11 = {  "S21105C11", // class name
  bases_S21105C11, 7,
  &(vtc_S21105C11[0]), // expected_vtbl_contents
  &(vtt_S21105C11[0]), // expected_vtt_contents
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI9S21105C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21105C11),78, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21105C11),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C2  : virtual S21105C3 , S21105C4 , S21105C11 {
  int s21105c2f0;
  virtual void  v46(); // _ZN8S21105C23v46Ev
  virtual void  v47(); // _ZN8S21105C23v47Ev
  virtual void  v48(); // _ZN8S21105C23v48Ev
  virtual void  v49(); // _ZN8S21105C23v49Ev
  virtual void  v50(); // _ZN8S21105C23v50Ev
  virtual void  v51(); // _ZN8S21105C23v51Ev
  virtual void  v52(); // _ZN8S21105C23v52Ev
  ~S21105C2(); // tgen
  S21105C2(); // tgen
};
//SIG(-1 S21105C2) C1{ VBC2{ VBC3{ v8 v9 v10 v11} VBC4{ VBC3 v12 v13 v14} VBC5{ VBC6{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC7{ BC3 vd v26} BC8{ VBC5 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC9{ vd m Fp[9]}} vd v36 v37 v38 v39 v40 v41 v42 Fi} BC3 BC10{ VBC7 VBC9 VBC5 VBC4 vd v43 v44} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S21105C2 ::v46(){vfunc_called(this, "_ZN8S21105C23v46Ev");}
void  S21105C2 ::v47(){vfunc_called(this, "_ZN8S21105C23v47Ev");}
void  S21105C2 ::v48(){vfunc_called(this, "_ZN8S21105C23v48Ev");}
void  S21105C2 ::v49(){vfunc_called(this, "_ZN8S21105C23v49Ev");}
void  S21105C2 ::v50(){vfunc_called(this, "_ZN8S21105C23v50Ev");}
void  S21105C2 ::v51(){vfunc_called(this, "_ZN8S21105C23v51Ev");}
void  S21105C2 ::v52(){vfunc_called(this, "_ZN8S21105C23v52Ev");}
S21105C2 ::~S21105C2(){ note_dtor("S21105C2", this);} // tgen
S21105C2 ::S21105C2(){ note_ctor("S21105C2", this);} // tgen

static void Test_S21105C2()
{
  extern Class_Descriptor cd_S21105C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,34)];
    init_test(&cd_S21105C2, buf);
    S21105C2 *dp, &lv = *(dp=new (buf) S21105C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S21105C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C2)");
    /*is_ambiguous_... S21105C3::S21105C4 */ AMB_check_base_class_offset(lv, (S21105C4*)(S21105C3*), ABISELECT(128,64), "S21105C2");
    check_base_class_offset(lv, (S21105C4*)(S21105C5*), ABISELECT(128,64), "S21105C2");
    check_base_class_offset(lv, (S21105C5*)(S21105C3*), ABISELECT(128,64), "S21105C2");
    check_base_class_offset(lv, (S21105C5*)(S21105C11*), ABISELECT(128,64), "S21105C2");
    check_base_class_offset(lv, (S21105C7*)(S21105C6*), ABISELECT(160,84), "S21105C2");
    check_base_class_offset(lv, (S21105C6*)(S21105C3*), ABISELECT(136,68), "S21105C2");
    check_base_class_offset(lv, (S21105C6*)(S21105C9*)(S21105C3*), ABISELECT(136,68), "S21105C2");
    check_base_class_offset(lv, (S21105C6*)(S21105C11*), ABISELECT(136,68), "S21105C2");
    check_base_class_offset(lv, (S21105C4*)(S21105C8*)(S21105C3*), ABISELECT(24,12), "S21105C2");
    check_base_class_offset(lv, (S21105C8*)(S21105C3*), ABISELECT(24,12), "S21105C2");
    check_base_class_offset(lv, (S21105C9*)(S21105C3*), ABISELECT(32,16), "S21105C2");
    check_base_class_offset(lv, (S21105C3*), ABISELECT(24,12), "S21105C2");
    /*is_ambiguous_... S21105C2::S21105C4 */ AMB_check_base_class_offset(lv, (S21105C4*), 0, "S21105C2");
    /*is_ambiguous_... S21105C2::S21105C8 */ AMB_check_base_class_offset(lv, (S21105C4*)(S21105C8*), ABISELECT(8,4), "S21105C2");
    check_base_class_offset(lv, (S21105C8*)(S21105C11*), ABISELECT(8,4), "S21105C2");
    check_base_class_offset(lv, (S7688C10*)(S21105C11*), ABISELECT(176,92), "S21105C2");
    check_base_class_offset(lv, (S21105C11*), ABISELECT(8,4), "S21105C2");
    check_field_offset(lv, s21105c2f0, ABISELECT(16,8), "S21105C2.s21105c2f0");
    test_class_info(&lv, &cd_S21105C2);
    dp->~S21105C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C2(Test_S21105C2, "S21105C2", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN8S21105C2C1Ev();
extern void _ZN8S21105C2D1Ev();
Name_Map name_map_S21105C2[] = {
  NSPAIR(_ZN8S21105C2C1Ev),
  NSPAIR(_ZN8S21105C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C5;
extern VTBL_ENTRY _ZTI8S21105C5[];
extern  VTBL_ENTRY _ZTV8S21105C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C5[];
extern Class_Descriptor cd_S21105C7;
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
extern Class_Descriptor cd_S21105C6;
extern VTBL_ENTRY _ZTI8S21105C6[];
extern  VTBL_ENTRY _ZTV8S21105C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C6[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C8;
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
extern Class_Descriptor cd_S21105C9;
extern VTBL_ENTRY _ZTI8S21105C9[];
extern  VTBL_ENTRY _ZTV8S21105C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C9[];
extern Class_Descriptor cd_S21105C3;
extern VTBL_ENTRY _ZTI8S21105C3[];
extern  VTBL_ENTRY _ZTV8S21105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C3[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C8;
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S21105C11;
extern VTBL_ENTRY _ZTI9S21105C11[];
extern  VTBL_ENTRY _ZTV9S21105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21105C11[];
static Base_Class bases_S21105C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C4,    ABISELECT(128,64), //bcp->offset
    -1, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21105C5,    ABISELECT(128,64), //bcp->offset
    102, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21105C7,    ABISELECT(160,84), //bcp->offset
    139, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21105C6,    ABISELECT(136,68), //bcp->offset
    119, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21105C4,    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_S21105C8,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21105C9,    ABISELECT(32,16), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21105C3,    ABISELECT(24,12), //bcp->offset
    45, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21105C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21105C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21105C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(176,92), //bcp->offset
    152, //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
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21105C11,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21105C2[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C23v46Ev();
extern void _ZN8S21105C23v47Ev();
extern void _ZN8S21105C23v48Ev();
extern void _ZN8S21105C23v49Ev();
extern void _ZN8S21105C23v50Ev();
extern void _ZN8S21105C23v51Ev();
extern void _ZN8S21105C23v52Ev();
extern void _ZN8S21105C2D1Ev();
extern void _ZN8S21105C2D0Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S21105C2D1Ev,_ZTv0_n28_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21105C2D1Ev,_ZThn4_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21105C2D0Ev,_ZTv0_n28_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21105C2D0Ev,_ZThn4_N8S21105C2D0Ev)() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN9S21105C113v44Ev();
extern void _ZN9S21105C113v45Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C2D1Ev,_ZThn12_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C2D0Ev,_ZThn12_N8S21105C2D0Ev)() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN8S21105C33v37Ev();
extern void _ZN8S21105C33v38Ev();
extern void _ZN8S21105C33v39Ev();
extern void _ZN8S21105C33v40Ev();
extern void _ZN8S21105C33v41Ev();
extern void _ZN8S21105C33v42Ev();
extern void _ZN8S21105C33v43Ev();
extern void ABISELECT(_ZTvn8_n88_N8S21105C2D1Ev,_ZTvn4_n44_N8S21105C2D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S21105C2D0Ev,_ZTvn4_n44_N8S21105C2D0Ev)();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21105C2D1Ev,_ZThn68_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21105C2D0Ev,_ZThn68_N8S21105C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21105C2D1Ev,_ZThn84_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21105C2D0Ev,_ZThn84_N8S21105C2D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
extern void ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S21105C2D1Ev,_ZThn92_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S21105C2D0Ev,_ZThn92_N8S21105C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21105C2[] = {
  ABISELECT(176,92),
  ABISELECT(8,4),
  ABISELECT(160,84),
  ABISELECT(136,68),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v46Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v47Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v48Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v49Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v50Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v51Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v52Ev,
  (VTBL_ENTRY)&_ZN8S21105C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C2D0Ev,
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(168,88),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21105C2D1Ev,_ZTv0_n28_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21105C2D0Ev,_ZTv0_n28_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v44Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v45Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-24,-12),
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v43Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S21105C2D1Ev,_ZTvn4_n44_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S21105C2D0Ev,_ZTvn4_n44_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21105C2[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n56_N9S21105C11D1Ev,_ZTv0_n28_N9S21105C11D1Ev)();
extern void _ZN9S21105C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21105C11D0Ev,_ZTv0_n28_N9S21105C11D0Ev)();
extern void _ZN9S21105C11D0Ev() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN9S21105C113v44Ev();
extern void _ZN9S21105C113v45Ev();
static  VTBL_ENTRY _tg__ZTV9S21105C11__8S21105C2[] = {
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(168,88),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21105C11D1Ev,_ZTv0_n28_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21105C11D0Ev,_ZTv0_n28_N9S21105C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v44Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v45Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn168_N9S21105C11D1Ev,_ZThn88_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn168_N9S21105C11D0Ev,_ZThn88_N9S21105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__9S21105C11__8S21105C2[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev),
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S21105C11D1Ev,_ZThn64_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S21105C11D0Ev,_ZThn64_N9S21105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__9S21105C11__8S21105C2[] = {
  ABISELECT(-128,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S21105C11D1Ev,_ZThn80_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S21105C11D0Ev,_ZThn80_N9S21105C11D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__9S21105C11__8S21105C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__9S21105C11__8S21105C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C3D1Ev();
extern void _ZN8S21105C3D0Ev();
extern void _ZN8S21105C83v27Ev();
extern void _ZN8S21105C33v37Ev();
extern void _ZN8S21105C33v38Ev();
extern void _ZN8S21105C33v39Ev();
extern void _ZN8S21105C33v40Ev();
extern void _ZN8S21105C33v41Ev();
extern void _ZN8S21105C33v42Ev();
extern void _ZN8S21105C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C3__8S21105C2[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v43Ev,
};
extern void _ZN8S21105C9D1Ev();
extern void _ZN8S21105C9D0Ev();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C98S21105C3__8S21105C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S21105C9D1Ev,_ZThn52_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S21105C9D0Ev,_ZThn52_N8S21105C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C98S21105C3__8S21105C2[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21105C9D1Ev,_ZThn68_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21105C9D0Ev,_ZThn68_N8S21105C9D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C98S21105C3__8S21105C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__8S21105C3__8S21105C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21105C3D1Ev,_ZThn56_N8S21105C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21105C3D0Ev,_ZThn56_N8S21105C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C3__8S21105C2[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S21105C3D1Ev,_ZThn72_N8S21105C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S21105C3D0Ev,_ZThn72_N8S21105C3D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C3__8S21105C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void ABISELECT(_ZThn8_N8S21105C3D1Ev,_ZThn4_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S21105C3D0Ev,_ZThn4_N8S21105C3D0Ev)();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C9__8S21105C3__8S21105C2[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S21105C3D1Ev,_ZThn4_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S21105C3D0Ev,_ZThn4_N8S21105C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__8S21105C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C5[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void _ZN8S21105C6D1Ev();
extern void _ZN8S21105C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C6__8S21105C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
static  VTT_ENTRY vtt_S21105C2[] = {
  {&(_ZTV8S21105C2[9]),  9,157},
  {&(_tg__ZTV9S21105C11__8S21105C2[14]),  14,23},
  {&(_tg__ZTV9S21105C11__8S21105C2[14]),  14,23},
  {&(_tg__ZTV8S7688C10__9S21105C11__8S21105C2[3]),  3,5},
  {&(_tg__ZTV8S21105C6__9S21105C11__8S21105C2[11]),  11,20},
  {&(_tg__ZTV8S21105C7__9S21105C11__8S21105C2[7]),  7,13},
  {&(_tg__ZTV8S21105C5__9S21105C11__8S21105C2[10]),  10,17},
  {&(_tg__ZTV8S21105C5__9S21105C11__8S21105C2[10]),  10,17},
  {&(_ZTV8S21105C2[73]),  73,157},
  {&(_ZTV8S21105C2[112]),  112,157},
  {&(_ZTV8S21105C2[112]),  112,157},
  {&(_ZTV8S21105C2[130]),  130,157},
  {&(_ZTV8S21105C2[146]),  146,157},
  {&(_ZTV8S21105C2[91]),  91,157},
  {&(_ZTV8S21105C2[36]),  36,157},
  {&(_ZTV8S21105C2[36]),  36,157},
  {&(_ZTV8S21105C2[155]),  155,157},
  {&(_tg__ZTV8S21105C3__8S21105C2[6]),  6,20},
  {&(_tg__ZTV8S21105C98S21105C3__8S21105C2[4]),  4,15},
  {&(_tg__ZTV8S21105C6__8S21105C98S21105C3__8S21105C2[11]),  11,20},
  {&(_tg__ZTV8S21105C7__8S21105C98S21105C3__8S21105C2[7]),  7,13},
  {&(_tg__ZTV8S21105C5__8S21105C3__8S21105C2[10]),  10,17},
  {&(_tg__ZTV8S21105C5__8S21105C3__8S21105C2[10]),  10,17},
  {&(_tg__ZTV8S21105C6__8S21105C3__8S21105C2[11]),  11,20},
  {&(_tg__ZTV8S21105C7__8S21105C3__8S21105C2[7]),  7,13},
  {&(_tg__ZTV8S21105C9__8S21105C3__8S21105C2[4]),  4,15},
  {&(_tg__ZTV8S21105C5__8S21105C2[7]),  7,14},
  {&(_tg__ZTV8S21105C5__8S21105C2[7]),  7,14},
  {&(_tg__ZTV8S21105C6__8S21105C2[3]),  3,12},
  {&(_tg__ZTV8S21105C7__8S21105C6__8S21105C2[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S21105C2[];
extern  VTBL_ENTRY _ZTV8S21105C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C2[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21105C3D0Ev,_ZThn72_N8S21105C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21105C3D1Ev,_ZThn72_N8S21105C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21105C3D0Ev,_ZThn56_N8S21105C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21105C3D1Ev,_ZThn56_N8S21105C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C9D0Ev,_ZThn68_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C9D1Ev,_ZThn68_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21105C9D0Ev,_ZThn52_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21105C9D1Ev,_ZThn52_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21105C11D0Ev,_ZThn64_N9S21105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21105C11D1Ev,_ZThn64_N9S21105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21105C11D0Ev,_ZThn80_N9S21105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21105C11D0Ev,_ZThn88_N9S21105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21105C11D1Ev,_ZThn80_N9S21105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21105C11D1Ev,_ZThn88_N9S21105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21105C11D0Ev,_ZTv0_n28_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S21105C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21105C11D1Ev,_ZTv0_n28_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S21105C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21105C2D0Ev,_ZThn92_N8S21105C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21105C2D0Ev,_ZThn84_N8S21105C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21105C2D1Ev,_ZThn92_N8S21105C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21105C2D1Ev,_ZThn84_N8S21105C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21105C2D0Ev,_ZThn68_N8S21105C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C2D0Ev,_ZThn12_N8S21105C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21105C2D1Ev,_ZThn68_N8S21105C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C2D1Ev,_ZThn12_N8S21105C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21105C2D0Ev,_ZTv0_n28_N8S21105C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21105C2D0Ev,_ZThn4_N8S21105C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21105C2D1Ev,_ZTv0_n28_N8S21105C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21105C2D1Ev,_ZThn4_N8S21105C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21105C2 = {  "S21105C2", // class name
  bases_S21105C2, 13,
  &(vtc_S21105C2[0]), // expected_vtbl_contents
  &(vtt_S21105C2[0]), // expected_vtt_contents
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI8S21105C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21105C2),157, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21105C2),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21105C1  : virtual S21105C2 {
  int s21105c1f0;
  virtual  ~S21105C1(); // _ZN8S21105C1D2Ev
  virtual void  v1(); // _ZN8S21105C12v1Ev
  virtual void  v2(); // _ZN8S21105C12v2Ev
  virtual void  v3(); // _ZN8S21105C12v3Ev
  virtual void  v4(); // _ZN8S21105C12v4Ev
  virtual void  v5(); // _ZN8S21105C12v5Ev
  virtual void  v6(); // _ZN8S21105C12v6Ev
  virtual void  v7(); // _ZN8S21105C12v7Ev
  virtual void  v8(); // _ZN8S21105C12v8Ev
  S21105C1(); // tgen
};
//SIG(1 S21105C1) C1{ VBC2{ VBC3{ VBC4{ v9 v10 v11 v12} VBC5{ VBC4 v13 v14 v15} VBC6{ VBC7{ vd v16 v17 v18 v19 Fi} v20 v21 v22 v23 v24 v25 v26 FL Fi} BC8{ BC4 vd v27} BC9{ VBC6 vd v28 v29 v30 v31 v32 v33 v34 v35 v36 FC10{ vd m Fp[9]}} vd v37 v38 v39 v40 v41 v42 v43 Fi} BC4 BC11{ VBC8 VBC10 VBC6 VBC5 vd v44 v45} v46 v47 v48 v49 v50 v51 v52 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi}


 S21105C1 ::~S21105C1(){ note_dtor("S21105C1", this);}
void  S21105C1 ::v1(){vfunc_called(this, "_ZN8S21105C12v1Ev");}
void  S21105C1 ::v2(){vfunc_called(this, "_ZN8S21105C12v2Ev");}
void  S21105C1 ::v3(){vfunc_called(this, "_ZN8S21105C12v3Ev");}
void  S21105C1 ::v4(){vfunc_called(this, "_ZN8S21105C12v4Ev");}
void  S21105C1 ::v5(){vfunc_called(this, "_ZN8S21105C12v5Ev");}
void  S21105C1 ::v6(){vfunc_called(this, "_ZN8S21105C12v6Ev");}
void  S21105C1 ::v7(){vfunc_called(this, "_ZN8S21105C12v7Ev");}
void  S21105C1 ::v8(){vfunc_called(this, "_ZN8S21105C12v8Ev");}
S21105C1 ::S21105C1(){ note_ctor("S21105C1", this);} // tgen

static void Test_S21105C1()
{
  extern Class_Descriptor cd_S21105C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,35)];
    init_test(&cd_S21105C1, buf);
    S21105C1 *dp, &lv = *(dp=new (buf) S21105C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,136), "sizeof(S21105C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21105C1)");
    /*is_ambiguous_... S21105C3::S21105C4 */ AMB_check_base_class_offset(lv, (S21105C4*)(S21105C3*), 0, "S21105C1");
    check_base_class_offset(lv, (S21105C4*)(S21105C5*), 0, "S21105C1");
    check_base_class_offset(lv, (S21105C5*)(S21105C3*), 0, "S21105C1");
    check_base_class_offset(lv, (S21105C5*)(S21105C11*)(S21105C2*), 0, "S21105C1");
    check_base_class_offset(lv, (S21105C7*)(S21105C6*), ABISELECT(168,88), "S21105C1");
    check_base_class_offset(lv, (S21105C6*)(S21105C3*), ABISELECT(144,72), "S21105C1");
    check_base_class_offset(lv, (S21105C6*)(S21105C9*)(S21105C3*), ABISELECT(144,72), "S21105C1");
    check_base_class_offset(lv, (S21105C6*)(S21105C11*)(S21105C2*), ABISELECT(144,72), "S21105C1");
    check_base_class_offset(lv, (S21105C4*)(S21105C8*)(S21105C3*), ABISELECT(40,20), "S21105C1");
    check_base_class_offset(lv, (S21105C8*)(S21105C3*), ABISELECT(40,20), "S21105C1");
    check_base_class_offset(lv, (S21105C9*)(S21105C3*), ABISELECT(48,24), "S21105C1");
    check_base_class_offset(lv, (S21105C3*)(S21105C2*), ABISELECT(40,20), "S21105C1");
    /*is_ambiguous_... S21105C2::S21105C4 */ AMB_check_base_class_offset(lv, (S21105C4*)(S21105C2*), ABISELECT(16,8), "S21105C1");
    /*is_ambiguous_... S21105C1::S21105C8 */ AMB_check_base_class_offset(lv, (S21105C4*)(S21105C8*), ABISELECT(24,12), "S21105C1");
    check_base_class_offset(lv, (S21105C8*)(S21105C11*)(S21105C2*), ABISELECT(24,12), "S21105C1");
    check_base_class_offset(lv, (S7688C10*)(S21105C11*)(S21105C2*), ABISELECT(184,96), "S21105C1");
    check_base_class_offset(lv, (S21105C11*)(S21105C2*), ABISELECT(24,12), "S21105C1");
    check_base_class_offset(lv, (S21105C2*), ABISELECT(16,8), "S21105C1");
    check_field_offset(lv, s21105c1f0, ABISELECT(8,4), "S21105C1.s21105c1f0");
    test_class_info(&lv, &cd_S21105C1);
    dp->~S21105C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21105C1(Test_S21105C1, "S21105C1", ABISELECT(264,136));

#else // __cplusplus

extern void _ZN8S21105C1C1Ev();
extern void _ZN8S21105C1D2Ev();
Name_Map name_map_S21105C1[] = {
  NSPAIR(_ZN8S21105C1C1Ev),
  NSPAIR(_ZN8S21105C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C5;
extern VTBL_ENTRY _ZTI8S21105C5[];
extern  VTBL_ENTRY _ZTV8S21105C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C5[];
extern Class_Descriptor cd_S21105C7;
extern VTBL_ENTRY _ZTI8S21105C7[];
extern  VTBL_ENTRY _ZTV8S21105C7[];
extern Class_Descriptor cd_S21105C6;
extern VTBL_ENTRY _ZTI8S21105C6[];
extern  VTBL_ENTRY _ZTV8S21105C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C6[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C8;
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
extern Class_Descriptor cd_S21105C9;
extern VTBL_ENTRY _ZTI8S21105C9[];
extern  VTBL_ENTRY _ZTV8S21105C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C9[];
extern Class_Descriptor cd_S21105C3;
extern VTBL_ENTRY _ZTI8S21105C3[];
extern  VTBL_ENTRY _ZTV8S21105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C3[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C4;
extern VTBL_ENTRY _ZTI8S21105C4[];
extern  VTBL_ENTRY _ZTV8S21105C4[];
extern Class_Descriptor cd_S21105C8;
extern VTBL_ENTRY _ZTI8S21105C8[];
extern  VTBL_ENTRY _ZTV8S21105C8[];
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S21105C11;
extern VTBL_ENTRY _ZTI9S21105C11[];
extern  VTBL_ENTRY _ZTV9S21105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21105C11[];
extern Class_Descriptor cd_S21105C2;
extern VTBL_ENTRY _ZTI8S21105C2[];
extern  VTBL_ENTRY _ZTV8S21105C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C2[];
static Base_Class bases_S21105C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21105C4,    0, //bcp->offset
    -1, //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_S21105C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21105C7,    ABISELECT(168,88), //bcp->offset
    170, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21105C6,    ABISELECT(144,72), //bcp->offset
    150, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21105C4,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21105C8,    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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21105C9,    ABISELECT(48,24), //bcp->offset
    135, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21105C3,    ABISELECT(40,20), //bcp->offset
    93, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21105C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21105C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21105C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7688C10,    ABISELECT(184,96), //bcp->offset
    183, //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
    11, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21105C11,    ABISELECT(24,12), //bcp->offset
    70, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21105C2,    ABISELECT(16,8), //bcp->offset
    34, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21105C1[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
extern void _ZN8S21105C1D1Ev();
extern void _ZN8S21105C1D0Ev();
extern void _ZN8S21105C12v1Ev();
extern void _ZN8S21105C12v2Ev();
extern void _ZN8S21105C12v3Ev();
extern void _ZN8S21105C12v4Ev();
extern void _ZN8S21105C12v5Ev();
extern void _ZN8S21105C12v6Ev();
extern void _ZN8S21105C12v7Ev();
extern void _ZN8S21105C12v8Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C23v46Ev();
extern void _ZN8S21105C23v47Ev();
extern void _ZN8S21105C23v48Ev();
extern void _ZN8S21105C23v49Ev();
extern void _ZN8S21105C23v50Ev();
extern void _ZN8S21105C23v51Ev();
extern void _ZN8S21105C23v52Ev();
extern void ABISELECT(_ZTv0_n168_N8S21105C1D1Ev,_ZTv0_n84_N8S21105C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21105C1D1Ev,_ZThn8_N8S21105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S21105C1D0Ev,_ZTv0_n84_N8S21105C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21105C1D0Ev,_ZThn8_N8S21105C1D0Ev)() __attribute__((weak));
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S21105C1D1Ev,_ZTv0_n28_N8S21105C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C1D1Ev,_ZThn12_N8S21105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21105C1D0Ev,_ZTv0_n28_N8S21105C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C1D0Ev,_ZThn12_N8S21105C1D0Ev)() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN9S21105C113v44Ev();
extern void _ZN9S21105C113v45Ev();
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C1D1Ev,_ZTv0_n44_N8S21105C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S21105C1D1Ev,_ZThn20_N8S21105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C1D0Ev,_ZTv0_n44_N8S21105C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S21105C1D0Ev,_ZThn20_N8S21105C1D0Ev)() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN8S21105C33v37Ev();
extern void _ZN8S21105C33v38Ev();
extern void _ZN8S21105C33v39Ev();
extern void _ZN8S21105C33v40Ev();
extern void _ZN8S21105C33v41Ev();
extern void _ZN8S21105C33v42Ev();
extern void _ZN8S21105C33v43Ev();
extern void ABISELECT(_ZTvn8_n88_N8S21105C1D1Ev,_ZTvn4_n44_N8S21105C1D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S21105C1D0Ev,_ZTvn4_n44_N8S21105C1D0Ev)();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C1D1Ev,_ZTv0_n44_N8S21105C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21105C1D1Ev,_ZThn72_N8S21105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C1D0Ev,_ZTv0_n44_N8S21105C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21105C1D0Ev,_ZThn72_N8S21105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C1D1Ev,_ZTv0_n12_N8S21105C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S21105C1D1Ev,_ZThn88_N8S21105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C1D0Ev,_ZTv0_n12_N8S21105C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S21105C1D0Ev,_ZThn88_N8S21105C1D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
extern void ABISELECT(_ZTv0_n24_N8S21105C1D1Ev,_ZTv0_n12_N8S21105C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S21105C1D1Ev,_ZThn96_N8S21105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C1D0Ev,_ZTv0_n12_N8S21105C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S21105C1D0Ev,_ZThn96_N8S21105C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21105C1[] = {
  ABISELECT(184,96),
  ABISELECT(24,12),
  ABISELECT(168,88),
  ABISELECT(144,72),
  0,
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
  (VTBL_ENTRY)&_ZN8S21105C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v5Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v6Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v7Ev,
  (VTBL_ENTRY)&_ZN8S21105C12v8Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(8,4),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v46Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v47Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v48Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v49Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v50Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v51Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v52Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S21105C1D1Ev,_ZTv0_n84_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S21105C1D0Ev,_ZTv0_n84_N8S21105C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  0,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21105C1D1Ev,_ZTv0_n28_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21105C1D0Ev,_ZTv0_n28_N8S21105C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v44Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v45Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-40,-20),
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C1D1Ev,_ZTv0_n44_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C1D0Ev,_ZTv0_n44_N8S21105C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v43Ev,
  ABISELECT(120,64),
  ABISELECT(96,48),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S21105C1D1Ev,_ZTvn4_n44_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S21105C1D0Ev,_ZTvn4_n44_N8S21105C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
  ABISELECT(-144,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C1D1Ev,_ZTv0_n44_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C1D0Ev,_ZTv0_n44_N8S21105C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C1D1Ev,_ZTv0_n12_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C1D0Ev,_ZTv0_n12_N8S21105C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S21105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C1D1Ev,_ZTv0_n12_N8S21105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C1D0Ev,_ZTv0_n12_N8S21105C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21105C1[];
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C23v46Ev();
extern void _ZN8S21105C23v47Ev();
extern void _ZN8S21105C23v48Ev();
extern void _ZN8S21105C23v49Ev();
extern void _ZN8S21105C23v50Ev();
extern void _ZN8S21105C23v51Ev();
extern void _ZN8S21105C23v52Ev();
extern void _ZN8S21105C2D1Ev();
extern void _ZN8S21105C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C2__8S21105C1[] = {
  ABISELECT(168,88),
  ABISELECT(8,4),
  ABISELECT(152,80),
  ABISELECT(128,64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v46Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v47Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v48Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v49Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v50Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v51Ev,
  (VTBL_ENTRY)&_ZN8S21105C23v52Ev,
  (VTBL_ENTRY)&_ZN8S21105C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C2D0Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n56_N9S21105C11D1Ev,_ZTv0_n28_N9S21105C11D1Ev)();
extern void _ZN9S21105C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21105C11D0Ev,_ZTv0_n28_N9S21105C11D0Ev)();
extern void _ZN9S21105C11D0Ev() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN9S21105C113v44Ev();
extern void _ZN9S21105C113v45Ev();
static  VTBL_ENTRY _tg__ZTV9S21105C118S21105C2__8S21105C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21105C11D1Ev,_ZTv0_n28_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21105C11D0Ev,_ZTv0_n28_N9S21105C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v44Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v45Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S21105C11D1Ev,_ZThn84_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S21105C11D0Ev,_ZThn84_N9S21105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__9S21105C118S21105C2__8S21105C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev),
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S21105C11D1Ev,_ZThn60_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S21105C11D0Ev,_ZThn60_N9S21105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__9S21105C118S21105C2__8S21105C1[] = {
  ABISELECT(-120,-60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S21105C11D1Ev,_ZThn76_N9S21105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S21105C11D0Ev,_ZThn76_N9S21105C11D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__9S21105C118S21105C2__8S21105C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__9S21105C118S21105C2__8S21105C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21105C11[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C2D1Ev,_ZThn12_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C2D0Ev,_ZThn12_N8S21105C2D0Ev)() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN8S21105C33v37Ev();
extern void _ZN8S21105C33v38Ev();
extern void _ZN8S21105C33v39Ev();
extern void _ZN8S21105C33v40Ev();
extern void _ZN8S21105C33v41Ev();
extern void _ZN8S21105C33v42Ev();
extern void _ZN8S21105C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C3__8S21105C2__8S21105C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  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(-24,-12),
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v43Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__8S21105C2__8S21105C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21105C2D1Ev,_ZThn64_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21105C2D0Ev,_ZThn64_N8S21105C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C2__8S21105C1[] = {
  ABISELECT(-128,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn152_N8S21105C2D1Ev,_ZThn80_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn152_N8S21105C2D0Ev,_ZThn80_N8S21105C2D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C2__8S21105C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void ABISELECT(_ZTvn8_n88_N8S21105C2D1Ev,_ZTvn4_n44_N8S21105C2D1Ev)();
extern void ABISELECT(_ZTvn8_n88_N8S21105C2D0Ev,_ZTvn4_n44_N8S21105C2D0Ev)();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C98S21105C3__8S21105C2__8S21105C1[] = {
  ABISELECT(120,64),
  ABISELECT(96,48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S21105C2D1Ev,_ZTvn4_n44_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n88_N8S21105C2D0Ev,_ZTvn4_n44_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S21105C2D1Ev,_ZTv0_n28_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21105C2D1Ev,_ZThn4_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21105C2D0Ev,_ZTv0_n28_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21105C2D0Ev,_ZThn4_N8S21105C2D0Ev)() __attribute__((weak));
extern void _ZN8S21105C83v27Ev();
extern void _ZN9S21105C113v44Ev();
extern void _ZN9S21105C113v45Ev();
static  VTBL_ENTRY _tg__ZTV9S21105C11__8S21105C2__8S21105C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(144,76),
  ABISELECT(120,60),
  ABISELECT(160,84),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21105C2D1Ev,_ZTv0_n28_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21105C2D0Ev,_ZTv0_n28_N8S21105C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v44Ev,
  (VTBL_ENTRY)&_ZN9S21105C113v45Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21105C2D1Ev,_ZThn88_N8S21105C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21105C2D0Ev,_ZThn88_N8S21105C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7688C10__8S21105C2__8S21105C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S21105C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev),
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C3D1Ev();
extern void _ZN8S21105C3D0Ev();
extern void _ZN8S21105C83v27Ev();
extern void _ZN8S21105C33v37Ev();
extern void _ZN8S21105C33v38Ev();
extern void _ZN8S21105C33v39Ev();
extern void _ZN8S21105C33v40Ev();
extern void _ZN8S21105C33v41Ev();
extern void _ZN8S21105C33v42Ev();
extern void _ZN8S21105C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C3__8S21105C1[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C83v27Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v37Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v38Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v39Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v40Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v41Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v42Ev,
  (VTBL_ENTRY)&_ZN8S21105C33v43Ev,
};
extern void _ZN8S21105C9D1Ev();
extern void _ZN8S21105C9D0Ev();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C98S21105C3__8S21105C1[] = {
  ABISELECT(120,64),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S21105C9D1Ev,_ZThn48_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S21105C9D0Ev,_ZThn48_N8S21105C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C98S21105C3__8S21105C1[] = {
  ABISELECT(-96,-48),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev)();
extern void ABISELECT(_ZThn120_N8S21105C9D1Ev,_ZThn64_N8S21105C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev)();
extern void ABISELECT(_ZThn120_N8S21105C9D0Ev,_ZThn64_N8S21105C9D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C98S21105C3__8S21105C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21105C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__8S21105C3__8S21105C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn104_N8S21105C3D1Ev,_ZThn52_N8S21105C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev)();
extern void ABISELECT(_ZThn104_N8S21105C3D0Ev,_ZThn52_N8S21105C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C3__8S21105C1[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S21105C3D1Ev,_ZThn68_N8S21105C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S21105C3D0Ev,_ZThn68_N8S21105C3D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C3__8S21105C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
extern void ABISELECT(_ZThn8_N8S21105C3D1Ev,_ZThn4_N8S21105C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S21105C3D0Ev,_ZThn4_N8S21105C3D0Ev)();
extern void _ZN8S21105C93v28Ev();
extern void _ZN8S21105C93v29Ev();
extern void _ZN8S21105C93v30Ev();
extern void _ZN8S21105C93v31Ev();
extern void _ZN8S21105C93v32Ev();
extern void _ZN8S21105C93v33Ev();
extern void _ZN8S21105C93v34Ev();
extern void _ZN8S21105C93v35Ev();
extern void _ZN8S21105C93v36Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C9__8S21105C3__8S21105C1[] = {
  ABISELECT(120,64),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21105C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S21105C3D1Ev,_ZThn4_N8S21105C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S21105C3D0Ev,_ZThn4_N8S21105C3D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C93v28Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v29Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v30Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v31Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v32Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v33Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v34Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v35Ev,
  (VTBL_ENTRY)&_ZN8S21105C93v36Ev,
};
extern void _ZN8S21105C42v9Ev();
extern void _ZN8S21105C43v10Ev();
extern void _ZN8S21105C43v11Ev();
extern void _ZN8S21105C43v12Ev();
extern void _ZN8S21105C53v13Ev();
extern void _ZN8S21105C53v14Ev();
extern void _ZN8S21105C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C5__8S21105C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C5[0]),
  (VTBL_ENTRY)&_ZN8S21105C42v9Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v10Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v11Ev,
  (VTBL_ENTRY)&_ZN8S21105C43v12Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21105C53v15Ev,
};
extern void _ZN8S21105C63v20Ev();
extern void _ZN8S21105C63v21Ev();
extern void _ZN8S21105C63v22Ev();
extern void _ZN8S21105C63v23Ev();
extern void _ZN8S21105C63v24Ev();
extern void _ZN8S21105C63v25Ev();
extern void _ZN8S21105C63v26Ev();
extern void _ZN8S21105C6D1Ev();
extern void _ZN8S21105C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C6__8S21105C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&_ZN8S21105C63v20Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v21Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v22Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v23Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v24Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v25Ev,
  (VTBL_ENTRY)&_ZN8S21105C63v26Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21105C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev)() __attribute__((weak));
extern void _ZN8S21105C73v16Ev();
extern void _ZN8S21105C73v17Ev();
extern void _ZN8S21105C73v18Ev();
extern void _ZN8S21105C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S21105C7__8S21105C6__8S21105C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21105C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev),
  (VTBL_ENTRY)&_ZN8S21105C73v16Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v17Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v18Ev,
  (VTBL_ENTRY)&_ZN8S21105C73v19Ev,
};
static  VTT_ENTRY vtt_S21105C1[] = {
  {&(_ZTV8S21105C1[17]),  17,188},
  {&(_ZTV8S21105C1[57]),  57,188},
  {&(_ZTV8S21105C1[121]),  121,188},
  {&(_ZTV8S21105C1[17]),  17,188},
  {&(_ZTV8S21105C1[17]),  17,188},
  {&(_ZTV8S21105C1[161]),  161,188},
  {&(_ZTV8S21105C1[177]),  177,188},
  {&(_ZTV8S21105C1[139]),  139,188},
  {&(_ZTV8S21105C1[84]),  84,188},
  {&(_ZTV8S21105C1[84]),  84,188},
  {&(_ZTV8S21105C1[186]),  186,188},
  {&(_tg__ZTV8S21105C2__8S21105C1[9]),  9,22},
  {&(_tg__ZTV9S21105C118S21105C2__8S21105C1[14]),  14,23},
  {&(_tg__ZTV9S21105C118S21105C2__8S21105C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__9S21105C118S21105C2__8S21105C1[3]),  3,5},
  {&(_tg__ZTV8S21105C6__9S21105C118S21105C2__8S21105C1[11]),  11,20},
  {&(_tg__ZTV8S21105C7__9S21105C118S21105C2__8S21105C1[7]),  7,13},
  {&(_tg__ZTV8S21105C5__9S21105C118S21105C2__8S21105C1[10]),  10,17},
  {&(_tg__ZTV8S21105C5__9S21105C118S21105C2__8S21105C1[10]),  10,17},
  {&(_tg__ZTV8S21105C3__8S21105C2__8S21105C1[28]),  28,42},
  {&(_tg__ZTV8S21105C5__8S21105C2__8S21105C1[10]),  10,17},
  {&(_tg__ZTV8S21105C5__8S21105C2__8S21105C1[10]),  10,17},
  {&(_tg__ZTV8S21105C6__8S21105C2__8S21105C1[11]),  11,20},
  {&(_tg__ZTV8S21105C7__8S21105C2__8S21105C1[7]),  7,13},
  {&(_tg__ZTV8S21105C98S21105C3__8S21105C2__8S21105C1[4]),  4,15},
  {&(_tg__ZTV9S21105C11__8S21105C2__8S21105C1[14]),  14,23},
  {&(_tg__ZTV9S21105C11__8S21105C2__8S21105C1[14]),  14,23},
  {&(_tg__ZTV8S7688C10__8S21105C2__8S21105C1[3]),  3,5},
  {&(_tg__ZTV8S21105C3__8S21105C1[6]),  6,20},
  {&(_tg__ZTV8S21105C98S21105C3__8S21105C1[4]),  4,15},
  {&(_tg__ZTV8S21105C6__8S21105C98S21105C3__8S21105C1[11]),  11,20},
  {&(_tg__ZTV8S21105C7__8S21105C98S21105C3__8S21105C1[7]),  7,13},
  {&(_tg__ZTV8S21105C5__8S21105C3__8S21105C1[10]),  10,17},
  {&(_tg__ZTV8S21105C5__8S21105C3__8S21105C1[10]),  10,17},
  {&(_tg__ZTV8S21105C6__8S21105C3__8S21105C1[11]),  11,20},
  {&(_tg__ZTV8S21105C7__8S21105C3__8S21105C1[7]),  7,13},
  {&(_tg__ZTV8S21105C9__8S21105C3__8S21105C1[4]),  4,15},
  {&(_tg__ZTV8S21105C5__8S21105C1[7]),  7,14},
  {&(_tg__ZTV8S21105C5__8S21105C1[7]),  7,14},
  {&(_tg__ZTV8S21105C6__8S21105C1[3]),  3,12},
  {&(_tg__ZTV8S21105C7__8S21105C6__8S21105C1[7]),  7,13},
};
extern VTBL_ENTRY _ZTI8S21105C1[];
extern  VTBL_ENTRY _ZTV8S21105C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21105C1[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D0Ev,_ZTv0_n12_N8S21105C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D0Ev,_ZThn16_N8S21105C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C6D1Ev,_ZTv0_n12_N8S21105C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C6D1Ev,_ZThn16_N8S21105C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C3D0Ev,_ZTv0_n12_N8S21105C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C3D0Ev,_ZThn68_N8S21105C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C3D1Ev,_ZTv0_n12_N8S21105C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C3D1Ev,_ZThn68_N8S21105C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C3D0Ev,_ZTv0_n44_N8S21105C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21105C3D0Ev,_ZThn52_N8S21105C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C3D1Ev,_ZTv0_n44_N8S21105C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21105C3D1Ev,_ZThn52_N8S21105C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D0Ev,_ZTv0_n12_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21105C9D0Ev,_ZThn64_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C9D1Ev,_ZTv0_n12_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21105C9D1Ev,_ZThn64_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D0Ev,_ZTv0_n44_N8S21105C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21105C9D0Ev,_ZThn48_N8S21105C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C9D1Ev,_ZTv0_n44_N8S21105C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21105C9D1Ev,_ZThn48_N8S21105C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21105C2D0Ev,_ZTv0_n28_N8S21105C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21105C2D0Ev,_ZThn4_N8S21105C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21105C2D1Ev,_ZTv0_n28_N8S21105C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21105C2D1Ev,_ZThn4_N8S21105C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C2D0Ev,_ZTv0_n12_N8S21105C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21105C2D0Ev,_ZThn88_N8S21105C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21105C2D0Ev,_ZThn80_N8S21105C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C2D1Ev,_ZTv0_n12_N8S21105C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21105C2D1Ev,_ZThn88_N8S21105C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21105C2D1Ev,_ZThn80_N8S21105C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C2D0Ev,_ZTv0_n44_N8S21105C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C2D0Ev,_ZThn64_N8S21105C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C2D0Ev,_ZThn12_N8S21105C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C2D1Ev,_ZTv0_n44_N8S21105C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21105C2D1Ev,_ZThn64_N8S21105C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C2D1Ev,_ZThn12_N8S21105C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21105C11D0Ev,_ZTv0_n44_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21105C11D0Ev,_ZThn60_N9S21105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21105C11D1Ev,_ZTv0_n44_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21105C11D1Ev,_ZThn60_N9S21105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21105C11D0Ev,_ZTv0_n12_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21105C11D0Ev,_ZThn76_N9S21105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21105C11D0Ev,_ZThn84_N9S21105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21105C11D1Ev,_ZTv0_n12_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21105C11D1Ev,_ZThn76_N9S21105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21105C11D1Ev,_ZThn84_N9S21105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21105C11D0Ev,_ZTv0_n28_N9S21105C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S21105C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21105C11D1Ev,_ZTv0_n28_N9S21105C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S21105C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C1D0Ev,_ZTv0_n12_N8S21105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21105C1D0Ev,_ZThn96_N8S21105C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21105C1D0Ev,_ZThn88_N8S21105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21105C1D1Ev,_ZTv0_n12_N8S21105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21105C1D1Ev,_ZThn96_N8S21105C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21105C1D1Ev,_ZThn88_N8S21105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C1D0Ev,_ZTv0_n44_N8S21105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21105C1D0Ev,_ZThn72_N8S21105C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21105C1D0Ev,_ZThn20_N8S21105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21105C1D1Ev,_ZTv0_n44_N8S21105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21105C1D1Ev,_ZThn72_N8S21105C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21105C1D1Ev,_ZThn20_N8S21105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21105C1D0Ev,_ZTv0_n28_N8S21105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C1D0Ev,_ZThn12_N8S21105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21105C1D1Ev,_ZTv0_n28_N8S21105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21105C1D1Ev,_ZThn12_N8S21105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S21105C1D0Ev,_ZTv0_n84_N8S21105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21105C1D0Ev,_ZThn8_N8S21105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S21105C1D1Ev,_ZTv0_n84_N8S21105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21105C1D1Ev,_ZThn8_N8S21105C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21105C1 = {  "S21105C1", // class name
  bases_S21105C1, 14,
  &(vtc_S21105C1[0]), // expected_vtbl_contents
  &(vtt_S21105C1[0]), // expected_vtt_contents
  ABISELECT(264,136), // object size
  NSPAIRA(_ZTI8S21105C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21105C1),188, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21105C1),41, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20877C3  {
  void *s20877c3f0;
  int s20877c3f1;
  virtual  ~S20877C3(); // _ZN8S20877C3D1Ev
  virtual void  v5(); // _ZN8S20877C32v5Ev
  virtual void  v6(); // _ZN8S20877C32v6Ev
  S20877C3(); // tgen
};
//SIG(-1 S20877C3) C1{ vd v1 v2 Fp Fi}


 S20877C3 ::~S20877C3(){ note_dtor("S20877C3", this);}
void  S20877C3 ::v5(){vfunc_called(this, "_ZN8S20877C32v5Ev");}
void  S20877C3 ::v6(){vfunc_called(this, "_ZN8S20877C32v6Ev");}
S20877C3 ::S20877C3(){ note_ctor("S20877C3", this);} // tgen

static void Test_S20877C3()
{
  extern Class_Descriptor cd_S20877C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20877C3, buf);
    S20877C3 *dp, &lv = *(dp=new (buf) S20877C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20877C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20877C3)");
    check_field_offset(lv, s20877c3f0, ABISELECT(8,4), "S20877C3.s20877c3f0");
    check_field_offset(lv, s20877c3f1, ABISELECT(16,8), "S20877C3.s20877c3f1");
    test_class_info(&lv, &cd_S20877C3);
    dp->~S20877C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20877C3(Test_S20877C3, "S20877C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20877C3C1Ev();
extern void _ZN8S20877C3D1Ev();
Name_Map name_map_S20877C3[] = {
  NSPAIR(_ZN8S20877C3C1Ev),
  NSPAIR(_ZN8S20877C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20877C3[];
extern void _ZN8S20877C3D1Ev();
extern void _ZN8S20877C3D0Ev();
extern void _ZN8S20877C32v5Ev();
extern void _ZN8S20877C32v6Ev();
static  VTBL_ENTRY vtc_S20877C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C3[0]),
  (VTBL_ENTRY)&_ZN8S20877C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20877C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S20877C3[];
extern  VTBL_ENTRY _ZTV8S20877C3[];
Class_Descriptor cd_S20877C3 = {  "S20877C3", // class name
  0,0,//no base classes
  &(vtc_S20877C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20877C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20877C3),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  S20877C4  {
  int s20877c4f0;
  virtual  ~S20877C4(); // _ZN8S20877C4D1Ev
  virtual void  v7(); // _ZN8S20877C42v7Ev
  virtual void  v8(); // _ZN8S20877C42v8Ev
  virtual void  v9(); // _ZN8S20877C42v9Ev
  virtual void  v10(); // _ZN8S20877C43v10Ev
  virtual void  v11(); // _ZN8S20877C43v11Ev
  virtual void  v12(); // _ZN8S20877C43v12Ev
  virtual void  v13(); // _ZN8S20877C43v13Ev
  S20877C4(); // tgen
};
//SIG(-1 S20877C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S20877C4 ::~S20877C4(){ note_dtor("S20877C4", this);}
void  S20877C4 ::v7(){vfunc_called(this, "_ZN8S20877C42v7Ev");}
void  S20877C4 ::v8(){vfunc_called(this, "_ZN8S20877C42v8Ev");}
void  S20877C4 ::v9(){vfunc_called(this, "_ZN8S20877C42v9Ev");}
void  S20877C4 ::v10(){vfunc_called(this, "_ZN8S20877C43v10Ev");}
void  S20877C4 ::v11(){vfunc_called(this, "_ZN8S20877C43v11Ev");}
void  S20877C4 ::v12(){vfunc_called(this, "_ZN8S20877C43v12Ev");}
void  S20877C4 ::v13(){vfunc_called(this, "_ZN8S20877C43v13Ev");}
S20877C4 ::S20877C4(){ note_ctor("S20877C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20877C4C1Ev();
extern void _ZN8S20877C4D1Ev();
Name_Map name_map_S20877C4[] = {
  NSPAIR(_ZN8S20877C4C1Ev),
  NSPAIR(_ZN8S20877C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20877C4[];
extern void _ZN8S20877C4D1Ev();
extern void _ZN8S20877C4D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY vtc_S20877C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C4[0]),
  (VTBL_ENTRY)&_ZN8S20877C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
Class_Descriptor cd_S20877C4 = {  "S20877C4", // class name
  0,0,//no base classes
  &(vtc_S20877C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20877C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20877C4),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  S20877C6  {
  int s20877c6f0;
  virtual void  v14(); // _ZN8S20877C63v14Ev
  virtual void  v15(); // _ZN8S20877C63v15Ev
  virtual void  v16(); // _ZN8S20877C63v16Ev
  virtual void  v17(); // _ZN8S20877C63v17Ev
  virtual void  v18(); // _ZN8S20877C63v18Ev
  virtual void  v19(); // _ZN8S20877C63v19Ev
  virtual void  v20(); // _ZN8S20877C63v20Ev
  ~S20877C6(); // tgen
  S20877C6(); // tgen
};
//SIG(-1 S20877C6) C1{ v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20877C6 ::v14(){vfunc_called(this, "_ZN8S20877C63v14Ev");}
void  S20877C6 ::v15(){vfunc_called(this, "_ZN8S20877C63v15Ev");}
void  S20877C6 ::v16(){vfunc_called(this, "_ZN8S20877C63v16Ev");}
void  S20877C6 ::v17(){vfunc_called(this, "_ZN8S20877C63v17Ev");}
void  S20877C6 ::v18(){vfunc_called(this, "_ZN8S20877C63v18Ev");}
void  S20877C6 ::v19(){vfunc_called(this, "_ZN8S20877C63v19Ev");}
void  S20877C6 ::v20(){vfunc_called(this, "_ZN8S20877C63v20Ev");}
S20877C6 ::~S20877C6(){ note_dtor("S20877C6", this);} // tgen
S20877C6 ::S20877C6(){ note_ctor("S20877C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20877C6C1Ev();
extern void _ZN8S20877C6D1Ev();
Name_Map name_map_S20877C6[] = {
  NSPAIR(_ZN8S20877C6C1Ev),
  NSPAIR(_ZN8S20877C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20877C6[];
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
static  VTBL_ENTRY vtc_S20877C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C6[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
};
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
Class_Descriptor cd_S20877C6 = {  "S20877C6", // class name
  0,0,//no base classes
  &(vtc_S20877C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20877C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20877C6),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  S20877C7  : S20877C4 {
  void *s20877c7f0;
  char s20877c7f1;
  virtual void  v21(); // _ZN8S20877C73v21Ev
  virtual void  v22(); // _ZN8S20877C73v22Ev
  virtual void  v23(); // _ZN8S20877C73v23Ev
  virtual void  v24(); // _ZN8S20877C73v24Ev
  virtual void  v25(); // _ZN8S20877C73v25Ev
  ~S20877C7(); // tgen
  S20877C7(); // tgen
};
//SIG(-1 S20877C7) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fi} v1 v2 v3 v4 v5 Fp Fc}


void  S20877C7 ::v21(){vfunc_called(this, "_ZN8S20877C73v21Ev");}
void  S20877C7 ::v22(){vfunc_called(this, "_ZN8S20877C73v22Ev");}
void  S20877C7 ::v23(){vfunc_called(this, "_ZN8S20877C73v23Ev");}
void  S20877C7 ::v24(){vfunc_called(this, "_ZN8S20877C73v24Ev");}
void  S20877C7 ::v25(){vfunc_called(this, "_ZN8S20877C73v25Ev");}
S20877C7 ::~S20877C7(){ note_dtor("S20877C7", this);} // tgen
S20877C7 ::S20877C7(){ note_ctor("S20877C7", this);} // tgen

static void Test_S20877C7()
{
  extern Class_Descriptor cd_S20877C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20877C7, buf);
    S20877C7 *dp, &lv = *(dp=new (buf) S20877C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20877C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20877C7)");
    check_base_class_offset(lv, (S20877C4*), 0, "S20877C7");
    check_field_offset(lv, s20877c7f0, ABISELECT(16,8), "S20877C7.s20877c7f0");
    check_field_offset(lv, s20877c7f1, ABISELECT(24,12), "S20877C7.s20877c7f1");
    test_class_info(&lv, &cd_S20877C7);
    dp->~S20877C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20877C7(Test_S20877C7, "S20877C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20877C7C1Ev();
extern void _ZN8S20877C7D1Ev();
Name_Map name_map_S20877C7[] = {
  NSPAIR(_ZN8S20877C7C1Ev),
  NSPAIR(_ZN8S20877C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
static Base_Class bases_S20877C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20877C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20877C7[];
extern void _ZN8S20877C7D1Ev();
extern void _ZN8S20877C7D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
static  VTBL_ENTRY vtc_S20877C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C7[0]),
  (VTBL_ENTRY)&_ZN8S20877C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
};
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
Class_Descriptor cd_S20877C7 = {  "S20877C7", // class name
  bases_S20877C7, 1,
  &(vtc_S20877C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20877C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20877C7),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20877C5  : S20877C6 , S20877C7 , virtual S20877C4 {
  int s20877c5f0:18;
  virtual void  v26(); // _ZN8S20877C53v26Ev
  virtual void  v27(); // _ZN8S20877C53v27Ev
  virtual void  v28(); // _ZN8S20877C53v28Ev
  virtual void  v29(); // _ZN8S20877C53v29Ev
  virtual void  v30(); // _ZN8S20877C53v30Ev
  virtual void  v31(); // _ZN8S20877C53v31Ev
  virtual void  v32(); // _ZN8S20877C53v32Ev
  virtual void  v33(); // _ZN8S20877C53v33Ev
  ~S20877C5(); // tgen
  S20877C5(); // tgen
};
//SIG(-1 S20877C5) C1{ BC2{ v9 v10 v11 v12 v13 v14 v15 Fi} BC3{ BC4{ vd v16 v17 v18 v19 v20 v21 v22 Fi} v23 v24 v25 v26 v27 Fp Fc} VBC4 v1 v2 v3 v4 v5 v6 v7 v8 Fi:18}


void  S20877C5 ::v26(){vfunc_called(this, "_ZN8S20877C53v26Ev");}
void  S20877C5 ::v27(){vfunc_called(this, "_ZN8S20877C53v27Ev");}
void  S20877C5 ::v28(){vfunc_called(this, "_ZN8S20877C53v28Ev");}
void  S20877C5 ::v29(){vfunc_called(this, "_ZN8S20877C53v29Ev");}
void  S20877C5 ::v30(){vfunc_called(this, "_ZN8S20877C53v30Ev");}
void  S20877C5 ::v31(){vfunc_called(this, "_ZN8S20877C53v31Ev");}
void  S20877C5 ::v32(){vfunc_called(this, "_ZN8S20877C53v32Ev");}
void  S20877C5 ::v33(){vfunc_called(this, "_ZN8S20877C53v33Ev");}
S20877C5 ::~S20877C5(){ note_dtor("S20877C5", this);} // tgen
S20877C5 ::S20877C5(){ note_ctor("S20877C5", this);} // tgen

static void Test_S20877C5()
{
  extern Class_Descriptor cd_S20877C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S20877C5, buf);
    S20877C5 *dp, &lv = *(dp=new (buf) S20877C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20877C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20877C5)");
    check_base_class_offset(lv, (S20877C6*), 0, "S20877C5");
    check_base_class_offset(lv, (S20877C4*)(S20877C7*), ABISELECT(16,8), "S20877C5");
    check_base_class_offset(lv, (S20877C7*), ABISELECT(16,8), "S20877C5");
    /*is_ambiguous_... S20877C5::S20877C4 */ AMB_check_base_class_offset(lv, (S20877C4*), ABISELECT(48,24), "S20877C5");
    set_bf_and_test(lv, s20877c5f0, ABISELECT(41,21), 0, 18, 1, "S20877C5");
    set_bf_and_test(lv, s20877c5f0, ABISELECT(41,21), 0, 18, hide_sll(1LL<<17), "S20877C5");
    test_class_info(&lv, &cd_S20877C5);
    dp->~S20877C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20877C5(Test_S20877C5, "S20877C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20877C5C1Ev();
extern void _ZN8S20877C5D1Ev();
Name_Map name_map_S20877C5[] = {
  NSPAIR(_ZN8S20877C5C1Ev),
  NSPAIR(_ZN8S20877C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
static Base_Class bases_S20877C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20877C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20877C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20877C7,    ABISELECT(16,8), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20877C4,    ABISELECT(48,24), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20877C5[];
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
extern void ABISELECT(_ZThn16_N8S20877C5D1Ev,_ZThn8_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20877C5D0Ev,_ZThn8_N8S20877C5D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20877C5D1Ev,_ZThn24_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S20877C5D0Ev,_ZThn24_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY vtc_S20877C5[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C5D1Ev,_ZThn8_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C5D0Ev,_ZThn8_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern VTBL_ENTRY _ZTV8S20877C5[];
static  VTT_ENTRY vtt_S20877C5[] = {
  {&(_ZTV8S20877C5[3]),  3,55},
  {&(_ZTV8S20877C5[46]),  46,55},
};
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20877C5D0Ev,_ZThn24_N8S20877C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20877C5D1Ev,_ZThn24_N8S20877C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20877C5 = {  "S20877C5", // class name
  bases_S20877C5, 4,
  &(vtc_S20877C5[0]), // expected_vtbl_contents
  &(vtt_S20877C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20877C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20877C5),55, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20877C5),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20877C9  {
  void *s20877c9f0;
  virtual void  v34(); // _ZN8S20877C93v34Ev
  virtual void  v35(); // _ZN8S20877C93v35Ev
  virtual void  v36(); // _ZN8S20877C93v36Ev
  virtual void  v37(); // _ZN8S20877C93v37Ev
  virtual void  v38(); // _ZN8S20877C93v38Ev
  virtual void  v39(); // _ZN8S20877C93v39Ev
  ~S20877C9(); // tgen
  S20877C9(); // tgen
};
//SIG(-1 S20877C9) C1{ v1 v2 v3 v4 v5 v6 Fp}


void  S20877C9 ::v34(){vfunc_called(this, "_ZN8S20877C93v34Ev");}
void  S20877C9 ::v35(){vfunc_called(this, "_ZN8S20877C93v35Ev");}
void  S20877C9 ::v36(){vfunc_called(this, "_ZN8S20877C93v36Ev");}
void  S20877C9 ::v37(){vfunc_called(this, "_ZN8S20877C93v37Ev");}
void  S20877C9 ::v38(){vfunc_called(this, "_ZN8S20877C93v38Ev");}
void  S20877C9 ::v39(){vfunc_called(this, "_ZN8S20877C93v39Ev");}
S20877C9 ::~S20877C9(){ note_dtor("S20877C9", this);} // tgen
S20877C9 ::S20877C9(){ note_ctor("S20877C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20877C9C1Ev();
extern void _ZN8S20877C9D1Ev();
Name_Map name_map_S20877C9[] = {
  NSPAIR(_ZN8S20877C9C1Ev),
  NSPAIR(_ZN8S20877C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20877C9[];
extern void _ZN8S20877C93v34Ev();
extern void _ZN8S20877C93v35Ev();
extern void _ZN8S20877C93v36Ev();
extern void _ZN8S20877C93v37Ev();
extern void _ZN8S20877C93v38Ev();
extern void _ZN8S20877C93v39Ev();
static  VTBL_ENTRY vtc_S20877C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C9[0]),
  (VTBL_ENTRY)&_ZN8S20877C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v39Ev,
};
extern VTBL_ENTRY _ZTI8S20877C9[];
extern  VTBL_ENTRY _ZTV8S20877C9[];
Class_Descriptor cd_S20877C9 = {  "S20877C9", // class name
  0,0,//no base classes
  &(vtc_S20877C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20877C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20877C9),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  S20877C8  : S20877C7 , S20877C5 , S20877C9 {
  ::S20877C6 s20877c8f0;
  void *s20877c8f1;
  __tsi64 s20877c8f2[10];
  virtual  ~S20877C8(); // _ZN8S20877C8D2Ev
  virtual void  v40(); // _ZN8S20877C83v40Ev
  virtual void  v41(); // _ZN8S20877C83v41Ev
  virtual void  v42(); // _ZN8S20877C83v42Ev
  virtual void  v43(); // _ZN8S20877C83v43Ev
  virtual void  v44(); // _ZN8S20877C83v44Ev
  virtual void  v45(); // _ZN8S20877C83v45Ev
  S20877C8(); // tgen
};
//SIG(-1 S20877C8) C1{ BC2{ BC3{ vd v7 v8 v9 v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 Fp Fc} BC4{ BC5{ v19 v20 v21 v22 v23 v24 v25 Fi} BC2 VBC3 v26 v27 v28 v29 v30 v31 v32 v33 Fi:18} BC6{ v34 v35 v36 v37 v38 v39 Fp} vd v1 v2 v3 v4 v5 v6 FC5 Fp FL[10]}


 S20877C8 ::~S20877C8(){ note_dtor("S20877C8", this);}
void  S20877C8 ::v40(){vfunc_called(this, "_ZN8S20877C83v40Ev");}
void  S20877C8 ::v41(){vfunc_called(this, "_ZN8S20877C83v41Ev");}
void  S20877C8 ::v42(){vfunc_called(this, "_ZN8S20877C83v42Ev");}
void  S20877C8 ::v43(){vfunc_called(this, "_ZN8S20877C83v43Ev");}
void  S20877C8 ::v44(){vfunc_called(this, "_ZN8S20877C83v44Ev");}
void  S20877C8 ::v45(){vfunc_called(this, "_ZN8S20877C83v45Ev");}
S20877C8 ::S20877C8(){ note_ctor("S20877C8", this);} // tgen

static void Test_S20877C8()
{
  extern Class_Descriptor cd_S20877C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,38)];
    init_test(&cd_S20877C8, buf);
    S20877C8 *dp, &lv = *(dp=new (buf) S20877C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,148), "sizeof(S20877C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20877C8)");
    /*is_ambiguous_... S20877C8::S20877C7 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C7*), 0, "S20877C8");
    /*is_ambiguous_... S20877C8::S20877C7 */ AMB_check_base_class_offset(lv, (S20877C7*), 0, "S20877C8");
    check_base_class_offset(lv, (S20877C6*)(S20877C5*), ABISELECT(32,16), "S20877C8");
    check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C5*), ABISELECT(48,24), "S20877C8");
    check_base_class_offset(lv, (S20877C7*)(S20877C5*), ABISELECT(48,24), "S20877C8");
    /*is_ambiguous_... S20877C5::S20877C4 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C5*), ABISELECT(200,140), "S20877C8");
    check_base_class_offset(lv, (S20877C5*), ABISELECT(32,16), "S20877C8");
    check_base_class_offset(lv, (S20877C9*), ABISELECT(80,40), "S20877C8");
    check_field_offset(lv, s20877c8f0, ABISELECT(96,48), "S20877C8.s20877c8f0");
    check_field_offset(lv, s20877c8f1, ABISELECT(112,56), "S20877C8.s20877c8f1");
    check_field_offset(lv, s20877c8f2, ABISELECT(120,60), "S20877C8.s20877c8f2");
    test_class_info(&lv, &cd_S20877C8);
    dp->~S20877C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20877C8(Test_S20877C8, "S20877C8", ABISELECT(216,148));

#else // __cplusplus

extern void _ZN8S20877C8C1Ev();
extern void _ZN8S20877C8D2Ev();
Name_Map name_map_S20877C8[] = {
  NSPAIR(_ZN8S20877C8C1Ev),
  NSPAIR(_ZN8S20877C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C5;
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
extern Class_Descriptor cd_S20877C9;
extern VTBL_ENTRY _ZTI8S20877C9[];
extern  VTBL_ENTRY _ZTV8S20877C9[];
static Base_Class bases_S20877C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20877C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S20877C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20877C6,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20877C4,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(48,24), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20877C4,    ABISELECT(200,140), //bcp->offset
    67, //bcp->virtual_function_table_offset
    10, //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_S20877C5,    ABISELECT(32,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20877C9,    ABISELECT(80,40), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20877C8[];
extern void _ZN8S20877C8D1Ev();
extern void _ZN8S20877C8D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C83v40Ev();
extern void _ZN8S20877C83v41Ev();
extern void _ZN8S20877C83v42Ev();
extern void _ZN8S20877C83v43Ev();
extern void _ZN8S20877C83v44Ev();
extern void _ZN8S20877C83v45Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn32_N8S20877C8D1Ev,_ZThn16_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S20877C8D0Ev,_ZThn16_N8S20877C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S20877C8D1Ev,_ZThn24_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20877C8D0Ev,_ZThn24_N8S20877C8D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C93v34Ev();
extern void _ZN8S20877C93v35Ev();
extern void _ZN8S20877C93v36Ev();
extern void _ZN8S20877C93v37Ev();
extern void _ZN8S20877C93v38Ev();
extern void _ZN8S20877C93v39Ev();
extern void ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn200_N8S20877C8D1Ev,_ZThn140_N8S20877C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev)();
extern void ABISELECT(_ZThn200_N8S20877C8D0Ev,_ZThn140_N8S20877C8D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY vtc_S20877C8[] = {
  ABISELECT(200,140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v40Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v41Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v45Ev,
  ABISELECT(168,124),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C8D1Ev,_ZThn16_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C8D0Ev,_ZThn16_N8S20877C8D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20877C8D1Ev,_ZThn24_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20877C8D0Ev,_ZThn24_N8S20877C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v39Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-200,-140),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern VTBL_ENTRY _ZTV8S20877C8[];
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C5__8S20877C8[] = {
  ABISELECT(168,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn168_N8S20877C5D1Ev,_ZThn124_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn168_N8S20877C5D0Ev,_ZThn124_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A1__8S20877C5__8S20877C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-124),
  ABISELECT(-168,-124),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
static  VTT_ENTRY vtt_S20877C8[] = {
  {&(_ZTV8S20877C8[3]),  3,86},
  {&(_tg__ZTV8S20877C5__8S20877C8[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A1__8S20877C5__8S20877C8[10]),  10,19},
  {&(_ZTV8S20877C8[26]),  26,86},
  {&(_ZTV8S20877C8[77]),  77,86},
};
extern VTBL_ENTRY _ZTI8S20877C8[];
extern  VTBL_ENTRY _ZTV8S20877C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C8[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20877C5D0Ev,_ZThn124_N8S20877C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20877C5D1Ev,_ZThn124_N8S20877C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20877C8D0Ev,_ZThn140_N8S20877C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20877C8D1Ev,_ZThn140_N8S20877C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20877C8 = {  "S20877C8", // class name
  bases_S20877C8, 8,
  &(vtc_S20877C8[0]), // expected_vtbl_contents
  &(vtt_S20877C8[0]), // expected_vtt_contents
  ABISELECT(216,148), // object size
  NSPAIRA(_ZTI8S20877C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20877C8),86, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20877C8),5, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20877C2  : virtual S20877C3 , S20877C4 , S20877C5 , S20877C8 , S20877C6 {
  void *s20877c2f0;
  virtual void  v46(); // _ZN8S20877C23v46Ev
  virtual void  v47(); // _ZN8S20877C23v47Ev
  virtual void  v48(); // _ZN8S20877C23v48Ev
  virtual void  v49(); // _ZN8S20877C23v49Ev
  virtual void  v50(); // _ZN8S20877C23v50Ev
  virtual void  v51(); // _ZN8S20877C23v51Ev
  virtual void  v52(); // _ZN8S20877C23v52Ev
  virtual void  v53(); // _ZN8S20877C23v53Ev
  virtual void  v54(); // _ZN8S20877C23v54Ev
  ~S20877C2(); // tgen
  S20877C2(); // tgen
};
//SIG(-1 S20877C2) C1{ VBC2{ vd v10 v11 Fp Fi} BC3{ vd v12 v13 v14 v15 v16 v17 v18 Fi} BC4{ BC5{ v19 v20 v21 v22 v23 v24 v25 Fi} BC6{ BC3 v26 v27 v28 v29 v30 Fp Fc} VBC3 v31 v32 v33 v34 v35 v36 v37 v38 Fi:18} BC7{ BC6 BC4 BC8{ v39 v40 v41 v42 v43 v44 Fp} vd v45 v46 v47 v48 v49 v50 FC5 Fp FL[10]} BC5 v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp}


void  S20877C2 ::v46(){vfunc_called(this, "_ZN8S20877C23v46Ev");}
void  S20877C2 ::v47(){vfunc_called(this, "_ZN8S20877C23v47Ev");}
void  S20877C2 ::v48(){vfunc_called(this, "_ZN8S20877C23v48Ev");}
void  S20877C2 ::v49(){vfunc_called(this, "_ZN8S20877C23v49Ev");}
void  S20877C2 ::v50(){vfunc_called(this, "_ZN8S20877C23v50Ev");}
void  S20877C2 ::v51(){vfunc_called(this, "_ZN8S20877C23v51Ev");}
void  S20877C2 ::v52(){vfunc_called(this, "_ZN8S20877C23v52Ev");}
void  S20877C2 ::v53(){vfunc_called(this, "_ZN8S20877C23v53Ev");}
void  S20877C2 ::v54(){vfunc_called(this, "_ZN8S20877C23v54Ev");}
S20877C2 ::~S20877C2(){ note_dtor("S20877C2", this);} // tgen
S20877C2 ::S20877C2(){ note_ctor("S20877C2", this);} // tgen

static void Test_S20877C2()
{
  extern Class_Descriptor cd_S20877C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,52)];
    init_test(&cd_S20877C2, buf);
    S20877C2 *dp, &lv = *(dp=new (buf) S20877C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,204), "sizeof(S20877C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20877C2)");
    check_base_class_offset(lv, (S20877C3*), ABISELECT(288,184), "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C4 */ AMB_check_base_class_offset(lv, (S20877C4*), 0, "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C6*)(S20877C5*), ABISELECT(16,8), "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C5*), ABISELECT(32,16), "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C7*)(S20877C5*), ABISELECT(32,16), "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C5*), ABISELECT(312,196), "S20877C2");
    /*is_ambiguous_... S20877C5::S20877C4 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C5*)(S20877C8*), ABISELECT(312,196), "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C5*), ABISELECT(16,8), "S20877C2");
    /*is_ambiguous_... S20877C8::S20877C7 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C8*), ABISELECT(64,32), "S20877C2");
    /*is_ambiguous_... S20877C8::S20877C7 */ AMB_check_base_class_offset(lv, (S20877C7*)(S20877C8*), ABISELECT(64,32), "S20877C2");
    check_base_class_offset(lv, (S20877C6*)(S20877C5*)(S20877C8*), ABISELECT(96,48), "S20877C2");
    check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C5*)(S20877C8*), ABISELECT(112,56), "S20877C2");
    check_base_class_offset(lv, (S20877C7*)(S20877C5*)(S20877C8*), ABISELECT(112,56), "S20877C2");
    check_base_class_offset(lv, (S20877C5*)(S20877C8*), ABISELECT(96,48), "S20877C2");
    check_base_class_offset(lv, (S20877C9*)(S20877C8*), ABISELECT(144,72), "S20877C2");
    check_base_class_offset(lv, (S20877C8*), ABISELECT(64,32), "S20877C2");
    /*is_ambiguous_... S20877C2::S20877C6 */ AMB_check_base_class_offset(lv, (S20877C6*), ABISELECT(264,172), "S20877C2");
    check_field_offset(lv, s20877c2f0, ABISELECT(280,180), "S20877C2.s20877c2f0");
    test_class_info(&lv, &cd_S20877C2);
    dp->~S20877C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20877C2(Test_S20877C2, "S20877C2", ABISELECT(328,204));

#else // __cplusplus

extern void _ZN8S20877C2C1Ev();
extern void _ZN8S20877C2D1Ev();
Name_Map name_map_S20877C2[] = {
  NSPAIR(_ZN8S20877C2C1Ev),
  NSPAIR(_ZN8S20877C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20877C3;
extern VTBL_ENTRY _ZTI8S20877C3[];
extern  VTBL_ENTRY _ZTV8S20877C3[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C5;
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C5;
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
extern Class_Descriptor cd_S20877C9;
extern VTBL_ENTRY _ZTI8S20877C9[];
extern  VTBL_ENTRY _ZTV8S20877C9[];
extern Class_Descriptor cd_S20877C8;
extern VTBL_ENTRY _ZTI8S20877C8[];
extern  VTBL_ENTRY _ZTV8S20877C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C8[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
static Base_Class bases_S20877C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20877C3,    ABISELECT(288,184), //bcp->offset
    134, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20877C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20877C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20877C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(32,16), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20877C4,    ABISELECT(312,196), //bcp->offset
    143, //bcp->virtual_function_table_offset
    10, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20877C5,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20877C4,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20877C7,    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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20877C6,    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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20877C4,    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
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(112,56), //bcp->offset
    101, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20877C5,    ABISELECT(96,48), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20877C9,    ABISELECT(144,72), //bcp->offset
    117, //bcp->virtual_function_table_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_S20877C8,    ABISELECT(64,32), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20877C6,    ABISELECT(264,172), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20877C2[];
extern void _ZN8S20877C2D1Ev();
extern void _ZN8S20877C2D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C23v46Ev();
extern void _ZN8S20877C23v47Ev();
extern void _ZN8S20877C23v48Ev();
extern void _ZN8S20877C23v49Ev();
extern void _ZN8S20877C23v50Ev();
extern void _ZN8S20877C23v51Ev();
extern void _ZN8S20877C23v52Ev();
extern void _ZN8S20877C23v53Ev();
extern void _ZN8S20877C23v54Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn16_N8S20877C2D1Ev,_ZThn8_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20877C2D0Ev,_ZThn8_N8S20877C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S20877C2D1Ev,_ZThn16_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20877C2D0Ev,_ZThn16_N8S20877C2D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void ABISELECT(_ZThn64_N8S20877C2D1Ev,_ZThn32_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20877C2D0Ev,_ZThn32_N8S20877C2D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C83v40Ev();
extern void _ZN8S20877C83v41Ev();
extern void _ZN8S20877C83v42Ev();
extern void _ZN8S20877C83v43Ev();
extern void _ZN8S20877C83v44Ev();
extern void _ZN8S20877C83v45Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn96_N8S20877C2D1Ev,_ZThn48_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20877C2D0Ev,_ZThn48_N8S20877C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20877C2D1Ev,_ZThn56_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20877C2D0Ev,_ZThn56_N8S20877C2D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C93v34Ev();
extern void _ZN8S20877C93v35Ev();
extern void _ZN8S20877C93v36Ev();
extern void _ZN8S20877C93v37Ev();
extern void _ZN8S20877C93v38Ev();
extern void _ZN8S20877C93v39Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S20877C2D1Ev,_ZThn184_N8S20877C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S20877C2D0Ev,_ZThn184_N8S20877C2D0Ev)() __attribute__((weak));
extern void _ZN8S20877C32v5Ev();
extern void _ZN8S20877C32v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn312_N8S20877C2D1Ev,_ZThn196_N8S20877C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev)();
extern void ABISELECT(_ZThn312_N8S20877C2D0Ev,_ZThn196_N8S20877C2D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY vtc_S20877C2[] = {
  ABISELECT(312,196),
  ABISELECT(288,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v46Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v47Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v48Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v49Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v50Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v51Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v52Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v53Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v54Ev,
  ABISELECT(296,188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C2D1Ev,_ZThn8_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C2D0Ev,_ZThn8_N8S20877C2D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C2D1Ev,_ZThn16_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C2D0Ev,_ZThn16_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  ABISELECT(248,164),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20877C2D1Ev,_ZThn32_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20877C2D0Ev,_ZThn32_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v40Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v41Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v45Ev,
  ABISELECT(216,148),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20877C2D1Ev,_ZThn48_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20877C2D0Ev,_ZThn48_N8S20877C2D0Ev),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S20877C2D1Ev,_ZThn56_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S20877C2D0Ev,_ZThn56_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v39Ev,
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  0,
  0,
  ABISELECT(-288,-184),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20877C32v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern VTBL_ENTRY _ZTV8S20877C2[];
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C5__8S20877C2[] = {
  ABISELECT(296,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn296_N8S20877C5D1Ev,_ZThn188_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn296_N8S20877C5D0Ev,_ZThn188_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A1__8S20877C5__8S20877C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-188),
  ABISELECT(-296,-188),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void _ZN8S20877C8D1Ev();
extern void _ZN8S20877C8D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C83v40Ev();
extern void _ZN8S20877C83v41Ev();
extern void _ZN8S20877C83v42Ev();
extern void _ZN8S20877C83v43Ev();
extern void _ZN8S20877C83v44Ev();
extern void _ZN8S20877C83v45Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C8__8S20877C2[] = {
  ABISELECT(248,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v40Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v41Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v45Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C58S20877C8__A1__8S20877C2[] = {
  ABISELECT(216,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn216_N8S20877C5D1Ev,_ZThn148_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn216_N8S20877C5D0Ev,_ZThn148_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A1__8S20877C58S20877C8__A1__8S20877C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-148),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn32_N8S20877C8D1Ev,_ZThn16_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S20877C8D0Ev,_ZThn16_N8S20877C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20877C5__8S20877C8__8S20877C2[] = {
  ABISELECT(216,148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C8D1Ev,_ZThn16_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C8D0Ev,_ZThn16_N8S20877C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn248_N8S20877C8D1Ev,_ZThn164_N8S20877C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev)();
extern void ABISELECT(_ZThn248_N8S20877C8D0Ev,_ZThn164_N8S20877C8D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A2__8S20877C8__8S20877C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-164),
  ABISELECT(-248,-164),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
static  VTT_ENTRY vtt_S20877C2[] = {
  {&(_ZTV8S20877C2[4]),  4,162},
  {&(_tg__ZTV8S20877C5__8S20877C2[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A1__8S20877C5__8S20877C2[10]),  10,19},
  {&(_tg__ZTV8S20877C8__8S20877C2[3]),  3,23},
  {&(_tg__ZTV8S20877C58S20877C8__A1__8S20877C2[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A1__8S20877C58S20877C8__A1__8S20877C2[10]),  10,19},
  {&(_tg__ZTV8S20877C5__8S20877C8__8S20877C2[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A2__8S20877C8__8S20877C2[10]),  10,19},
  {&(_ZTV8S20877C2[139]),  139,162},
  {&(_ZTV8S20877C2[25]),  25,162},
  {&(_ZTV8S20877C2[153]),  153,162},
  {&(_ZTV8S20877C2[61]),  61,162},
  {&(_ZTV8S20877C2[84]),  84,162},
};
extern VTBL_ENTRY _ZTI8S20877C2[];
extern  VTBL_ENTRY _ZTV8S20877C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C2[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20877C8D0Ev,_ZThn164_N8S20877C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20877C8D1Ev,_ZThn164_N8S20877C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20877C5D0Ev,_ZThn148_N8S20877C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S20877C5D0Ev,_ZThn188_N8S20877C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20877C5D1Ev,_ZThn148_N8S20877C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S20877C5D1Ev,_ZThn188_N8S20877C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20877C2D0Ev,_ZThn196_N8S20877C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20877C2D0Ev,_ZThn184_N8S20877C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20877C2D1Ev,_ZThn196_N8S20877C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20877C2D1Ev,_ZThn184_N8S20877C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20877C2 = {  "S20877C2", // class name
  bases_S20877C2, 16,
  &(vtc_S20877C2[0]), // expected_vtbl_contents
  &(vtt_S20877C2[0]), // expected_vtt_contents
  ABISELECT(328,204), // object size
  NSPAIRA(_ZTI8S20877C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20877C2),162, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20877C2),13, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20877C1  : virtual S20877C2 , S20877C5 , S20877C6 {
  int s20877c1f0;
  ::S20877C3 s20877c1f1;
  virtual void  v1(); // _ZN8S20877C12v1Ev
  virtual void  v2(); // _ZN8S20877C12v2Ev
  virtual void  v3(); // _ZN8S20877C12v3Ev
  virtual void  v4(); // _ZN8S20877C12v4Ev
  ~S20877C1(); // tgen
  S20877C1(); // tgen
};
//SIG(1 S20877C1) C1{ VBC2{ VBC3{ vd v5 v6 Fp Fi} BC4{ vd v7 v8 v9 v10 v11 v12 v13 Fi} BC5{ BC6{ v14 v15 v16 v17 v18 v19 v20 Fi} BC7{ BC4 v21 v22 v23 v24 v25 Fp Fc} VBC4 v26 v27 v28 v29 v30 v31 v32 v33 Fi:18} BC8{ BC7 BC5 BC9{ v34 v35 v36 v37 v38 v39 Fp} vd v40 v41 v42 v43 v44 v45 FC6 Fp FL[10]} BC6 v46 v47 v48 v49 v50 v51 v52 v53 v54 Fp} BC5 BC6 v1 v2 v3 v4 Fi FC3}


void  S20877C1 ::v1(){vfunc_called(this, "_ZN8S20877C12v1Ev");}
void  S20877C1 ::v2(){vfunc_called(this, "_ZN8S20877C12v2Ev");}
void  S20877C1 ::v3(){vfunc_called(this, "_ZN8S20877C12v3Ev");}
void  S20877C1 ::v4(){vfunc_called(this, "_ZN8S20877C12v4Ev");}
S20877C1 ::~S20877C1(){ note_dtor("S20877C1", this);} // tgen
S20877C1 ::S20877C1(){ note_ctor("S20877C1", this);} // tgen

static void Test_S20877C1()
{
  extern Class_Descriptor cd_S20877C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(53,64)];
    init_test(&cd_S20877C1, buf);
    S20877C1 *dp, &lv = *(dp=new (buf) S20877C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,252), "sizeof(S20877C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20877C1)");
    check_base_class_offset(lv, (S20877C3*)(S20877C2*), ABISELECT(376,232), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C4 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C2*), ABISELECT(88,48), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C6*)(S20877C5*)(S20877C2*), ABISELECT(104,56), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C5*)(S20877C2*), ABISELECT(120,64), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C7*)(S20877C5*)(S20877C2*), ABISELECT(120,64), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C5*)(S20877C2*), ABISELECT(400,244), "S20877C1");
    /*is_ambiguous_... S20877C5::S20877C4 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C5*)(S20877C8*)(S20877C2*), ABISELECT(400,244), "S20877C1");
    /*is_ambiguous_... S20877C1::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C5*), ABISELECT(400,244), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C5*)(S20877C2*), ABISELECT(104,56), "S20877C1");
    /*is_ambiguous_... S20877C8::S20877C7 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C8*)(S20877C2*), ABISELECT(152,80), "S20877C1");
    /*is_ambiguous_... S20877C8::S20877C7 */ AMB_check_base_class_offset(lv, (S20877C7*)(S20877C8*)(S20877C2*), ABISELECT(152,80), "S20877C1");
    check_base_class_offset(lv, (S20877C6*)(S20877C5*)(S20877C8*)(S20877C2*), ABISELECT(184,96), "S20877C1");
    check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C5*)(S20877C8*)(S20877C2*), ABISELECT(200,104), "S20877C1");
    check_base_class_offset(lv, (S20877C7*)(S20877C5*)(S20877C8*)(S20877C2*), ABISELECT(200,104), "S20877C1");
    check_base_class_offset(lv, (S20877C5*)(S20877C8*)(S20877C2*), ABISELECT(184,96), "S20877C1");
    check_base_class_offset(lv, (S20877C9*)(S20877C8*)(S20877C2*), ABISELECT(232,120), "S20877C1");
    check_base_class_offset(lv, (S20877C8*)(S20877C2*), ABISELECT(152,80), "S20877C1");
    /*is_ambiguous_... S20877C2::S20877C6 */ AMB_check_base_class_offset(lv, (S20877C6*)(S20877C2*), ABISELECT(352,220), "S20877C1");
    check_base_class_offset(lv, (S20877C2*), ABISELECT(88,48), "S20877C1");
    /*is_ambiguous_... S20877C1::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C6*)(S20877C5*), 0, "S20877C1");
    /*is_ambiguous_... S20877C1::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C4*)(S20877C7*)(S20877C5*), ABISELECT(16,8), "S20877C1");
    /*is_ambiguous_... S20877C1::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C7*)(S20877C5*), ABISELECT(16,8), "S20877C1");
    /*is_ambiguous_... S20877C1::S20877C5 */ AMB_check_base_class_offset(lv, (S20877C5*), 0, "S20877C1");
    /*is_ambiguous_... S20877C1::S20877C6 */ AMB_check_base_class_offset(lv, (S20877C6*), ABISELECT(48,24), "S20877C1");
    check_field_offset(lv, s20877c1f0, ABISELECT(60,32), "S20877C1.s20877c1f0");
    check_field_offset(lv, s20877c1f1, ABISELECT(64,36), "S20877C1.s20877c1f1");
    test_class_info(&lv, &cd_S20877C1);
    dp->~S20877C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20877C1(Test_S20877C1, "S20877C1", ABISELECT(416,252));

#else // __cplusplus

extern void _ZN8S20877C1C1Ev();
extern void _ZN8S20877C1D1Ev();
Name_Map name_map_S20877C1[] = {
  NSPAIR(_ZN8S20877C1C1Ev),
  NSPAIR(_ZN8S20877C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20877C3;
extern VTBL_ENTRY _ZTI8S20877C3[];
extern  VTBL_ENTRY _ZTV8S20877C3[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C5;
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C5;
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
extern Class_Descriptor cd_S20877C9;
extern VTBL_ENTRY _ZTI8S20877C9[];
extern  VTBL_ENTRY _ZTV8S20877C9[];
extern Class_Descriptor cd_S20877C8;
extern VTBL_ENTRY _ZTI8S20877C8[];
extern  VTBL_ENTRY _ZTV8S20877C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C8[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C2;
extern VTBL_ENTRY _ZTI8S20877C2[];
extern  VTBL_ENTRY _ZTV8S20877C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C2[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
extern Class_Descriptor cd_S20877C4;
extern VTBL_ENTRY _ZTI8S20877C4[];
extern  VTBL_ENTRY _ZTV8S20877C4[];
extern Class_Descriptor cd_S20877C7;
extern VTBL_ENTRY _ZTI8S20877C7[];
extern  VTBL_ENTRY _ZTV8S20877C7[];
extern Class_Descriptor cd_S20877C5;
extern VTBL_ENTRY _ZTI8S20877C5[];
extern  VTBL_ENTRY _ZTV8S20877C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C5[];
extern Class_Descriptor cd_S20877C6;
extern VTBL_ENTRY _ZTI8S20877C6[];
extern  VTBL_ENTRY _ZTV8S20877C6[];
static Base_Class bases_S20877C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20877C3,    ABISELECT(376,232), //bcp->offset
    234, //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
    1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20877C4,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20877C6,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20877C4,    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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(120,64), //bcp->offset
    142, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20877C4,    ABISELECT(400,244), //bcp->offset
    243, //bcp->virtual_function_table_offset
    10, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20877C5,    ABISELECT(104,56), //bcp->offset
    122, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20877C4,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20877C6,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20877C4,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(200,104), //bcp->offset
    201, //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
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20877C5,    ABISELECT(184,96), //bcp->offset
    181, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20877C9,    ABISELECT(232,120), //bcp->offset
    217, //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20877C8,    ABISELECT(152,80), //bcp->offset
    158, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20877C6,    ABISELECT(352,220), //bcp->offset
    225, //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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20877C2,    ABISELECT(88,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    53, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20877C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20877C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20877C7,    ABISELECT(16,8), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20877C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20877C6,    ABISELECT(48,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20877C1[];
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C1D1Ev();
extern void _ZN8S20877C1D0Ev();
extern void _ZN8S20877C12v1Ev();
extern void _ZN8S20877C12v2Ev();
extern void _ZN8S20877C12v3Ev();
extern void _ZN8S20877C12v4Ev();
extern void ABISELECT(_ZThn16_N8S20877C1D1Ev,_ZThn8_N8S20877C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20877C1D0Ev,_ZThn8_N8S20877C1D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void ABISELECT(_ZTv0_n40_N8S20877C1D1Ev,_ZTv0_n20_N8S20877C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20877C1D1Ev,_ZThn48_N8S20877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20877C1D0Ev,_ZTv0_n20_N8S20877C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20877C1D0Ev,_ZThn48_N8S20877C1D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C23v46Ev();
extern void _ZN8S20877C23v47Ev();
extern void _ZN8S20877C23v48Ev();
extern void _ZN8S20877C23v49Ev();
extern void _ZN8S20877C23v50Ev();
extern void _ZN8S20877C23v51Ev();
extern void _ZN8S20877C23v52Ev();
extern void _ZN8S20877C23v53Ev();
extern void _ZN8S20877C23v54Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZTvn16_n40_N8S20877C1D1Ev,_ZTvn8_n20_N8S20877C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20877C1D0Ev,_ZTvn8_n20_N8S20877C1D0Ev)();
extern void ABISELECT(_ZTvn32_n40_N8S20877C1D1Ev,_ZTvn16_n20_N8S20877C1D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N8S20877C1D0Ev,_ZTvn16_n20_N8S20877C1D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void ABISELECT(_ZTvn64_n40_N8S20877C1D1Ev,_ZTvn32_n20_N8S20877C1D1Ev)();
extern void ABISELECT(_ZTvn64_n40_N8S20877C1D0Ev,_ZTvn32_n20_N8S20877C1D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C83v40Ev();
extern void _ZN8S20877C83v41Ev();
extern void _ZN8S20877C83v42Ev();
extern void _ZN8S20877C83v43Ev();
extern void _ZN8S20877C83v44Ev();
extern void _ZN8S20877C83v45Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZTvn96_n40_N8S20877C1D1Ev,_ZTvn48_n20_N8S20877C1D1Ev)();
extern void ABISELECT(_ZTvn96_n40_N8S20877C1D0Ev,_ZTvn48_n20_N8S20877C1D0Ev)();
extern void ABISELECT(_ZTvn112_n40_N8S20877C1D1Ev,_ZTvn56_n20_N8S20877C1D1Ev)();
extern void ABISELECT(_ZTvn112_n40_N8S20877C1D0Ev,_ZTvn56_n20_N8S20877C1D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C93v34Ev();
extern void _ZN8S20877C93v35Ev();
extern void _ZN8S20877C93v36Ev();
extern void _ZN8S20877C93v37Ev();
extern void _ZN8S20877C93v38Ev();
extern void _ZN8S20877C93v39Ev();
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S20877C1D1Ev,_ZTv0_n12_N8S20877C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S20877C1D1Ev,_ZThn232_N8S20877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C1D0Ev,_ZTv0_n12_N8S20877C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S20877C1D0Ev,_ZThn232_N8S20877C1D0Ev)() __attribute__((weak));
extern void _ZN8S20877C32v5Ev();
extern void _ZN8S20877C32v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S20877C1D1Ev,_ZTv0_n12_N8S20877C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S20877C1D1Ev,_ZThn244_N8S20877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C1D0Ev,_ZTv0_n12_N8S20877C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S20877C1D0Ev,_ZThn244_N8S20877C1D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY vtc_S20877C1[] = {
  ABISELECT(376,232),
  ABISELECT(88,48),
  ABISELECT(400,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20877C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20877C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20877C12v4Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C1D1Ev,_ZThn8_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C1D0Ev,_ZThn8_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(144,72),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-48),
  ABISELECT(312,196),
  ABISELECT(288,184),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20877C1D1Ev,_ZTv0_n20_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20877C1D0Ev,_ZTv0_n20_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v46Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v47Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v48Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v49Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v50Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v51Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v52Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v53Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v54Ev,
  ABISELECT(296,188),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20877C1D1Ev,_ZTvn8_n20_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20877C1D0Ev,_ZTvn8_n20_N8S20877C1D0Ev),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N8S20877C1D1Ev,_ZTvn16_n20_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N8S20877C1D0Ev,_ZTvn16_n20_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  ABISELECT(248,164),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n40_N8S20877C1D1Ev,_ZTvn32_n20_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n40_N8S20877C1D0Ev,_ZTvn32_n20_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v40Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v41Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v45Ev,
  ABISELECT(216,148),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n40_N8S20877C1D1Ev,_ZTvn48_n20_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n40_N8S20877C1D0Ev,_ZTvn48_n20_N8S20877C1D0Ev),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n40_N8S20877C1D1Ev,_ZTvn56_n20_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n40_N8S20877C1D0Ev,_ZTvn56_n20_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&_ZN8S20877C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v38Ev,
  (VTBL_ENTRY)&_ZN8S20877C93v39Ev,
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  0,
  0,
  ABISELECT(-376,-232),
  ABISELECT(-376,-232),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C1D1Ev,_ZTv0_n12_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C1D0Ev,_ZTv0_n12_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20877C32v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-244),
  ABISELECT(-400,-244),
  (VTBL_ENTRY)&(_ZTI8S20877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C1D1Ev,_ZTv0_n12_N8S20877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C1D0Ev,_ZTv0_n12_N8S20877C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern VTBL_ENTRY _ZTV8S20877C1[];
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C5__A2__8S20877C1[] = {
  ABISELECT(400,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn400_N8S20877C5D1Ev,_ZThn244_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn400_N8S20877C5D0Ev,_ZThn244_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A1__8S20877C5__A2__8S20877C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-244),
  ABISELECT(-400,-244),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void _ZN8S20877C2D1Ev();
extern void _ZN8S20877C2D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C23v46Ev();
extern void _ZN8S20877C23v47Ev();
extern void _ZN8S20877C23v48Ev();
extern void _ZN8S20877C23v49Ev();
extern void _ZN8S20877C23v50Ev();
extern void _ZN8S20877C23v51Ev();
extern void _ZN8S20877C23v52Ev();
extern void _ZN8S20877C23v53Ev();
extern void _ZN8S20877C23v54Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C2__8S20877C1[] = {
  ABISELECT(312,196),
  ABISELECT(288,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v46Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v47Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v48Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v49Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v50Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v51Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v52Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v53Ev,
  (VTBL_ENTRY)&_ZN8S20877C23v54Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C58S20877C2__8S20877C1[] = {
  ABISELECT(296,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn296_N8S20877C5D1Ev,_ZThn188_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn296_N8S20877C5D0Ev,_ZThn188_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A1__8S20877C58S20877C2__8S20877C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-188),
  ABISELECT(-296,-188),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void _ZN8S20877C8D1Ev();
extern void _ZN8S20877C8D0Ev();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C83v40Ev();
extern void _ZN8S20877C83v41Ev();
extern void _ZN8S20877C83v42Ev();
extern void _ZN8S20877C83v43Ev();
extern void _ZN8S20877C83v44Ev();
extern void _ZN8S20877C83v45Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C88S20877C2__8S20877C1[] = {
  ABISELECT(248,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v40Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v41Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v45Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void _ZN8S20877C5D1Ev();
extern void _ZN8S20877C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C58S20877C88S20877C2__A1__8S20877C1[] = {
  ABISELECT(216,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20877C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev)();
extern void ABISELECT(_ZThn216_N8S20877C5D1Ev,_ZThn148_N8S20877C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev)();
extern void ABISELECT(_ZThn216_N8S20877C5D0Ev,_ZThn148_N8S20877C5D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A1__8S20877C58S20877C88S20877C2__A1__8S20877C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-148),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S20877C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn32_N8S20877C8D1Ev,_ZThn16_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S20877C8D0Ev,_ZThn16_N8S20877C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20877C5__8S20877C88S20877C2__8S20877C1[] = {
  ABISELECT(216,148),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C8D1Ev,_ZThn16_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20877C8D0Ev,_ZThn16_N8S20877C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev)();
extern void ABISELECT(_ZThn248_N8S20877C8D1Ev,_ZThn164_N8S20877C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev)();
extern void ABISELECT(_ZThn248_N8S20877C8D0Ev,_ZThn164_N8S20877C8D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A2__8S20877C88S20877C2__8S20877C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-164),
  ABISELECT(-248,-164),
  (VTBL_ENTRY)&(_ZTI8S20877C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S20877C2D1Ev,_ZThn184_N8S20877C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S20877C2D0Ev,_ZThn184_N8S20877C2D0Ev)() __attribute__((weak));
extern void _ZN8S20877C32v5Ev();
extern void _ZN8S20877C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C3__8S20877C2__8S20877C1[] = {
  0,
  0,
  ABISELECT(-288,-184),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20877C32v6Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn16_N8S20877C2D1Ev,_ZThn8_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20877C2D0Ev,_ZThn8_N8S20877C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20877C5__8S20877C2__8S20877C1[] = {
  ABISELECT(296,188),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C2D1Ev,_ZThn8_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20877C2D0Ev,_ZThn8_N8S20877C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn312_N8S20877C2D1Ev,_ZThn196_N8S20877C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev)();
extern void ABISELECT(_ZThn312_N8S20877C2D0Ev,_ZThn196_N8S20877C2D0Ev)() __attribute__((weak));
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C4__A2__8S20877C2__8S20877C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
};
extern void ABISELECT(_ZThn64_N8S20877C2D1Ev,_ZThn32_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20877C2D0Ev,_ZThn32_N8S20877C2D0Ev)();
extern void _ZN8S20877C42v7Ev();
extern void _ZN8S20877C42v8Ev();
extern void _ZN8S20877C42v9Ev();
extern void _ZN8S20877C43v10Ev();
extern void _ZN8S20877C43v11Ev();
extern void _ZN8S20877C43v12Ev();
extern void _ZN8S20877C43v13Ev();
extern void _ZN8S20877C73v21Ev();
extern void _ZN8S20877C73v22Ev();
extern void _ZN8S20877C73v23Ev();
extern void _ZN8S20877C73v24Ev();
extern void _ZN8S20877C73v25Ev();
extern void _ZN8S20877C83v40Ev();
extern void _ZN8S20877C83v41Ev();
extern void _ZN8S20877C83v42Ev();
extern void _ZN8S20877C83v43Ev();
extern void _ZN8S20877C83v44Ev();
extern void _ZN8S20877C83v45Ev();
static  VTBL_ENTRY _tg__ZTV8S20877C8__8S20877C2__8S20877C1[] = {
  ABISELECT(248,164),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20877C2D1Ev,_ZThn32_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20877C2D0Ev,_ZThn32_N8S20877C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20877C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20877C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20877C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20877C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v40Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v41Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20877C83v45Ev,
};
extern void _ZN8S20877C63v14Ev();
extern void _ZN8S20877C63v15Ev();
extern void _ZN8S20877C63v16Ev();
extern void _ZN8S20877C63v17Ev();
extern void _ZN8S20877C63v18Ev();
extern void _ZN8S20877C63v19Ev();
extern void _ZN8S20877C63v20Ev();
extern void _ZN8S20877C53v26Ev();
extern void _ZN8S20877C53v27Ev();
extern void _ZN8S20877C53v28Ev();
extern void _ZN8S20877C53v29Ev();
extern void _ZN8S20877C53v30Ev();
extern void _ZN8S20877C53v31Ev();
extern void _ZN8S20877C53v32Ev();
extern void _ZN8S20877C53v33Ev();
extern void ABISELECT(_ZThn96_N8S20877C2D1Ev,_ZThn48_N8S20877C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20877C2D0Ev,_ZThn48_N8S20877C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20877C58S20877C8__A1__8S20877C2__8S20877C1[] = {
  ABISELECT(216,148),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20877C2[0]),
  (VTBL_ENTRY)&_ZN8S20877C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20877C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20877C53v33Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20877C2D1Ev,_ZThn48_N8S20877C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20877C2D0Ev,_ZThn48_N8S20877C2D0Ev),
};
static  VTT_ENTRY vtt_S20877C1[] = {
  {&(_ZTV8S20877C1[5]),  5,262},
  {&(_tg__ZTV8S20877C5__A2__8S20877C1[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A1__8S20877C5__A2__8S20877C1[10]),  10,19},
  {&(_ZTV8S20877C1[104]),  104,262},
  {&(_ZTV8S20877C1[239]),  239,262},
  {&(_ZTV8S20877C1[125]),  125,262},
  {&(_ZTV8S20877C1[144]),  144,262},
  {&(_ZTV8S20877C1[253]),  253,262},
  {&(_ZTV8S20877C1[161]),  161,262},
  {&(_ZTV8S20877C1[184]),  184,262},
  {&(_ZTV8S20877C1[203]),  203,262},
  {&(_ZTV8S20877C1[219]),  219,262},
  {&(_ZTV8S20877C1[227]),  227,262},
  {&(_tg__ZTV8S20877C2__8S20877C1[4]),  4,22},
  {&(_tg__ZTV8S20877C58S20877C2__8S20877C1[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A1__8S20877C58S20877C2__8S20877C1[10]),  10,19},
  {&(_tg__ZTV8S20877C88S20877C2__8S20877C1[3]),  3,23},
  {&(_tg__ZTV8S20877C58S20877C88S20877C2__A1__8S20877C1[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A1__8S20877C58S20877C88S20877C2__A1__8S20877C1[10]),  10,19},
  {&(_tg__ZTV8S20877C5__8S20877C88S20877C2__8S20877C1[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A2__8S20877C88S20877C2__8S20877C1[10]),  10,19},
  {&(_tg__ZTV8S20877C3__8S20877C2__8S20877C1[5]),  5,9},
  {&(_tg__ZTV8S20877C5__8S20877C2__8S20877C1[3]),  3,20},
  {&(_tg__ZTV8S20877C4__A2__8S20877C2__8S20877C1[10]),  10,19},
  {&(_tg__ZTV8S20877C8__8S20877C2__8S20877C1[3]),  3,23},
  {&(_tg__ZTV8S20877C58S20877C8__A1__8S20877C2__8S20877C1[3]),  3,20},
};
extern VTBL_ENTRY _ZTI8S20877C1[];
extern  VTBL_ENTRY _ZTV8S20877C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20877C1[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C2D0Ev,_ZTv0_n12_N8S20877C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20877C2D0Ev,_ZThn196_N8S20877C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20877C2D0Ev,_ZThn184_N8S20877C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C2D1Ev,_ZTv0_n12_N8S20877C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20877C2D1Ev,_ZThn196_N8S20877C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20877C2D1Ev,_ZThn184_N8S20877C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C8D0Ev,_ZTv0_n12_N8S20877C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20877C8D0Ev,_ZThn164_N8S20877C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C8D1Ev,_ZTv0_n12_N8S20877C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20877C8D1Ev,_ZThn164_N8S20877C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D0Ev,_ZTv0_n12_N8S20877C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20877C5D0Ev,_ZThn148_N8S20877C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S20877C5D0Ev,_ZThn188_N8S20877C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S20877C5D0Ev,_ZThn244_N8S20877C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C5D1Ev,_ZTv0_n12_N8S20877C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20877C5D1Ev,_ZThn148_N8S20877C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S20877C5D1Ev,_ZThn188_N8S20877C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S20877C5D1Ev,_ZThn244_N8S20877C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C1D0Ev,_ZTv0_n12_N8S20877C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S20877C1D0Ev,_ZThn244_N8S20877C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S20877C1D0Ev,_ZThn232_N8S20877C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20877C1D1Ev,_ZTv0_n12_N8S20877C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S20877C1D1Ev,_ZThn244_N8S20877C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S20877C1D1Ev,_ZThn232_N8S20877C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20877C1D0Ev,_ZTv0_n20_N8S20877C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20877C1D0Ev,_ZThn48_N8S20877C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20877C1D1Ev,_ZTv0_n20_N8S20877C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20877C1D1Ev,_ZThn48_N8S20877C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20877C1 = {  "S20877C1", // class name
  bases_S20877C1, 22,
  &(vtc_S20877C1[0]), // expected_vtbl_contents
  &(vtt_S20877C1[0]), // expected_vtt_contents
  ABISELECT(416,252), // object size
  NSPAIRA(_ZTI8S20877C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20877C1),262, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20877C1),26, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C4_nt  {
  int s1702c4f0;
  void  mf1702c4(); // _ZN10S1702C4_nt8mf1702c4Ev
  virtual  ~S1702C4_nt(); // _ZN10S1702C4_ntD1Ev
  S1702C4_nt(); // tgen
};
//SIG(-1 S1702C4_nt) C1{ vd m Fi}


void  S1702C4_nt ::mf1702c4(){}
 S1702C4_nt ::~S1702C4_nt(){ note_dtor("S1702C4_nt", this);}
S1702C4_nt ::S1702C4_nt(){ note_ctor("S1702C4_nt", this);} // tgen

//skip512 S1702C4_nt

#else // __cplusplus

extern void _ZN10S1702C4_ntC1Ev();
extern void _ZN10S1702C4_ntD1Ev();
Name_Map name_map_S1702C4_nt[] = {
  NSPAIR(_ZN10S1702C4_ntC1Ev),
  NSPAIR(_ZN10S1702C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern void _ZN10S1702C4_ntD1Ev();
extern void _ZN10S1702C4_ntD0Ev();
static  VTBL_ENTRY vtc_S1702C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1702C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1702C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1702C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
VTBL_ENTRY *P__ZTI10S1702C4_nt = _ZTI10S1702C4_nt; 
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
Class_Descriptor cd_S1702C4_nt = {  "S1702C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1702C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1702C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1702C4_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  S1702C3_nt  : S1702C4_nt {
  virtual void  v6(); // _ZN10S1702C3_nt2v6Ev
  virtual void  v7(); // _ZN10S1702C3_nt2v7Ev
  virtual void  v8(); // _ZN10S1702C3_nt2v8Ev
  virtual void  v9(); // _ZN10S1702C3_nt2v9Ev
  virtual void  v10(); // _ZN10S1702C3_nt3v10Ev
  ~S1702C3_nt(); // tgen
  S1702C3_nt(); // tgen
};
//SIG(-1 S1702C3_nt) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5}


void  S1702C3_nt ::v6(){vfunc_called(this, "_ZN10S1702C3_nt2v6Ev");}
void  S1702C3_nt ::v7(){vfunc_called(this, "_ZN10S1702C3_nt2v7Ev");}
void  S1702C3_nt ::v8(){vfunc_called(this, "_ZN10S1702C3_nt2v8Ev");}
void  S1702C3_nt ::v9(){vfunc_called(this, "_ZN10S1702C3_nt2v9Ev");}
void  S1702C3_nt ::v10(){vfunc_called(this, "_ZN10S1702C3_nt3v10Ev");}
S1702C3_nt ::~S1702C3_nt(){ note_dtor("S1702C3_nt", this);} // tgen
S1702C3_nt ::S1702C3_nt(){ note_ctor("S1702C3_nt", this);} // tgen

//skip512 S1702C3_nt

#else // __cplusplus

extern void _ZN10S1702C3_ntC1Ev();
extern void _ZN10S1702C3_ntD1Ev();
Name_Map name_map_S1702C3_nt[] = {
  NSPAIR(_ZN10S1702C3_ntC1Ev),
  NSPAIR(_ZN10S1702C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
static Base_Class bases_S1702C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1702C3_nt[];
extern void _ZN10S1702C3_ntD1Ev();
extern void _ZN10S1702C3_ntD0Ev();
extern void _ZN10S1702C3_nt2v6Ev();
extern void _ZN10S1702C3_nt2v7Ev();
extern void _ZN10S1702C3_nt2v8Ev();
extern void _ZN10S1702C3_nt2v9Ev();
extern void _ZN10S1702C3_nt3v10Ev();
static  VTBL_ENTRY vtc_S1702C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1702C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1702C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S1702C3_nt[];
VTBL_ENTRY *P__ZTI10S1702C3_nt = _ZTI10S1702C3_nt; 
extern  VTBL_ENTRY _ZTV10S1702C3_nt[];
Class_Descriptor cd_S1702C3_nt = {  "S1702C3_nt", // class name
  bases_S1702C3_nt, 1,
  &(vtc_S1702C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1702C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1702C3_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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C5_nt  {
  ::S4224C36 s1702c5f0;
  void *s1702c5f1[2];
  void  mf1702c5(); // _ZN10S1702C5_nt8mf1702c5Ev
};
//SIG(-1 S1702C5_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S1702C5_nt ::mf1702c5(){}

//skip512 S1702C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C2_nt  : S1702C3_nt {
  void *s1702c2f0[3];
  ::S1702C5_nt s1702c2f1;
  virtual void  v11(); // _ZN10S1702C2_nt3v11Ev
  virtual void  v12(); // _ZN10S1702C2_nt3v12Ev
  virtual void  v13(); // _ZN10S1702C2_nt3v13Ev
  virtual void  v14(); // _ZN10S1702C2_nt3v14Ev
  virtual void  v15(); // _ZN10S1702C2_nt3v15Ev
  virtual void  v16(); // _ZN10S1702C2_nt3v16Ev
  virtual void  v17(); // _ZN10S1702C2_nt3v17Ev
  virtual void  v18(); // _ZN10S1702C2_nt3v18Ev
  virtual void  v19(); // _ZN10S1702C2_nt3v19Ev
  virtual void  v20(); // _ZN10S1702C2_nt3v20Ev
  virtual void  v21(); // _ZN10S1702C2_nt3v21Ev
  ~S1702C2_nt(); // tgen
  S1702C2_nt(); // tgen
};
//SIG(-1 S1702C2_nt) C1{ BC2{ BC3{ vd m Fi} v12 v13 v14 v15 v16} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[3] FC4{ m FC5{ m Fp Fi[2] FC6{ m}} Fp[2]}}


void  S1702C2_nt ::v11(){vfunc_called(this, "_ZN10S1702C2_nt3v11Ev");}
void  S1702C2_nt ::v12(){vfunc_called(this, "_ZN10S1702C2_nt3v12Ev");}
void  S1702C2_nt ::v13(){vfunc_called(this, "_ZN10S1702C2_nt3v13Ev");}
void  S1702C2_nt ::v14(){vfunc_called(this, "_ZN10S1702C2_nt3v14Ev");}
void  S1702C2_nt ::v15(){vfunc_called(this, "_ZN10S1702C2_nt3v15Ev");}
void  S1702C2_nt ::v16(){vfunc_called(this, "_ZN10S1702C2_nt3v16Ev");}
void  S1702C2_nt ::v17(){vfunc_called(this, "_ZN10S1702C2_nt3v17Ev");}
void  S1702C2_nt ::v18(){vfunc_called(this, "_ZN10S1702C2_nt3v18Ev");}
void  S1702C2_nt ::v19(){vfunc_called(this, "_ZN10S1702C2_nt3v19Ev");}
void  S1702C2_nt ::v20(){vfunc_called(this, "_ZN10S1702C2_nt3v20Ev");}
void  S1702C2_nt ::v21(){vfunc_called(this, "_ZN10S1702C2_nt3v21Ev");}
S1702C2_nt ::~S1702C2_nt(){ note_dtor("S1702C2_nt", this);} // tgen
S1702C2_nt ::S1702C2_nt(){ note_ctor("S1702C2_nt", this);} // tgen

//skip512 S1702C2_nt

#else // __cplusplus

extern void _ZN10S1702C2_ntC1Ev();
extern void _ZN10S1702C2_ntD1Ev();
Name_Map name_map_S1702C2_nt[] = {
  NSPAIR(_ZN10S1702C2_ntC1Ev),
  NSPAIR(_ZN10S1702C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
extern Class_Descriptor cd_S1702C3_nt;
extern VTBL_ENTRY _ZTI10S1702C3_nt[];
extern  VTBL_ENTRY _ZTV10S1702C3_nt[];
static Base_Class bases_S1702C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1702C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1702C2_nt[];
extern void _ZN10S1702C2_ntD1Ev();
extern void _ZN10S1702C2_ntD0Ev();
extern void _ZN10S1702C3_nt2v6Ev();
extern void _ZN10S1702C3_nt2v7Ev();
extern void _ZN10S1702C3_nt2v8Ev();
extern void _ZN10S1702C3_nt2v9Ev();
extern void _ZN10S1702C3_nt3v10Ev();
extern void _ZN10S1702C2_nt3v11Ev();
extern void _ZN10S1702C2_nt3v12Ev();
extern void _ZN10S1702C2_nt3v13Ev();
extern void _ZN10S1702C2_nt3v14Ev();
extern void _ZN10S1702C2_nt3v15Ev();
extern void _ZN10S1702C2_nt3v16Ev();
extern void _ZN10S1702C2_nt3v17Ev();
extern void _ZN10S1702C2_nt3v18Ev();
extern void _ZN10S1702C2_nt3v19Ev();
extern void _ZN10S1702C2_nt3v20Ev();
extern void _ZN10S1702C2_nt3v21Ev();
static  VTBL_ENTRY vtc_S1702C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1702C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1702C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v21Ev,
};
extern VTBL_ENTRY _ZTI10S1702C2_nt[];
VTBL_ENTRY *P__ZTI10S1702C2_nt = _ZTI10S1702C2_nt; 
extern  VTBL_ENTRY _ZTV10S1702C2_nt[];
Class_Descriptor cd_S1702C2_nt = {  "S1702C2_nt", // class name
  bases_S1702C2_nt, 2,
  &(vtc_S1702C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI10S1702C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1702C2_nt),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C13  {
  char s1702c13f0[1280];
  ::S4224C19_nt s1702c13f1;
  __tsi64 s1702c13f2;
  char s1702c13f3[2];
};
//SIG(-1 S1702C13) C1{ Fc[1280] FC2{ m Fp Fi FC3{ m}} FL Fc[2]}



static void Test_S1702C13()
{
  {
    init_simple_test("S1702C13");
    S1702C13 lv;
    check2(sizeof(lv), ABISELECT(1312,1304), "sizeof(S1702C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1702C13)");
    check_field_offset(lv, s1702c13f0, 0, "S1702C13.s1702c13f0");
    check_field_offset(lv, s1702c13f1, 1280, "S1702C13.s1702c13f1");
    check_field_offset(lv, s1702c13f2, ABISELECT(1296,1292), "S1702C13.s1702c13f2");
    check_field_offset(lv, s1702c13f3, ABISELECT(1304,1300), "S1702C13.s1702c13f3");
  }
}
static Arrange_To_Call_Me vS1702C13(Test_S1702C13, "S1702C13", ABISELECT(1312,1304));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C15_nt  {
  char s1702c15f0[4];
};
//SIG(-1 S1702C15_nt) C1{ Fc[4]}



//skip512 S1702C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C14  {
  int s1702c14f0[2];
  ::S4224C19_nt s1702c14f1;
  ::S4224C19_nt s1702c14f2;
  ::S4224C19_nt s1702c14f3;
  ::S4224C19_nt s1702c14f4;
  ::S4224C19_nt s1702c14f5;
  ::S4224C19_nt s1702c14f6;
  ::S4224C19_nt s1702c14f7;
  __tsi64 s1702c14f8;
  int s1702c14f9[2];
  ::S1702C15_nt s1702c14f10;
};
//SIG(-1 S1702C14) C1{ Fi[2] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 FC2 FL Fi[2] FC4{ Fc[4]}}



static void Test_S1702C14()
{
  {
    init_simple_test("S1702C14");
    S1702C14 lv;
    check2(sizeof(lv), ABISELECT(144,112), "sizeof(S1702C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1702C14)");
    check_field_offset(lv, s1702c14f0, 0, "S1702C14.s1702c14f0");
    check_field_offset(lv, s1702c14f1, 8, "S1702C14.s1702c14f1");
    check_field_offset(lv, s1702c14f2, ABISELECT(24,20), "S1702C14.s1702c14f2");
    check_field_offset(lv, s1702c14f3, ABISELECT(40,32), "S1702C14.s1702c14f3");
    check_field_offset(lv, s1702c14f4, ABISELECT(56,44), "S1702C14.s1702c14f4");
    check_field_offset(lv, s1702c14f5, ABISELECT(72,56), "S1702C14.s1702c14f5");
    check_field_offset(lv, s1702c14f6, ABISELECT(88,68), "S1702C14.s1702c14f6");
    check_field_offset(lv, s1702c14f7, ABISELECT(104,80), "S1702C14.s1702c14f7");
    check_field_offset(lv, s1702c14f8, ABISELECT(120,92), "S1702C14.s1702c14f8");
    check_field_offset(lv, s1702c14f9, ABISELECT(128,100), "S1702C14.s1702c14f9");
    check_field_offset(lv, s1702c14f10, ABISELECT(136,108), "S1702C14.s1702c14f10");
  }
}
static Arrange_To_Call_Me vS1702C14(Test_S1702C14, "S1702C14", ABISELECT(144,112));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1702C1  : S1702C2_nt {
  ::S4224C39_nt s1702c1f0;
  int s1702c1f1;
  ::S4224C43_nt s1702c1f2;
  ::S4224C19_nt s1702c1f3;
  ::S4224C19_nt s1702c1f4;
  ::S4224C19_nt s1702c1f5;
  void *s1702c1f6[2];
  ::S1702C5_nt s1702c1f7;
  ::S1702C13 s1702c1f8;
  ::S1702C14 s1702c1f9;
  char s1702c1f10[2];
  virtual void  v1(); // _ZN7S1702C12v1Ev
  virtual void  v2(); // _ZN7S1702C12v2Ev
  virtual void  v3(); // _ZN7S1702C12v3Ev
  virtual void  v4(); // _ZN7S1702C12v4Ev
  virtual void  v5(); // _ZN7S1702C12v5Ev
  ~S1702C1(); // tgen
  S1702C1(); // tgen
};
//SIG(1 S1702C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v6 v7 v8 v9 v10} v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp[3] FC5{ m FC6{ m Fp Fi[2] FC7{ m}} Fp[2]}} v1 v2 v3 v4 v5 FC8{ m FC9{ m FL}} Fi FC10{ m Fp} FC11{ m Fp Fi FC12{ m}} FC11 FC11 Fp[2] FC5 FC13{ Fc[1280] FC11 FL Fc[2]} FC14{ Fi[2] FC11 FC11 FC11 FC11 FC11 FC11 FC11 FL Fi[2] FC15{ Fc[4]}} Fc[2]}


void  S1702C1 ::v1(){vfunc_called(this, "_ZN7S1702C12v1Ev");}
void  S1702C1 ::v2(){vfunc_called(this, "_ZN7S1702C12v2Ev");}
void  S1702C1 ::v3(){vfunc_called(this, "_ZN7S1702C12v3Ev");}
void  S1702C1 ::v4(){vfunc_called(this, "_ZN7S1702C12v4Ev");}
void  S1702C1 ::v5(){vfunc_called(this, "_ZN7S1702C12v5Ev");}
S1702C1 ::~S1702C1(){ note_dtor("S1702C1", this);} // tgen
S1702C1 ::S1702C1(){ note_ctor("S1702C1", this);} // tgen

static void Test_S1702C1()
{
  extern Class_Descriptor cd_S1702C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(210,388)];
    init_test(&cd_S1702C1, buf);
    S1702C1 *dp, &lv = *(dp=new (buf) S1702C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1672,1548), "sizeof(S1702C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1702C1)");
    check_base_class_offset(lv, (S1702C4_nt*)(S1702C3_nt*)(S1702C2_nt*), 0, "S1702C1");
    check_base_class_offset(lv, (S1702C3_nt*)(S1702C2_nt*), 0, "S1702C1");
    check_base_class_offset(lv, (S1702C2_nt*), 0, "S1702C1");
    check_field_offset(lv, s1702c1f0, ABISELECT(80,44), "S1702C1.s1702c1f0");
    check_field_offset(lv, s1702c1f1, ABISELECT(88,52), "S1702C1.s1702c1f1");
    check_field_offset(lv, s1702c1f2, ABISELECT(96,56), "S1702C1.s1702c1f2");
    check_field_offset(lv, s1702c1f3, ABISELECT(104,60), "S1702C1.s1702c1f3");
    check_field_offset(lv, s1702c1f4, ABISELECT(120,72), "S1702C1.s1702c1f4");
    check_field_offset(lv, s1702c1f5, ABISELECT(136,84), "S1702C1.s1702c1f5");
    check_field_offset(lv, s1702c1f6, ABISELECT(152,96), "S1702C1.s1702c1f6");
    check_field_offset(lv, s1702c1f7, ABISELECT(168,104), "S1702C1.s1702c1f7");
    check_field_offset(lv, s1702c1f8, ABISELECT(208,128), "S1702C1.s1702c1f8");
    check_field_offset(lv, s1702c1f9, ABISELECT(1520,1432), "S1702C1.s1702c1f9");
    check_field_offset(lv, s1702c1f10, ABISELECT(1664,1544), "S1702C1.s1702c1f10");
    test_class_info(&lv, &cd_S1702C1);
    dp->~S1702C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1702C1(Test_S1702C1, "S1702C1", ABISELECT(1672,1548));

#else // __cplusplus

extern void _ZN7S1702C1C1Ev();
extern void _ZN7S1702C1D1Ev();
Name_Map name_map_S1702C1[] = {
  NSPAIR(_ZN7S1702C1C1Ev),
  NSPAIR(_ZN7S1702C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
extern Class_Descriptor cd_S1702C3_nt;
extern VTBL_ENTRY _ZTI10S1702C3_nt[];
extern  VTBL_ENTRY _ZTV10S1702C3_nt[];
extern Class_Descriptor cd_S1702C2_nt;
extern VTBL_ENTRY _ZTI10S1702C2_nt[];
extern  VTBL_ENTRY _ZTV10S1702C2_nt[];
static Base_Class bases_S1702C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1702C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1702C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1702C1[];
extern void _ZN7S1702C1D1Ev();
extern void _ZN7S1702C1D0Ev();
extern void _ZN10S1702C3_nt2v6Ev();
extern void _ZN10S1702C3_nt2v7Ev();
extern void _ZN10S1702C3_nt2v8Ev();
extern void _ZN10S1702C3_nt2v9Ev();
extern void _ZN10S1702C3_nt3v10Ev();
extern void _ZN10S1702C2_nt3v11Ev();
extern void _ZN10S1702C2_nt3v12Ev();
extern void _ZN10S1702C2_nt3v13Ev();
extern void _ZN10S1702C2_nt3v14Ev();
extern void _ZN10S1702C2_nt3v15Ev();
extern void _ZN10S1702C2_nt3v16Ev();
extern void _ZN10S1702C2_nt3v17Ev();
extern void _ZN10S1702C2_nt3v18Ev();
extern void _ZN10S1702C2_nt3v19Ev();
extern void _ZN10S1702C2_nt3v20Ev();
extern void _ZN10S1702C2_nt3v21Ev();
extern void _ZN7S1702C12v1Ev();
extern void _ZN7S1702C12v2Ev();
extern void _ZN7S1702C12v3Ev();
extern void _ZN7S1702C12v4Ev();
extern void _ZN7S1702C12v5Ev();
static  VTBL_ENTRY vtc_S1702C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1702C1[0]),
  (VTBL_ENTRY)&_ZN7S1702C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1702C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1702C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1702C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN7S1702C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1702C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1702C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1702C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1702C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1702C1[];
extern  VTBL_ENTRY _ZTV7S1702C1[];
Class_Descriptor cd_S1702C1 = {  "S1702C1", // class name
  bases_S1702C1, 3,
  &(vtc_S1702C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1672,1548), // object size
  NSPAIRA(_ZTI7S1702C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1702C1),25, //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  S1701C3  : S1702C4_nt {
  virtual void  v6(); // _ZN7S1701C32v6Ev
  virtual void  v7(); // _ZN7S1701C32v7Ev
  virtual void  v8(); // _ZN7S1701C32v8Ev
  virtual void  v9(); // _ZN7S1701C32v9Ev
  virtual void  v10(); // _ZN7S1701C33v10Ev
  ~S1701C3(); // tgen
  S1701C3(); // tgen
};
//SIG(-1 S1701C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5}


void  S1701C3 ::v6(){vfunc_called(this, "_ZN7S1701C32v6Ev");}
void  S1701C3 ::v7(){vfunc_called(this, "_ZN7S1701C32v7Ev");}
void  S1701C3 ::v8(){vfunc_called(this, "_ZN7S1701C32v8Ev");}
void  S1701C3 ::v9(){vfunc_called(this, "_ZN7S1701C32v9Ev");}
void  S1701C3 ::v10(){vfunc_called(this, "_ZN7S1701C33v10Ev");}
S1701C3 ::~S1701C3(){ note_dtor("S1701C3", this);} // tgen
S1701C3 ::S1701C3(){ note_ctor("S1701C3", this);} // tgen

static void Test_S1701C3()
{
  extern Class_Descriptor cd_S1701C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1701C3, buf);
    S1701C3 *dp, &lv = *(dp=new (buf) S1701C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1701C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1701C3)");
    check_base_class_offset(lv, (S1702C4_nt*), 0, "S1701C3");
    test_class_info(&lv, &cd_S1701C3);
    dp->~S1701C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1701C3(Test_S1701C3, "S1701C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1701C3C1Ev();
extern void _ZN7S1701C3D1Ev();
Name_Map name_map_S1701C3[] = {
  NSPAIR(_ZN7S1701C3C1Ev),
  NSPAIR(_ZN7S1701C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
static Base_Class bases_S1701C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1701C3[];
extern void _ZN7S1701C3D1Ev();
extern void _ZN7S1701C3D0Ev();
extern void _ZN7S1701C32v6Ev();
extern void _ZN7S1701C32v7Ev();
extern void _ZN7S1701C32v8Ev();
extern void _ZN7S1701C32v9Ev();
extern void _ZN7S1701C33v10Ev();
static  VTBL_ENTRY vtc_S1701C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1701C3[0]),
  (VTBL_ENTRY)&_ZN7S1701C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1701C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1701C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S1701C3[];
extern  VTBL_ENTRY _ZTV7S1701C3[];
Class_Descriptor cd_S1701C3 = {  "S1701C3", // class name
  bases_S1701C3, 1,
  &(vtc_S1701C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1701C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1701C3),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1701C2  : S1701C3 {
  void *s1701c2f0[3];
  ::S1702C5_nt s1701c2f1;
  virtual void  v11(); // _ZN7S1701C23v11Ev
  virtual void  v12(); // _ZN7S1701C23v12Ev
  virtual void  v13(); // _ZN7S1701C23v13Ev
  virtual void  v14(); // _ZN7S1701C23v14Ev
  virtual void  v15(); // _ZN7S1701C23v15Ev
  virtual void  v16(); // _ZN7S1701C23v16Ev
  virtual void  v17(); // _ZN7S1701C23v17Ev
  virtual void  v18(); // _ZN7S1701C23v18Ev
  virtual void  v19(); // _ZN7S1701C23v19Ev
  virtual void  v20(); // _ZN7S1701C23v20Ev
  virtual void  v21(); // _ZN7S1701C23v21Ev
  ~S1701C2(); // tgen
  S1701C2(); // tgen
};
//SIG(-1 S1701C2) C1{ BC2{ BC3{ vd m Fi} v12 v13 v14 v15 v16} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[3] FC4{ m FC5{ m Fp Fi[2] FC6{ m}} Fp[2]}}


void  S1701C2 ::v11(){vfunc_called(this, "_ZN7S1701C23v11Ev");}
void  S1701C2 ::v12(){vfunc_called(this, "_ZN7S1701C23v12Ev");}
void  S1701C2 ::v13(){vfunc_called(this, "_ZN7S1701C23v13Ev");}
void  S1701C2 ::v14(){vfunc_called(this, "_ZN7S1701C23v14Ev");}
void  S1701C2 ::v15(){vfunc_called(this, "_ZN7S1701C23v15Ev");}
void  S1701C2 ::v16(){vfunc_called(this, "_ZN7S1701C23v16Ev");}
void  S1701C2 ::v17(){vfunc_called(this, "_ZN7S1701C23v17Ev");}
void  S1701C2 ::v18(){vfunc_called(this, "_ZN7S1701C23v18Ev");}
void  S1701C2 ::v19(){vfunc_called(this, "_ZN7S1701C23v19Ev");}
void  S1701C2 ::v20(){vfunc_called(this, "_ZN7S1701C23v20Ev");}
void  S1701C2 ::v21(){vfunc_called(this, "_ZN7S1701C23v21Ev");}
S1701C2 ::~S1701C2(){ note_dtor("S1701C2", this);} // tgen
S1701C2 ::S1701C2(){ note_ctor("S1701C2", this);} // tgen

static void Test_S1701C2()
{
  extern Class_Descriptor cd_S1701C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S1701C2, buf);
    S1701C2 *dp, &lv = *(dp=new (buf) S1701C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S1701C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1701C2)");
    check_base_class_offset(lv, (S1702C4_nt*)(S1701C3*), 0, "S1701C2");
    check_base_class_offset(lv, (S1701C3*), 0, "S1701C2");
    check_field_offset(lv, s1701c2f0, ABISELECT(16,8), "S1701C2.s1701c2f0");
    check_field_offset(lv, s1701c2f1, ABISELECT(40,20), "S1701C2.s1701c2f1");
    test_class_info(&lv, &cd_S1701C2);
    dp->~S1701C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1701C2(Test_S1701C2, "S1701C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S1701C2C1Ev();
extern void _ZN7S1701C2D1Ev();
Name_Map name_map_S1701C2[] = {
  NSPAIR(_ZN7S1701C2C1Ev),
  NSPAIR(_ZN7S1701C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
extern Class_Descriptor cd_S1701C3;
extern VTBL_ENTRY _ZTI7S1701C3[];
extern  VTBL_ENTRY _ZTV7S1701C3[];
static Base_Class bases_S1701C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1701C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1701C2[];
extern void _ZN7S1701C2D1Ev();
extern void _ZN7S1701C2D0Ev();
extern void _ZN7S1701C32v6Ev();
extern void _ZN7S1701C32v7Ev();
extern void _ZN7S1701C32v8Ev();
extern void _ZN7S1701C32v9Ev();
extern void _ZN7S1701C33v10Ev();
extern void _ZN7S1701C23v11Ev();
extern void _ZN7S1701C23v12Ev();
extern void _ZN7S1701C23v13Ev();
extern void _ZN7S1701C23v14Ev();
extern void _ZN7S1701C23v15Ev();
extern void _ZN7S1701C23v16Ev();
extern void _ZN7S1701C23v17Ev();
extern void _ZN7S1701C23v18Ev();
extern void _ZN7S1701C23v19Ev();
extern void _ZN7S1701C23v20Ev();
extern void _ZN7S1701C23v21Ev();
static  VTBL_ENTRY vtc_S1701C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1701C2[0]),
  (VTBL_ENTRY)&_ZN7S1701C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1701C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1701C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v21Ev,
};
extern VTBL_ENTRY _ZTI7S1701C2[];
extern  VTBL_ENTRY _ZTV7S1701C2[];
Class_Descriptor cd_S1701C2 = {  "S1701C2", // class name
  bases_S1701C2, 2,
  &(vtc_S1701C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S1701C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1701C2),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1701C14  {
  int s1701c14f0[2];
  ::S4224C19_nt s1701c14f1;
  ::S4224C19_nt s1701c14f2;
  ::S4224C19_nt s1701c14f3;
  ::S4224C19_nt s1701c14f4;
  ::S4224C19_nt s1701c14f5;
  ::S4224C19_nt s1701c14f6;
  ::S4224C19_nt s1701c14f7;
  long s1701c14f8;
  int s1701c14f9[2];
  ::S1702C15_nt s1701c14f10;
};
//SIG(-1 S1701C14) C1{ Fi[2] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 FC2 Fl Fi[2] FC4{ Fc[4]}}



static void Test_S1701C14()
{
  {
    init_simple_test("S1701C14");
    S1701C14 lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S1701C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1701C14)");
    check_field_offset(lv, s1701c14f0, 0, "S1701C14.s1701c14f0");
    check_field_offset(lv, s1701c14f1, 8, "S1701C14.s1701c14f1");
    check_field_offset(lv, s1701c14f2, ABISELECT(24,20), "S1701C14.s1701c14f2");
    check_field_offset(lv, s1701c14f3, ABISELECT(40,32), "S1701C14.s1701c14f3");
    check_field_offset(lv, s1701c14f4, ABISELECT(56,44), "S1701C14.s1701c14f4");
    check_field_offset(lv, s1701c14f5, ABISELECT(72,56), "S1701C14.s1701c14f5");
    check_field_offset(lv, s1701c14f6, ABISELECT(88,68), "S1701C14.s1701c14f6");
    check_field_offset(lv, s1701c14f7, ABISELECT(104,80), "S1701C14.s1701c14f7");
    check_field_offset(lv, s1701c14f8, ABISELECT(120,92), "S1701C14.s1701c14f8");
    check_field_offset(lv, s1701c14f9, ABISELECT(128,96), "S1701C14.s1701c14f9");
    check_field_offset(lv, s1701c14f10, ABISELECT(136,104), "S1701C14.s1701c14f10");
  }
}
static Arrange_To_Call_Me vS1701C14(Test_S1701C14, "S1701C14", ABISELECT(144,108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1701C1  : S1701C2 {
  ::S4224C39_nt s1701c1f0;
  int s1701c1f1;
  ::S4224C43_nt s1701c1f2;
  ::S4224C19_nt s1701c1f3;
  ::S4224C19_nt s1701c1f4;
  ::S4224C19_nt s1701c1f5;
  void *s1701c1f6[2];
  ::S1702C5_nt s1701c1f7;
  ::S1702C13 s1701c1f8;
  ::S1701C14 s1701c1f9;
  char s1701c1f10[2];
  virtual void  v1(); // _ZN7S1701C12v1Ev
  virtual void  v2(); // _ZN7S1701C12v2Ev
  virtual void  v3(); // _ZN7S1701C12v3Ev
  virtual void  v4(); // _ZN7S1701C12v4Ev
  virtual void  v5(); // _ZN7S1701C12v5Ev
  ~S1701C1(); // tgen
  S1701C1(); // tgen
};
//SIG(1 S1701C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v6 v7 v8 v9 v10} v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp[3] FC5{ m FC6{ m Fp Fi[2] FC7{ m}} Fp[2]}} v1 v2 v3 v4 v5 FC8{ m FC9{ m FL}} Fi FC10{ m Fp} FC11{ m Fp Fi FC12{ m}} FC11 FC11 Fp[2] FC5 FC13{ Fc[1280] FC11 FL Fc[2]} FC14{ Fi[2] FC11 FC11 FC11 FC11 FC11 FC11 FC11 Fl Fi[2] FC15{ Fc[4]}} Fc[2]}


void  S1701C1 ::v1(){vfunc_called(this, "_ZN7S1701C12v1Ev");}
void  S1701C1 ::v2(){vfunc_called(this, "_ZN7S1701C12v2Ev");}
void  S1701C1 ::v3(){vfunc_called(this, "_ZN7S1701C12v3Ev");}
void  S1701C1 ::v4(){vfunc_called(this, "_ZN7S1701C12v4Ev");}
void  S1701C1 ::v5(){vfunc_called(this, "_ZN7S1701C12v5Ev");}
S1701C1 ::~S1701C1(){ note_dtor("S1701C1", this);} // tgen
S1701C1 ::S1701C1(){ note_ctor("S1701C1", this);} // tgen

static void Test_S1701C1()
{
  extern Class_Descriptor cd_S1701C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(210,387)];
    init_test(&cd_S1701C1, buf);
    S1701C1 *dp, &lv = *(dp=new (buf) S1701C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1672,1544), "sizeof(S1701C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1701C1)");
    check_base_class_offset(lv, (S1702C4_nt*)(S1701C3*)(S1701C2*), 0, "S1701C1");
    check_base_class_offset(lv, (S1701C3*)(S1701C2*), 0, "S1701C1");
    check_base_class_offset(lv, (S1701C2*), 0, "S1701C1");
    check_field_offset(lv, s1701c1f0, ABISELECT(80,44), "S1701C1.s1701c1f0");
    check_field_offset(lv, s1701c1f1, ABISELECT(88,52), "S1701C1.s1701c1f1");
    check_field_offset(lv, s1701c1f2, ABISELECT(96,56), "S1701C1.s1701c1f2");
    check_field_offset(lv, s1701c1f3, ABISELECT(104,60), "S1701C1.s1701c1f3");
    check_field_offset(lv, s1701c1f4, ABISELECT(120,72), "S1701C1.s1701c1f4");
    check_field_offset(lv, s1701c1f5, ABISELECT(136,84), "S1701C1.s1701c1f5");
    check_field_offset(lv, s1701c1f6, ABISELECT(152,96), "S1701C1.s1701c1f6");
    check_field_offset(lv, s1701c1f7, ABISELECT(168,104), "S1701C1.s1701c1f7");
    check_field_offset(lv, s1701c1f8, ABISELECT(208,128), "S1701C1.s1701c1f8");
    check_field_offset(lv, s1701c1f9, ABISELECT(1520,1432), "S1701C1.s1701c1f9");
    check_field_offset(lv, s1701c1f10, ABISELECT(1664,1540), "S1701C1.s1701c1f10");
    test_class_info(&lv, &cd_S1701C1);
    dp->~S1701C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1701C1(Test_S1701C1, "S1701C1", ABISELECT(1672,1544));

#else // __cplusplus

extern void _ZN7S1701C1C1Ev();
extern void _ZN7S1701C1D1Ev();
Name_Map name_map_S1701C1[] = {
  NSPAIR(_ZN7S1701C1C1Ev),
  NSPAIR(_ZN7S1701C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
extern Class_Descriptor cd_S1701C3;
extern VTBL_ENTRY _ZTI7S1701C3[];
extern  VTBL_ENTRY _ZTV7S1701C3[];
extern Class_Descriptor cd_S1701C2;
extern VTBL_ENTRY _ZTI7S1701C2[];
extern  VTBL_ENTRY _ZTV7S1701C2[];
static Base_Class bases_S1701C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1701C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1701C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1701C1[];
extern void _ZN7S1701C1D1Ev();
extern void _ZN7S1701C1D0Ev();
extern void _ZN7S1701C32v6Ev();
extern void _ZN7S1701C32v7Ev();
extern void _ZN7S1701C32v8Ev();
extern void _ZN7S1701C32v9Ev();
extern void _ZN7S1701C33v10Ev();
extern void _ZN7S1701C23v11Ev();
extern void _ZN7S1701C23v12Ev();
extern void _ZN7S1701C23v13Ev();
extern void _ZN7S1701C23v14Ev();
extern void _ZN7S1701C23v15Ev();
extern void _ZN7S1701C23v16Ev();
extern void _ZN7S1701C23v17Ev();
extern void _ZN7S1701C23v18Ev();
extern void _ZN7S1701C23v19Ev();
extern void _ZN7S1701C23v20Ev();
extern void _ZN7S1701C23v21Ev();
extern void _ZN7S1701C12v1Ev();
extern void _ZN7S1701C12v2Ev();
extern void _ZN7S1701C12v3Ev();
extern void _ZN7S1701C12v4Ev();
extern void _ZN7S1701C12v5Ev();
static  VTBL_ENTRY vtc_S1701C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1701C1[0]),
  (VTBL_ENTRY)&_ZN7S1701C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1701C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1701C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1701C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1701C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1701C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1701C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1701C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1701C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1701C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1701C1[];
extern  VTBL_ENTRY _ZTV7S1701C1[];
Class_Descriptor cd_S1701C1 = {  "S1701C1", // class name
  bases_S1701C1, 3,
  &(vtc_S1701C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1672,1544), // object size
  NSPAIRA(_ZTI7S1701C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1701C1),25, //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  S4230C3  {
  ::S4224C18_nt s4230c3f0;
  ::S4224C18_nt s4230c3f1;
  ::S4224C18_nt s4230c3f2;
  ::S4224C18_nt s4230c3f3;
  ::S4224C18_nt s4230c3f4;
  void *s4230c3f5[5];
  char s4230c3f6[2];
  void *s4230c3f7[2];
  int s4230c3f8;
  virtual  ~S4230C3(); // _ZN7S4230C3D1Ev
  virtual void  v11(); // _ZN7S4230C33v11Ev
  virtual void  v12(); // _ZN7S4230C33v12Ev
  virtual void  v13(); // _ZN7S4230C33v13Ev
  virtual void  v14(); // _ZN7S4230C33v14Ev
  virtual void  v15(); // _ZN7S4230C33v15Ev
  virtual void  v16(); // _ZN7S4230C33v16Ev
  virtual void  v17(); // _ZN7S4230C33v17Ev
  virtual void  v18(); // _ZN7S4230C33v18Ev
  virtual void  v19(); // _ZN7S4230C33v19Ev
  virtual void  v20(); // _ZN7S4230C33v20Ev
  virtual void  v21(); // _ZN7S4230C33v21Ev
  virtual void  v22(); // _ZN7S4230C33v22Ev
  virtual void  v23(); // _ZN7S4230C33v23Ev
  virtual void  v24(); // _ZN7S4230C33v24Ev
  virtual void  v25(); // _ZN7S4230C33v25Ev
  virtual void  v26(); // _ZN7S4230C33v26Ev
  virtual void  v27(); // _ZN7S4230C33v27Ev
  virtual void  v28(); // _ZN7S4230C33v28Ev
  virtual void  v29(); // _ZN7S4230C33v29Ev
  virtual void  v30(); // _ZN7S4230C33v30Ev
  virtual void  v31(); // _ZN7S4230C33v31Ev
  virtual void  v32(); // _ZN7S4230C33v32Ev
  virtual void  v33(); // _ZN7S4230C33v33Ev
  virtual void  v34(); // _ZN7S4230C33v34Ev
  virtual void  v35(); // _ZN7S4230C33v35Ev
  virtual void  v36(); // _ZN7S4230C33v36Ev
  virtual void  v37(); // _ZN7S4230C33v37Ev
  S4230C3(); // tgen
};
//SIG(-1 S4230C3) 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 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC2 FC2 FC2 Fp[5] Fc[2] Fp[2] Fi}


 S4230C3 ::~S4230C3(){ note_dtor("S4230C3", this);}
void  S4230C3 ::v11(){vfunc_called(this, "_ZN7S4230C33v11Ev");}
void  S4230C3 ::v12(){vfunc_called(this, "_ZN7S4230C33v12Ev");}
void  S4230C3 ::v13(){vfunc_called(this, "_ZN7S4230C33v13Ev");}
void  S4230C3 ::v14(){vfunc_called(this, "_ZN7S4230C33v14Ev");}
void  S4230C3 ::v15(){vfunc_called(this, "_ZN7S4230C33v15Ev");}
void  S4230C3 ::v16(){vfunc_called(this, "_ZN7S4230C33v16Ev");}
void  S4230C3 ::v17(){vfunc_called(this, "_ZN7S4230C33v17Ev");}
void  S4230C3 ::v18(){vfunc_called(this, "_ZN7S4230C33v18Ev");}
void  S4230C3 ::v19(){vfunc_called(this, "_ZN7S4230C33v19Ev");}
void  S4230C3 ::v20(){vfunc_called(this, "_ZN7S4230C33v20Ev");}
void  S4230C3 ::v21(){vfunc_called(this, "_ZN7S4230C33v21Ev");}
void  S4230C3 ::v22(){vfunc_called(this, "_ZN7S4230C33v22Ev");}
void  S4230C3 ::v23(){vfunc_called(this, "_ZN7S4230C33v23Ev");}
void  S4230C3 ::v24(){vfunc_called(this, "_ZN7S4230C33v24Ev");}
void  S4230C3 ::v25(){vfunc_called(this, "_ZN7S4230C33v25Ev");}
void  S4230C3 ::v26(){vfunc_called(this, "_ZN7S4230C33v26Ev");}
void  S4230C3 ::v27(){vfunc_called(this, "_ZN7S4230C33v27Ev");}
void  S4230C3 ::v28(){vfunc_called(this, "_ZN7S4230C33v28Ev");}
void  S4230C3 ::v29(){vfunc_called(this, "_ZN7S4230C33v29Ev");}
void  S4230C3 ::v30(){vfunc_called(this, "_ZN7S4230C33v30Ev");}
void  S4230C3 ::v31(){vfunc_called(this, "_ZN7S4230C33v31Ev");}
void  S4230C3 ::v32(){vfunc_called(this, "_ZN7S4230C33v32Ev");}
void  S4230C3 ::v33(){vfunc_called(this, "_ZN7S4230C33v33Ev");}
void  S4230C3 ::v34(){vfunc_called(this, "_ZN7S4230C33v34Ev");}
void  S4230C3 ::v35(){vfunc_called(this, "_ZN7S4230C33v35Ev");}
void  S4230C3 ::v36(){vfunc_called(this, "_ZN7S4230C33v36Ev");}
void  S4230C3 ::v37(){vfunc_called(this, "_ZN7S4230C33v37Ev");}
S4230C3 ::S4230C3(){ note_ctor("S4230C3", this);} // tgen

static void Test_S4230C3()
{
  extern Class_Descriptor cd_S4230C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S4230C3, buf);
    S4230C3 *dp, &lv = *(dp=new (buf) S4230C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S4230C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4230C3)");
    check_field_offset(lv, s4230c3f0, ABISELECT(8,4), "S4230C3.s4230c3f0");
    check_field_offset(lv, s4230c3f1, ABISELECT(32,20), "S4230C3.s4230c3f1");
    check_field_offset(lv, s4230c3f2, ABISELECT(56,36), "S4230C3.s4230c3f2");
    check_field_offset(lv, s4230c3f3, ABISELECT(80,52), "S4230C3.s4230c3f3");
    check_field_offset(lv, s4230c3f4, ABISELECT(104,68), "S4230C3.s4230c3f4");
    check_field_offset(lv, s4230c3f5, ABISELECT(128,84), "S4230C3.s4230c3f5");
    check_field_offset(lv, s4230c3f6, ABISELECT(168,104), "S4230C3.s4230c3f6");
    check_field_offset(lv, s4230c3f7, ABISELECT(176,108), "S4230C3.s4230c3f7");
    check_field_offset(lv, s4230c3f8, ABISELECT(192,116), "S4230C3.s4230c3f8");
    test_class_info(&lv, &cd_S4230C3);
    dp->~S4230C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4230C3(Test_S4230C3, "S4230C3", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN7S4230C3C1Ev();
extern void _ZN7S4230C3D1Ev();
Name_Map name_map_S4230C3[] = {
  NSPAIR(_ZN7S4230C3C1Ev),
  NSPAIR(_ZN7S4230C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4230C3[];
extern void _ZN7S4230C3D1Ev();
extern void _ZN7S4230C3D0Ev();
extern void _ZN7S4230C33v11Ev();
extern void _ZN7S4230C33v12Ev();
extern void _ZN7S4230C33v13Ev();
extern void _ZN7S4230C33v14Ev();
extern void _ZN7S4230C33v15Ev();
extern void _ZN7S4230C33v16Ev();
extern void _ZN7S4230C33v17Ev();
extern void _ZN7S4230C33v18Ev();
extern void _ZN7S4230C33v19Ev();
extern void _ZN7S4230C33v20Ev();
extern void _ZN7S4230C33v21Ev();
extern void _ZN7S4230C33v22Ev();
extern void _ZN7S4230C33v23Ev();
extern void _ZN7S4230C33v24Ev();
extern void _ZN7S4230C33v25Ev();
extern void _ZN7S4230C33v26Ev();
extern void _ZN7S4230C33v27Ev();
extern void _ZN7S4230C33v28Ev();
extern void _ZN7S4230C33v29Ev();
extern void _ZN7S4230C33v30Ev();
extern void _ZN7S4230C33v31Ev();
extern void _ZN7S4230C33v32Ev();
extern void _ZN7S4230C33v33Ev();
extern void _ZN7S4230C33v34Ev();
extern void _ZN7S4230C33v35Ev();
extern void _ZN7S4230C33v36Ev();
extern void _ZN7S4230C33v37Ev();
static  VTBL_ENTRY vtc_S4230C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4230C3[0]),
  (VTBL_ENTRY)&_ZN7S4230C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4230C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v37Ev,
};
extern VTBL_ENTRY _ZTI7S4230C3[];
extern  VTBL_ENTRY _ZTV7S4230C3[];
Class_Descriptor cd_S4230C3 = {  "S4230C3", // class name
  0,0,//no base classes
  &(vtc_S4230C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI7S4230C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4230C3),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4230C2  : S4230C3 {
  char s4230c2f0[6];
  virtual  ~S4230C2(); // _ZN7S4230C2D1Ev
  virtual void  v38(); // _ZN7S4230C23v38Ev
  virtual void  v39(); // _ZN7S4230C23v39Ev
  virtual void  v40(); // _ZN7S4230C23v40Ev
  virtual void  v41(); // _ZN7S4230C23v41Ev
  virtual void  v42(); // _ZN7S4230C23v42Ev
  virtual void  v43(); // _ZN7S4230C23v43Ev
  virtual void  v44(); // _ZN7S4230C23v44Ev
  virtual void  v45(); // _ZN7S4230C23v45Ev
  virtual void  v46(); // _ZN7S4230C23v46Ev
  virtual void  v47(); // _ZN7S4230C23v47Ev
  virtual void  v48(); // _ZN7S4230C23v48Ev
  virtual void  v49(); // _ZN7S4230C23v49Ev
  virtual void  v50(); // _ZN7S4230C23v50Ev
  virtual void  v51(); // _ZN7S4230C23v51Ev
  virtual void  v52(); // _ZN7S4230C23v52Ev
  S4230C2(); // tgen
};
//SIG(-1 S4230C2) C1{ BC2{ 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 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} FC3 FC3 FC3 FC3 Fp[5] Fc[2] Fp[2] Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc[6]}


 S4230C2 ::~S4230C2(){ note_dtor("S4230C2", this);}
void  S4230C2 ::v38(){vfunc_called(this, "_ZN7S4230C23v38Ev");}
void  S4230C2 ::v39(){vfunc_called(this, "_ZN7S4230C23v39Ev");}
void  S4230C2 ::v40(){vfunc_called(this, "_ZN7S4230C23v40Ev");}
void  S4230C2 ::v41(){vfunc_called(this, "_ZN7S4230C23v41Ev");}
void  S4230C2 ::v42(){vfunc_called(this, "_ZN7S4230C23v42Ev");}
void  S4230C2 ::v43(){vfunc_called(this, "_ZN7S4230C23v43Ev");}
void  S4230C2 ::v44(){vfunc_called(this, "_ZN7S4230C23v44Ev");}
void  S4230C2 ::v45(){vfunc_called(this, "_ZN7S4230C23v45Ev");}
void  S4230C2 ::v46(){vfunc_called(this, "_ZN7S4230C23v46Ev");}
void  S4230C2 ::v47(){vfunc_called(this, "_ZN7S4230C23v47Ev");}
void  S4230C2 ::v48(){vfunc_called(this, "_ZN7S4230C23v48Ev");}
void  S4230C2 ::v49(){vfunc_called(this, "_ZN7S4230C23v49Ev");}
void  S4230C2 ::v50(){vfunc_called(this, "_ZN7S4230C23v50Ev");}
void  S4230C2 ::v51(){vfunc_called(this, "_ZN7S4230C23v51Ev");}
void  S4230C2 ::v52(){vfunc_called(this, "_ZN7S4230C23v52Ev");}
S4230C2 ::S4230C2(){ note_ctor("S4230C2", this);} // tgen

static void Test_S4230C2()
{
  extern Class_Descriptor cd_S4230C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,33)];
    init_test(&cd_S4230C2, buf);
    S4230C2 *dp, &lv = *(dp=new (buf) S4230C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,128), "sizeof(S4230C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4230C2)");
    check_base_class_offset(lv, (S4230C3*), 0, "S4230C2");
    check_field_offset(lv, s4230c2f0, ABISELECT(196,120), "S4230C2.s4230c2f0");
    test_class_info(&lv, &cd_S4230C2);
    dp->~S4230C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4230C2(Test_S4230C2, "S4230C2", ABISELECT(208,128));

#else // __cplusplus

extern void _ZN7S4230C2C1Ev();
extern void _ZN7S4230C2D1Ev();
Name_Map name_map_S4230C2[] = {
  NSPAIR(_ZN7S4230C2C1Ev),
  NSPAIR(_ZN7S4230C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4230C3;
extern VTBL_ENTRY _ZTI7S4230C3[];
extern  VTBL_ENTRY _ZTV7S4230C3[];
static Base_Class bases_S4230C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4230C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4230C2[];
extern void _ZN7S4230C2D1Ev();
extern void _ZN7S4230C2D0Ev();
extern void _ZN7S4230C33v11Ev();
extern void _ZN7S4230C33v12Ev();
extern void _ZN7S4230C33v13Ev();
extern void _ZN7S4230C33v14Ev();
extern void _ZN7S4230C33v15Ev();
extern void _ZN7S4230C33v16Ev();
extern void _ZN7S4230C33v17Ev();
extern void _ZN7S4230C33v18Ev();
extern void _ZN7S4230C33v19Ev();
extern void _ZN7S4230C33v20Ev();
extern void _ZN7S4230C33v21Ev();
extern void _ZN7S4230C33v22Ev();
extern void _ZN7S4230C33v23Ev();
extern void _ZN7S4230C33v24Ev();
extern void _ZN7S4230C33v25Ev();
extern void _ZN7S4230C33v26Ev();
extern void _ZN7S4230C33v27Ev();
extern void _ZN7S4230C33v28Ev();
extern void _ZN7S4230C33v29Ev();
extern void _ZN7S4230C33v30Ev();
extern void _ZN7S4230C33v31Ev();
extern void _ZN7S4230C33v32Ev();
extern void _ZN7S4230C33v33Ev();
extern void _ZN7S4230C33v34Ev();
extern void _ZN7S4230C33v35Ev();
extern void _ZN7S4230C33v36Ev();
extern void _ZN7S4230C33v37Ev();
extern void _ZN7S4230C23v38Ev();
extern void _ZN7S4230C23v39Ev();
extern void _ZN7S4230C23v40Ev();
extern void _ZN7S4230C23v41Ev();
extern void _ZN7S4230C23v42Ev();
extern void _ZN7S4230C23v43Ev();
extern void _ZN7S4230C23v44Ev();
extern void _ZN7S4230C23v45Ev();
extern void _ZN7S4230C23v46Ev();
extern void _ZN7S4230C23v47Ev();
extern void _ZN7S4230C23v48Ev();
extern void _ZN7S4230C23v49Ev();
extern void _ZN7S4230C23v50Ev();
extern void _ZN7S4230C23v51Ev();
extern void _ZN7S4230C23v52Ev();
static  VTBL_ENTRY vtc_S4230C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4230C2[0]),
  (VTBL_ENTRY)&_ZN7S4230C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4230C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v38Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v39Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v40Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v41Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v42Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v43Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v44Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v52Ev,
};
extern VTBL_ENTRY _ZTI7S4230C2[];
extern  VTBL_ENTRY _ZTV7S4230C2[];
Class_Descriptor cd_S4230C2 = {  "S4230C2", // class name
  bases_S4230C2, 1,
  &(vtc_S4230C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,128), // object size
  NSPAIRA(_ZTI7S4230C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4230C2),46, //virtual function table var
  2, // 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  S4230C1  : S4230C2 {
  virtual  ~S4230C1(); // _ZN7S4230C1D1Ev
  virtual void  v1(); // _ZN7S4230C12v1Ev
  virtual void  v2(); // _ZN7S4230C12v2Ev
  virtual void  v3(); // _ZN7S4230C12v3Ev
  virtual void  v4(); // _ZN7S4230C12v4Ev
  virtual void  v5(); // _ZN7S4230C12v5Ev
  virtual void  v6(); // _ZN7S4230C12v6Ev
  virtual void  v7(); // _ZN7S4230C12v7Ev
  virtual void  v8(); // _ZN7S4230C12v8Ev
  virtual void  v9(); // _ZN7S4230C12v9Ev
  virtual void  v10(); // _ZN7S4230C13v10Ev
  S4230C1(); // tgen
};
//SIG(1 S4230C1) 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 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} FC4 FC4 FC4 FC4 Fp[5] Fc[2] Fp[2] Fi} vd v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 Fc[6]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S4230C1 ::~S4230C1(){ note_dtor("S4230C1", this);}
void  S4230C1 ::v1(){vfunc_called(this, "_ZN7S4230C12v1Ev");}
void  S4230C1 ::v2(){vfunc_called(this, "_ZN7S4230C12v2Ev");}
void  S4230C1 ::v3(){vfunc_called(this, "_ZN7S4230C12v3Ev");}
void  S4230C1 ::v4(){vfunc_called(this, "_ZN7S4230C12v4Ev");}
void  S4230C1 ::v5(){vfunc_called(this, "_ZN7S4230C12v5Ev");}
void  S4230C1 ::v6(){vfunc_called(this, "_ZN7S4230C12v6Ev");}
void  S4230C1 ::v7(){vfunc_called(this, "_ZN7S4230C12v7Ev");}
void  S4230C1 ::v8(){vfunc_called(this, "_ZN7S4230C12v8Ev");}
void  S4230C1 ::v9(){vfunc_called(this, "_ZN7S4230C12v9Ev");}
void  S4230C1 ::v10(){vfunc_called(this, "_ZN7S4230C13v10Ev");}
S4230C1 ::S4230C1(){ note_ctor("S4230C1", this);} // tgen

static void Test_S4230C1()
{
  extern Class_Descriptor cd_S4230C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,33)];
    init_test(&cd_S4230C1, buf);
    S4230C1 *dp, &lv = *(dp=new (buf) S4230C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,128), "sizeof(S4230C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4230C1)");
    check_base_class_offset(lv, (S4230C3*)(S4230C2*), 0, "S4230C1");
    check_base_class_offset(lv, (S4230C2*), 0, "S4230C1");
    test_class_info(&lv, &cd_S4230C1);
    dp->~S4230C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4230C1(Test_S4230C1, "S4230C1", ABISELECT(208,128));

#else // __cplusplus

extern void _ZN7S4230C1C1Ev();
extern void _ZN7S4230C1D1Ev();
Name_Map name_map_S4230C1[] = {
  NSPAIR(_ZN7S4230C1C1Ev),
  NSPAIR(_ZN7S4230C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4230C3;
extern VTBL_ENTRY _ZTI7S4230C3[];
extern  VTBL_ENTRY _ZTV7S4230C3[];
extern Class_Descriptor cd_S4230C2;
extern VTBL_ENTRY _ZTI7S4230C2[];
extern  VTBL_ENTRY _ZTV7S4230C2[];
static Base_Class bases_S4230C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4230C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4230C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4230C1[];
extern void _ZN7S4230C1D1Ev();
extern void _ZN7S4230C1D0Ev();
extern void _ZN7S4230C33v11Ev();
extern void _ZN7S4230C33v12Ev();
extern void _ZN7S4230C33v13Ev();
extern void _ZN7S4230C33v14Ev();
extern void _ZN7S4230C33v15Ev();
extern void _ZN7S4230C33v16Ev();
extern void _ZN7S4230C33v17Ev();
extern void _ZN7S4230C33v18Ev();
extern void _ZN7S4230C33v19Ev();
extern void _ZN7S4230C33v20Ev();
extern void _ZN7S4230C33v21Ev();
extern void _ZN7S4230C33v22Ev();
extern void _ZN7S4230C33v23Ev();
extern void _ZN7S4230C33v24Ev();
extern void _ZN7S4230C33v25Ev();
extern void _ZN7S4230C33v26Ev();
extern void _ZN7S4230C33v27Ev();
extern void _ZN7S4230C33v28Ev();
extern void _ZN7S4230C33v29Ev();
extern void _ZN7S4230C33v30Ev();
extern void _ZN7S4230C33v31Ev();
extern void _ZN7S4230C33v32Ev();
extern void _ZN7S4230C33v33Ev();
extern void _ZN7S4230C33v34Ev();
extern void _ZN7S4230C33v35Ev();
extern void _ZN7S4230C33v36Ev();
extern void _ZN7S4230C33v37Ev();
extern void _ZN7S4230C23v38Ev();
extern void _ZN7S4230C23v39Ev();
extern void _ZN7S4230C23v40Ev();
extern void _ZN7S4230C23v41Ev();
extern void _ZN7S4230C23v42Ev();
extern void _ZN7S4230C23v43Ev();
extern void _ZN7S4230C23v44Ev();
extern void _ZN7S4230C23v45Ev();
extern void _ZN7S4230C23v46Ev();
extern void _ZN7S4230C23v47Ev();
extern void _ZN7S4230C23v48Ev();
extern void _ZN7S4230C23v49Ev();
extern void _ZN7S4230C23v50Ev();
extern void _ZN7S4230C23v51Ev();
extern void _ZN7S4230C23v52Ev();
extern void _ZN7S4230C12v1Ev();
extern void _ZN7S4230C12v2Ev();
extern void _ZN7S4230C12v3Ev();
extern void _ZN7S4230C12v4Ev();
extern void _ZN7S4230C12v5Ev();
extern void _ZN7S4230C12v6Ev();
extern void _ZN7S4230C12v7Ev();
extern void _ZN7S4230C12v8Ev();
extern void _ZN7S4230C12v9Ev();
extern void _ZN7S4230C13v10Ev();
static  VTBL_ENTRY vtc_S4230C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4230C1[0]),
  (VTBL_ENTRY)&_ZN7S4230C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4230C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4230C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v38Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v39Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v40Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v41Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v42Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v43Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v44Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4230C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4230C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4230C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4230C1[];
extern  VTBL_ENTRY _ZTV7S4230C1[];
Class_Descriptor cd_S4230C1 = {  "S4230C1", // class name
  bases_S4230C1, 2,
  &(vtc_S4230C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,128), // object size
  NSPAIRA(_ZTI7S4230C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4230C1),56, //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  S7335C4  {
  virtual void  v8(); // _ZN7S7335C42v8Ev
  virtual void  v9(); // _ZN7S7335C42v9Ev
  virtual void  v10(); // _ZN7S7335C43v10Ev
  virtual void  v11(); // _ZN7S7335C43v11Ev
  ~S7335C4(); // tgen
  S7335C4(); // tgen
};
//SIG(-1 S7335C4) C1{ v1 v2 v3 v4}


void  S7335C4 ::v8(){vfunc_called(this, "_ZN7S7335C42v8Ev");}
void  S7335C4 ::v9(){vfunc_called(this, "_ZN7S7335C42v9Ev");}
void  S7335C4 ::v10(){vfunc_called(this, "_ZN7S7335C43v10Ev");}
void  S7335C4 ::v11(){vfunc_called(this, "_ZN7S7335C43v11Ev");}
S7335C4 ::~S7335C4(){ note_dtor("S7335C4", this);} // tgen
S7335C4 ::S7335C4(){ note_ctor("S7335C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7335C4C1Ev();
extern void _ZN7S7335C4D1Ev();
Name_Map name_map_S7335C4[] = {
  NSPAIR(_ZN7S7335C4C1Ev),
  NSPAIR(_ZN7S7335C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7335C4[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
static  VTBL_ENTRY vtc_S7335C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C4[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
Class_Descriptor cd_S7335C4 = {  "S7335C4", // class name
  0,0,//no base classes
  &(vtc_S7335C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7335C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7335C4),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  S7335C6  {
  long double s7335c6f0;
  virtual void  v12(); // _ZN7S7335C63v12Ev
  virtual void  v13(); // _ZN7S7335C63v13Ev
  virtual void  v14(); // _ZN7S7335C63v14Ev
  ~S7335C6(); // tgen
  S7335C6(); // tgen
};
//SIG(-1 S7335C6) C1{ v1 v2 v3 FD}


void  S7335C6 ::v12(){vfunc_called(this, "_ZN7S7335C63v12Ev");}
void  S7335C6 ::v13(){vfunc_called(this, "_ZN7S7335C63v13Ev");}
void  S7335C6 ::v14(){vfunc_called(this, "_ZN7S7335C63v14Ev");}
S7335C6 ::~S7335C6(){ note_dtor("S7335C6", this);} // tgen
S7335C6 ::S7335C6(){ note_ctor("S7335C6", this);} // tgen

static void Test_S7335C6()
{
  extern Class_Descriptor cd_S7335C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S7335C6, buf);
    S7335C6 *dp, &lv = *(dp=new (buf) S7335C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7335C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C6)");
    check_field_offset(lv, s7335c6f0, ABISELECT(16,4), "S7335C6.s7335c6f0");
    test_class_info(&lv, &cd_S7335C6);
    dp->~S7335C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C6(Test_S7335C6, "S7335C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7335C6C1Ev();
extern void _ZN7S7335C6D1Ev();
Name_Map name_map_S7335C6[] = {
  NSPAIR(_ZN7S7335C6C1Ev),
  NSPAIR(_ZN7S7335C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7335C6[];
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY vtc_S7335C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C6[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
Class_Descriptor cd_S7335C6 = {  "S7335C6", // class name
  0,0,//no base classes
  &(vtc_S7335C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7335C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7335C6),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  S7335C5  : virtual S7335C6 {
  virtual  ~S7335C5(); // _ZN7S7335C5D2Ev
  virtual void  v15(); // _ZN7S7335C53v15Ev
  virtual void  v16(); // _ZN7S7335C53v16Ev
  S7335C5(); // tgen
};
//SIG(-1 S7335C5) C1{ VBC2{ v3 v4 v5 FD} vd v1 v2}


 S7335C5 ::~S7335C5(){ note_dtor("S7335C5", this);}
void  S7335C5 ::v15(){vfunc_called(this, "_ZN7S7335C53v15Ev");}
void  S7335C5 ::v16(){vfunc_called(this, "_ZN7S7335C53v16Ev");}
S7335C5 ::S7335C5(){ note_ctor("S7335C5", this);} // tgen

static void Test_S7335C5()
{
  extern Class_Descriptor cd_S7335C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7335C5, buf);
    S7335C5 *dp, &lv = *(dp=new (buf) S7335C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S7335C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C5)");
    check_base_class_offset(lv, (S7335C6*), ABISELECT(16,4), "S7335C5");
    test_class_info(&lv, &cd_S7335C5);
    dp->~S7335C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C5(Test_S7335C5, "S7335C5", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S7335C5C1Ev();
extern void _ZN7S7335C5D2Ev();
Name_Map name_map_S7335C5[] = {
  NSPAIR(_ZN7S7335C5C1Ev),
  NSPAIR(_ZN7S7335C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C6;
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
static Base_Class bases_S7335C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C6,    ABISELECT(16,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7335C5[];
extern void _ZN7S7335C5D1Ev();
extern void _ZN7S7335C5D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY vtc_S7335C5[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7335C5[];
static  VTT_ENTRY vtt_S7335C5[] = {
  {&(_ZTV7S7335C5[3]),  3,15},
  {&(_ZTV7S7335C5[12]),  12,15},
};
extern VTBL_ENTRY _ZTI7S7335C5[];
extern  VTBL_ENTRY _ZTV7S7335C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C5[];
Class_Descriptor cd_S7335C5 = {  "S7335C5", // class name
  bases_S7335C5, 1,
  &(vtc_S7335C5[0]), // expected_vtbl_contents
  &(vtt_S7335C5[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S7335C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7335C5),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7335C5),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  S7335C3  : S7335C4 , virtual S7335C5 {
  virtual void  v17(); // _ZN7S7335C33v17Ev
  virtual void  v18(); // _ZN7S7335C33v18Ev
  virtual void  v19(); // _ZN7S7335C33v19Ev
  virtual void  v20(); // _ZN7S7335C33v20Ev
  virtual void  v21(); // _ZN7S7335C33v21Ev
  virtual void  v22(); // _ZN7S7335C33v22Ev
  virtual void  v23(); // _ZN7S7335C33v23Ev
  virtual void  v24(); // _ZN7S7335C33v24Ev
  ~S7335C3(); // tgen
  S7335C3(); // tgen
};
//SIG(-1 S7335C3) C1{ BC2{ v9 v10 v11 v12} VBC3{ VBC4{ v13 v14 v15 FD} vd v16 v17} v1 v2 v3 v4 v5 v6 v7 v8}


void  S7335C3 ::v17(){vfunc_called(this, "_ZN7S7335C33v17Ev");}
void  S7335C3 ::v18(){vfunc_called(this, "_ZN7S7335C33v18Ev");}
void  S7335C3 ::v19(){vfunc_called(this, "_ZN7S7335C33v19Ev");}
void  S7335C3 ::v20(){vfunc_called(this, "_ZN7S7335C33v20Ev");}
void  S7335C3 ::v21(){vfunc_called(this, "_ZN7S7335C33v21Ev");}
void  S7335C3 ::v22(){vfunc_called(this, "_ZN7S7335C33v22Ev");}
void  S7335C3 ::v23(){vfunc_called(this, "_ZN7S7335C33v23Ev");}
void  S7335C3 ::v24(){vfunc_called(this, "_ZN7S7335C33v24Ev");}
S7335C3 ::~S7335C3(){ note_dtor("S7335C3", this);} // tgen
S7335C3 ::S7335C3(){ note_ctor("S7335C3", this);} // tgen

static void Test_S7335C3()
{
  extern Class_Descriptor cd_S7335C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S7335C3, buf);
    S7335C3 *dp, &lv = *(dp=new (buf) S7335C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7335C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C3)");
    check_base_class_offset(lv, (S7335C4*), 0, "S7335C3");
    check_base_class_offset(lv, (S7335C6*)(S7335C5*), ABISELECT(16,8), "S7335C3");
    check_base_class_offset(lv, (S7335C5*), ABISELECT(8,4), "S7335C3");
    test_class_info(&lv, &cd_S7335C3);
    dp->~S7335C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C3(Test_S7335C3, "S7335C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7335C3C1Ev();
extern void _ZN7S7335C3D1Ev();
Name_Map name_map_S7335C3[] = {
  NSPAIR(_ZN7S7335C3C1Ev),
  NSPAIR(_ZN7S7335C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C4;
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
extern Class_Descriptor cd_S7335C6;
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
extern Class_Descriptor cd_S7335C5;
extern VTBL_ENTRY _ZTI7S7335C5[];
extern  VTBL_ENTRY _ZTV7S7335C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C5[];
static Base_Class bases_S7335C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7335C6,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7335C5,    ABISELECT(8,4), //bcp->offset
    18, //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 _ZTI7S7335C3[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C3D1Ev();
extern void _ZN7S7335C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C3D1Ev,_ZThn4_N7S7335C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C3D0Ev,_ZThn4_N7S7335C3D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY vtc_S7335C3[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D0Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7335C3[];
extern void _ZN7S7335C5D1Ev();
extern void _ZN7S7335C5D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C5__7S7335C3[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
static  VTT_ENTRY vtt_S7335C3[] = {
  {&(_ZTV7S7335C3[4]),  4,36},
  {&(_ZTV7S7335C3[24]),  24,36},
  {&(_ZTV7S7335C3[33]),  33,36},
  {&(_tg__ZTV7S7335C5__7S7335C3[3]),  3,7},
  {&(_tg__ZTV7S7335C6__7S7335C5__7S7335C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7335C3[];
extern  VTBL_ENTRY _ZTV7S7335C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C3[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C3D0Ev,_ZThn4_N7S7335C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C3D1Ev,_ZThn4_N7S7335C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7335C3 = {  "S7335C3", // class name
  bases_S7335C3, 3,
  &(vtc_S7335C3[0]), // expected_vtbl_contents
  &(vtt_S7335C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7335C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7335C3),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7335C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7335C2  : virtual S7335C3 {
  virtual  ~S7335C2(); // _ZN7S7335C2D2Ev
  virtual void  v25(); // _ZN7S7335C23v25Ev
  virtual void  v26(); // _ZN7S7335C23v26Ev
  virtual void  v27(); // _ZN7S7335C23v27Ev
  virtual void  v28(); // _ZN7S7335C23v28Ev
  S7335C2(); // tgen
};
//SIG(-1 S7335C2) C1{ VBC2{ BC3{ v5 v6 v7 v8} VBC4{ VBC5{ v9 v10 v11 FD} vd v12 v13} v14 v15 v16 v17 v18 v19 v20 v21} vd v1 v2 v3 v4}


 S7335C2 ::~S7335C2(){ note_dtor("S7335C2", this);}
void  S7335C2 ::v25(){vfunc_called(this, "_ZN7S7335C23v25Ev");}
void  S7335C2 ::v26(){vfunc_called(this, "_ZN7S7335C23v26Ev");}
void  S7335C2 ::v27(){vfunc_called(this, "_ZN7S7335C23v27Ev");}
void  S7335C2 ::v28(){vfunc_called(this, "_ZN7S7335C23v28Ev");}
S7335C2 ::S7335C2(){ note_ctor("S7335C2", this);} // tgen

static void Test_S7335C2()
{
  extern Class_Descriptor cd_S7335C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S7335C2, buf);
    S7335C2 *dp, &lv = *(dp=new (buf) S7335C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7335C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C2)");
    check_base_class_offset(lv, (S7335C4*)(S7335C3*), 0, "S7335C2");
    check_base_class_offset(lv, (S7335C6*)(S7335C5*), ABISELECT(16,8), "S7335C2");
    check_base_class_offset(lv, (S7335C5*)(S7335C3*), ABISELECT(8,4), "S7335C2");
    check_base_class_offset(lv, (S7335C3*), 0, "S7335C2");
    test_class_info(&lv, &cd_S7335C2);
    dp->~S7335C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C2(Test_S7335C2, "S7335C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7335C2C1Ev();
extern void _ZN7S7335C2D2Ev();
Name_Map name_map_S7335C2[] = {
  NSPAIR(_ZN7S7335C2C1Ev),
  NSPAIR(_ZN7S7335C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C4;
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
extern Class_Descriptor cd_S7335C6;
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
extern Class_Descriptor cd_S7335C5;
extern VTBL_ENTRY _ZTI7S7335C5[];
extern  VTBL_ENTRY _ZTV7S7335C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C5[];
extern Class_Descriptor cd_S7335C3;
extern VTBL_ENTRY _ZTI7S7335C3[];
extern  VTBL_ENTRY _ZTV7S7335C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C3[];
static Base_Class bases_S7335C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7335C6,    ABISELECT(16,8), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7335C5,    ABISELECT(8,4), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7335C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //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 _ZTI7S7335C2[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C2D1Ev();
extern void _ZN7S7335C2D0Ev();
extern void _ZN7S7335C23v25Ev();
extern void _ZN7S7335C23v26Ev();
extern void _ZN7S7335C23v27Ev();
extern void _ZN7S7335C23v28Ev();
extern void ABISELECT(_ZTv0_n32_N7S7335C2D1Ev,_ZTv0_n16_N7S7335C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C2D1Ev,_ZThn4_N7S7335C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C2D0Ev,_ZTv0_n16_N7S7335C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C2D0Ev,_ZThn4_N7S7335C2D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY vtc_S7335C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C2[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v28Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C2D1Ev,_ZTv0_n16_N7S7335C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C2D0Ev,_ZTv0_n16_N7S7335C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C2[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7335C2[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C3D1Ev();
extern void _ZN7S7335C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C3__7S7335C2[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C3D1Ev,_ZThn4_N7S7335C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C3D0Ev,_ZThn4_N7S7335C3D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C3__7S7335C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C3__7S7335C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void _ZN7S7335C5D1Ev();
extern void _ZN7S7335C5D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C5__7S7335C2[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
static  VTT_ENTRY vtt_S7335C2[] = {
  {&(_ZTV7S7335C2[18]),  18,54},
  {&(_ZTV7S7335C2[18]),  18,54},
  {&(_ZTV7S7335C2[42]),  42,54},
  {&(_ZTV7S7335C2[51]),  51,54},
  {&(_tg__ZTV7S7335C3__7S7335C2[4]),  4,18},
  {&(_tg__ZTV7S7335C5__7S7335C3__7S7335C2[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C3__7S7335C2[5]),  5,8},
  {&(_tg__ZTV7S7335C5__7S7335C2[3]),  3,7},
  {&(_tg__ZTV7S7335C6__7S7335C5__7S7335C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7335C2[];
extern  VTBL_ENTRY _ZTV7S7335C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C2[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C3D0Ev,_ZThn4_N7S7335C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C3D1Ev,_ZThn4_N7S7335C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C2D0Ev,_ZTv0_n16_N7S7335C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C2D0Ev,_ZThn4_N7S7335C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C2D1Ev,_ZTv0_n16_N7S7335C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C2D1Ev,_ZThn4_N7S7335C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7335C2 = {  "S7335C2", // class name
  bases_S7335C2, 4,
  &(vtc_S7335C2[0]), // expected_vtbl_contents
  &(vtt_S7335C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7335C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7335C2),54, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7335C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7335C9_nt  {
  char s7335c9f0;
  void  mf7335c9(); // _ZN10S7335C9_nt8mf7335c9Ev
};
//SIG(-1 S7335C9_nt) C1{ m Fc}


void  S7335C9_nt ::mf7335c9(){}

//skip512 S7335C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7335C8  : S7335C3 {
  ::S7335C9_nt s7335c8f0;
  virtual void  v29(); // _ZN7S7335C83v29Ev
  virtual void  v30(); // _ZN7S7335C83v30Ev
  virtual void  v31(); // _ZN7S7335C83v31Ev
  virtual void  v32(); // _ZN7S7335C83v32Ev
  virtual void  v33(); // _ZN7S7335C83v33Ev
  virtual void  v34(); // _ZN7S7335C83v34Ev
  virtual void  v35(); // _ZN7S7335C83v35Ev
  virtual void  v36(); // _ZN7S7335C83v36Ev
  virtual void  v37(); // _ZN7S7335C83v37Ev
  ~S7335C8(); // tgen
  S7335C8(); // tgen
};
//SIG(-1 S7335C8) C1{ BC2{ BC3{ v10 v11 v12 v13} VBC4{ VBC5{ v14 v15 v16 FD} vd v17 v18} v19 v20 v21 v22 v23 v24 v25 v26} v1 v2 v3 v4 v5 v6 v7 v8 v9 FC6{ m Fc}}


void  S7335C8 ::v29(){vfunc_called(this, "_ZN7S7335C83v29Ev");}
void  S7335C8 ::v30(){vfunc_called(this, "_ZN7S7335C83v30Ev");}
void  S7335C8 ::v31(){vfunc_called(this, "_ZN7S7335C83v31Ev");}
void  S7335C8 ::v32(){vfunc_called(this, "_ZN7S7335C83v32Ev");}
void  S7335C8 ::v33(){vfunc_called(this, "_ZN7S7335C83v33Ev");}
void  S7335C8 ::v34(){vfunc_called(this, "_ZN7S7335C83v34Ev");}
void  S7335C8 ::v35(){vfunc_called(this, "_ZN7S7335C83v35Ev");}
void  S7335C8 ::v36(){vfunc_called(this, "_ZN7S7335C83v36Ev");}
void  S7335C8 ::v37(){vfunc_called(this, "_ZN7S7335C83v37Ev");}
S7335C8 ::~S7335C8(){ note_dtor("S7335C8", this);} // tgen
S7335C8 ::S7335C8(){ note_ctor("S7335C8", this);} // tgen

static void Test_S7335C8()
{
  extern Class_Descriptor cd_S7335C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,8)];
    init_test(&cd_S7335C8, buf);
    S7335C8 *dp, &lv = *(dp=new (buf) S7335C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,28), "sizeof(S7335C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C8)");
    check_base_class_offset(lv, (S7335C4*)(S7335C3*), 0, "S7335C8");
    check_base_class_offset(lv, (S7335C6*)(S7335C5*), ABISELECT(32,12), "S7335C8");
    check_base_class_offset(lv, (S7335C5*)(S7335C3*), ABISELECT(16,8), "S7335C8");
    check_base_class_offset(lv, (S7335C3*), 0, "S7335C8");
    check_field_offset(lv, s7335c8f0, ABISELECT(8,4), "S7335C8.s7335c8f0");
    test_class_info(&lv, &cd_S7335C8);
    dp->~S7335C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C8(Test_S7335C8, "S7335C8", ABISELECT(64,28));

#else // __cplusplus

extern void _ZN7S7335C8C1Ev();
extern void _ZN7S7335C8D1Ev();
Name_Map name_map_S7335C8[] = {
  NSPAIR(_ZN7S7335C8C1Ev),
  NSPAIR(_ZN7S7335C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C4;
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
extern Class_Descriptor cd_S7335C6;
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
extern Class_Descriptor cd_S7335C5;
extern VTBL_ENTRY _ZTI7S7335C5[];
extern  VTBL_ENTRY _ZTV7S7335C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C5[];
extern Class_Descriptor cd_S7335C3;
extern VTBL_ENTRY _ZTI7S7335C3[];
extern  VTBL_ENTRY _ZTV7S7335C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C3[];
static Base_Class bases_S7335C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7335C6,    ABISELECT(32,12), //bcp->offset
    37, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7335C5,    ABISELECT(16,8), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //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_S7335C3,    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 _ZTI7S7335C8[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C8D1Ev();
extern void _ZN7S7335C8D0Ev();
extern void _ZN7S7335C83v29Ev();
extern void _ZN7S7335C83v30Ev();
extern void _ZN7S7335C83v31Ev();
extern void _ZN7S7335C83v32Ev();
extern void _ZN7S7335C83v33Ev();
extern void _ZN7S7335C83v34Ev();
extern void _ZN7S7335C83v35Ev();
extern void _ZN7S7335C83v36Ev();
extern void _ZN7S7335C83v37Ev();
extern void ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7335C8D1Ev,_ZThn8_N7S7335C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7335C8D0Ev,_ZThn8_N7S7335C8D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY vtc_S7335C8[] = {
  ABISELECT(32,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v37Ev,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(16,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  0,
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7335C8[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C3D1Ev();
extern void _ZN7S7335C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C3__7S7335C8[] = {
  ABISELECT(32,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7335C3D1Ev,_ZThn8_N7S7335C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7335C3D0Ev,_ZThn8_N7S7335C3D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C3__7S7335C8[] = {
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(16,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C3__7S7335C8[] = {
  0,
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void _ZN7S7335C5D1Ev();
extern void _ZN7S7335C5D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C8[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C5__7S7335C8[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
static  VTT_ENTRY vtt_S7335C8[] = {
  {&(_ZTV7S7335C8[4]),  4,45},
  {&(_tg__ZTV7S7335C3__7S7335C8[4]),  4,18},
  {&(_tg__ZTV7S7335C5__7S7335C3__7S7335C8[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C3__7S7335C8[5]),  5,8},
  {&(_ZTV7S7335C8[33]),  33,45},
  {&(_ZTV7S7335C8[42]),  42,45},
  {&(_tg__ZTV7S7335C5__7S7335C8[3]),  3,7},
  {&(_tg__ZTV7S7335C6__7S7335C5__7S7335C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7335C8[];
extern  VTBL_ENTRY _ZTV7S7335C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C8[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7335C3D0Ev,_ZThn8_N7S7335C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7335C3D1Ev,_ZThn8_N7S7335C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7335C8D0Ev,_ZThn8_N7S7335C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7335C8D1Ev,_ZThn8_N7S7335C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7335C8 = {  "S7335C8", // class name
  bases_S7335C8, 4,
  &(vtc_S7335C8[0]), // expected_vtbl_contents
  &(vtt_S7335C8[0]), // expected_vtt_contents
  ABISELECT(64,28), // object size
  NSPAIRA(_ZTI7S7335C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7335C8),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7335C8),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7335C11  {
  char s7335c11f0;
  int s7335c11f1;
  __tsi64 s7335c11f2;
  short s7335c11f3;
  virtual void  v38(); // _ZN8S7335C113v38Ev
  virtual void  v39(); // _ZN8S7335C113v39Ev
  virtual void  v40(); // _ZN8S7335C113v40Ev
  virtual void  v41(); // _ZN8S7335C113v41Ev
  virtual void  v42(); // _ZN8S7335C113v42Ev
  ~S7335C11(); // tgen
  S7335C11(); // tgen
};
//SIG(-1 S7335C11) C1{ v1 v2 v3 v4 v5 Fc Fi FL Fs}


void  S7335C11 ::v38(){vfunc_called(this, "_ZN8S7335C113v38Ev");}
void  S7335C11 ::v39(){vfunc_called(this, "_ZN8S7335C113v39Ev");}
void  S7335C11 ::v40(){vfunc_called(this, "_ZN8S7335C113v40Ev");}
void  S7335C11 ::v41(){vfunc_called(this, "_ZN8S7335C113v41Ev");}
void  S7335C11 ::v42(){vfunc_called(this, "_ZN8S7335C113v42Ev");}
S7335C11 ::~S7335C11(){ note_dtor("S7335C11", this);} // tgen
S7335C11 ::S7335C11(){ note_ctor("S7335C11", this);} // tgen

static void Test_S7335C11()
{
  extern Class_Descriptor cd_S7335C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7335C11, buf);
    S7335C11 *dp, &lv = *(dp=new (buf) S7335C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7335C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7335C11)");
    check_field_offset(lv, s7335c11f0, ABISELECT(8,4), "S7335C11.s7335c11f0");
    check_field_offset(lv, s7335c11f1, ABISELECT(12,8), "S7335C11.s7335c11f1");
    check_field_offset(lv, s7335c11f2, ABISELECT(16,12), "S7335C11.s7335c11f2");
    check_field_offset(lv, s7335c11f3, ABISELECT(24,20), "S7335C11.s7335c11f3");
    test_class_info(&lv, &cd_S7335C11);
    dp->~S7335C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C11(Test_S7335C11, "S7335C11", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S7335C11C1Ev();
extern void _ZN8S7335C11D1Ev();
Name_Map name_map_S7335C11[] = {
  NSPAIR(_ZN8S7335C11C1Ev),
  NSPAIR(_ZN8S7335C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7335C11[];
extern void _ZN8S7335C113v38Ev();
extern void _ZN8S7335C113v39Ev();
extern void _ZN8S7335C113v40Ev();
extern void _ZN8S7335C113v41Ev();
extern void _ZN8S7335C113v42Ev();
static  VTBL_ENTRY vtc_S7335C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7335C11[0]),
  (VTBL_ENTRY)&_ZN8S7335C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v42Ev,
};
extern VTBL_ENTRY _ZTI8S7335C11[];
extern  VTBL_ENTRY _ZTV8S7335C11[];
Class_Descriptor cd_S7335C11 = {  "S7335C11", // class name
  0,0,//no base classes
  &(vtc_S7335C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S7335C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7335C11),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  S7335C10  : S7335C11 {
  ::S7335C11 s7335c10f0;
  virtual void  v43(); // _ZN8S7335C103v43Ev
  virtual void  v44(); // _ZN8S7335C103v44Ev
  virtual void  v45(); // _ZN8S7335C103v45Ev
  virtual void  v46(); // _ZN8S7335C103v46Ev
  virtual void  v47(); // _ZN8S7335C103v47Ev
  ~S7335C10(); // tgen
  S7335C10(); // tgen
};
//SIG(-1 S7335C10) C1{ BC2{ v6 v7 v8 v9 v10 Fc Fi FL Fs} v1 v2 v3 v4 v5 FC2}


void  S7335C10 ::v43(){vfunc_called(this, "_ZN8S7335C103v43Ev");}
void  S7335C10 ::v44(){vfunc_called(this, "_ZN8S7335C103v44Ev");}
void  S7335C10 ::v45(){vfunc_called(this, "_ZN8S7335C103v45Ev");}
void  S7335C10 ::v46(){vfunc_called(this, "_ZN8S7335C103v46Ev");}
void  S7335C10 ::v47(){vfunc_called(this, "_ZN8S7335C103v47Ev");}
S7335C10 ::~S7335C10(){ note_dtor("S7335C10", this);} // tgen
S7335C10 ::S7335C10(){ note_ctor("S7335C10", this);} // tgen

static void Test_S7335C10()
{
  extern Class_Descriptor cd_S7335C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S7335C10, buf);
    S7335C10 *dp, &lv = *(dp=new (buf) S7335C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S7335C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7335C10)");
    check_base_class_offset(lv, (S7335C11*), 0, "S7335C10");
    check_field_offset(lv, s7335c10f0, ABISELECT(32,24), "S7335C10.s7335c10f0");
    test_class_info(&lv, &cd_S7335C10);
    dp->~S7335C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C10(Test_S7335C10, "S7335C10", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN8S7335C10C1Ev();
extern void _ZN8S7335C10D1Ev();
Name_Map name_map_S7335C10[] = {
  NSPAIR(_ZN8S7335C10C1Ev),
  NSPAIR(_ZN8S7335C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C11;
extern VTBL_ENTRY _ZTI8S7335C11[];
extern  VTBL_ENTRY _ZTV8S7335C11[];
static Base_Class bases_S7335C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7335C10[];
extern void _ZN8S7335C113v38Ev();
extern void _ZN8S7335C113v39Ev();
extern void _ZN8S7335C113v40Ev();
extern void _ZN8S7335C113v41Ev();
extern void _ZN8S7335C113v42Ev();
extern void _ZN8S7335C103v43Ev();
extern void _ZN8S7335C103v44Ev();
extern void _ZN8S7335C103v45Ev();
extern void _ZN8S7335C103v46Ev();
extern void _ZN8S7335C103v47Ev();
static  VTBL_ENTRY vtc_S7335C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7335C10[0]),
  (VTBL_ENTRY)&_ZN8S7335C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v47Ev,
};
extern VTBL_ENTRY _ZTI8S7335C10[];
extern  VTBL_ENTRY _ZTV8S7335C10[];
Class_Descriptor cd_S7335C10 = {  "S7335C10", // class name
  bases_S7335C10, 1,
  &(vtc_S7335C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI8S7335C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7335C10),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  S7335C7  : virtual S7335C8 , virtual S7335C10 {
  virtual  ~S7335C7(); // _ZN7S7335C7D2Ev
  virtual void  v48(); // _ZN7S7335C73v48Ev
  virtual void  v49(); // _ZN7S7335C73v49Ev
  virtual void  v50(); // _ZN7S7335C73v50Ev
  virtual void  v51(); // _ZN7S7335C73v51Ev
  S7335C7(); // tgen
};
//SIG(-1 S7335C7) C1{ VBC2{ BC3{ BC4{ v5 v6 v7 v8} VBC5{ VBC6{ v9 v10 v11 FD} vd v12 v13} v14 v15 v16 v17 v18 v19 v20 v21} v22 v23 v24 v25 v26 v27 v28 v29 v30 FC7{ m Fc}} VBC8{ BC9{ v31 v32 v33 v34 v35 Fc Fi FL Fs} v36 v37 v38 v39 v40 FC9} vd v1 v2 v3 v4}


 S7335C7 ::~S7335C7(){ note_dtor("S7335C7", this);}
void  S7335C7 ::v48(){vfunc_called(this, "_ZN7S7335C73v48Ev");}
void  S7335C7 ::v49(){vfunc_called(this, "_ZN7S7335C73v49Ev");}
void  S7335C7 ::v50(){vfunc_called(this, "_ZN7S7335C73v50Ev");}
void  S7335C7 ::v51(){vfunc_called(this, "_ZN7S7335C73v51Ev");}
S7335C7 ::S7335C7(){ note_ctor("S7335C7", this);} // tgen

static void Test_S7335C7()
{
  extern Class_Descriptor cd_S7335C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,20)];
    init_test(&cd_S7335C7, buf);
    S7335C7 *dp, &lv = *(dp=new (buf) S7335C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S7335C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C7)");
    check_base_class_offset(lv, (S7335C4*)(S7335C3*)(S7335C8*), ABISELECT(8,4), "S7335C7");
    check_base_class_offset(lv, (S7335C6*)(S7335C5*), ABISELECT(32,12), "S7335C7");
    check_base_class_offset(lv, (S7335C5*)(S7335C3*)(S7335C8*), 0, "S7335C7");
    check_base_class_offset(lv, (S7335C3*)(S7335C8*), ABISELECT(8,4), "S7335C7");
    check_base_class_offset(lv, (S7335C8*), ABISELECT(8,4), "S7335C7");
    check_base_class_offset(lv, (S7335C11*)(S7335C10*), ABISELECT(64,28), "S7335C7");
    check_base_class_offset(lv, (S7335C10*), ABISELECT(64,28), "S7335C7");
    test_class_info(&lv, &cd_S7335C7);
    dp->~S7335C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C7(Test_S7335C7, "S7335C7", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN7S7335C7C1Ev();
extern void _ZN7S7335C7D2Ev();
Name_Map name_map_S7335C7[] = {
  NSPAIR(_ZN7S7335C7C1Ev),
  NSPAIR(_ZN7S7335C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C4;
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
extern Class_Descriptor cd_S7335C6;
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
extern Class_Descriptor cd_S7335C5;
extern VTBL_ENTRY _ZTI7S7335C5[];
extern  VTBL_ENTRY _ZTV7S7335C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C5[];
extern Class_Descriptor cd_S7335C3;
extern VTBL_ENTRY _ZTI7S7335C3[];
extern  VTBL_ENTRY _ZTV7S7335C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C3[];
extern Class_Descriptor cd_S7335C8;
extern VTBL_ENTRY _ZTI7S7335C8[];
extern  VTBL_ENTRY _ZTV7S7335C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C8[];
extern Class_Descriptor cd_S7335C11;
extern VTBL_ENTRY _ZTI8S7335C11[];
extern  VTBL_ENTRY _ZTV8S7335C11[];
extern Class_Descriptor cd_S7335C10;
extern VTBL_ENTRY _ZTI8S7335C10[];
extern  VTBL_ENTRY _ZTV8S7335C10[];
static Base_Class bases_S7335C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7335C6,    ABISELECT(32,12), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7335C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7335C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7335C8,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    26, //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_S7335C11,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7335C10,    ABISELECT(64,28), //bcp->offset
    74, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7335C7[];
extern void _ZN7S7335C7D1Ev();
extern void _ZN7S7335C7D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C73v48Ev();
extern void _ZN7S7335C73v49Ev();
extern void _ZN7S7335C73v50Ev();
extern void _ZN7S7335C73v51Ev();
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S7335C7D1Ev,_ZTv0_n68_N7S7335C7D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C7D1Ev,_ZThn4_N7S7335C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7335C7D0Ev,_ZTv0_n68_N7S7335C7D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C7D0Ev,_ZThn4_N7S7335C7D0Ev)() __attribute__((weak));
extern void _ZN7S7335C83v29Ev();
extern void _ZN7S7335C83v30Ev();
extern void _ZN7S7335C83v31Ev();
extern void _ZN7S7335C83v32Ev();
extern void _ZN7S7335C83v33Ev();
extern void _ZN7S7335C83v34Ev();
extern void _ZN7S7335C83v35Ev();
extern void _ZN7S7335C83v36Ev();
extern void _ZN7S7335C83v37Ev();
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
extern void _ZN8S7335C113v38Ev();
extern void _ZN8S7335C113v39Ev();
extern void _ZN8S7335C113v40Ev();
extern void _ZN8S7335C113v41Ev();
extern void _ZN8S7335C113v42Ev();
extern void _ZN8S7335C103v43Ev();
extern void _ZN8S7335C103v44Ev();
extern void _ZN8S7335C103v45Ev();
extern void _ZN8S7335C103v46Ev();
extern void _ZN8S7335C103v47Ev();
static  VTBL_ENTRY vtc_S7335C7[] = {
  ABISELECT(64,28),
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN7S7335C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v48Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v49Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v50Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v51Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C7D1Ev,_ZTv0_n68_N7S7335C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C7D0Ev,_ZTv0_n68_N7S7335C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v37Ev,
  0,
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN8S7335C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v47Ev,
};
extern VTBL_ENTRY _ZTV7S7335C7[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C8D1Ev();
extern void _ZN7S7335C8D0Ev();
extern void _ZN7S7335C83v29Ev();
extern void _ZN7S7335C83v30Ev();
extern void _ZN7S7335C83v31Ev();
extern void _ZN7S7335C83v32Ev();
extern void _ZN7S7335C83v33Ev();
extern void _ZN7S7335C83v34Ev();
extern void _ZN7S7335C83v35Ev();
extern void _ZN7S7335C83v36Ev();
extern void _ZN7S7335C83v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C8__7S7335C7[] = {
  ABISELECT(24,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v37Ev,
};
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C3D1Ev();
extern void _ZN7S7335C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C37S7335C8__7S7335C7[] = {
  ABISELECT(24,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev)();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C37S7335C8__7S7335C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(32,12),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C37S7335C8__7S7335C7[] = {
  0,
  0,
  0,
  ABISELECT(-24,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev)();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C8__7S7335C7[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(32,12),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C8__7S7335C7[] = {
  0,
  0,
  0,
  ABISELECT(-24,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void _ZN7S7335C5D1Ev();
extern void _ZN7S7335C5D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C7[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C5__7S7335C7[] = {
  0,
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
static  VTT_ENTRY vtt_S7335C7[] = {
  {&(_ZTV7S7335C7[9]),  9,96},
  {&(_ZTV7S7335C7[43]),  43,96},
  {&(_ZTV7S7335C7[9]),  9,96},
  {&(_ZTV7S7335C7[71]),  71,96},
  {&(_ZTV7S7335C7[86]),  86,96},
  {&(_tg__ZTV7S7335C8__7S7335C7[4]),  4,27},
  {&(_tg__ZTV7S7335C37S7335C8__7S7335C7[4]),  4,18},
  {&(_tg__ZTV7S7335C5__7S7335C37S7335C8__7S7335C7[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C37S7335C8__7S7335C7[5]),  5,8},
  {&(_tg__ZTV7S7335C5__7S7335C8__7S7335C7[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C8__7S7335C7[5]),  5,8},
  {&(_tg__ZTV7S7335C5__7S7335C7[3]),  3,7},
  {&(_tg__ZTV7S7335C6__7S7335C5__7S7335C7[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7335C7[];
extern  VTBL_ENTRY _ZTV7S7335C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C7[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C7D0Ev,_ZTv0_n68_N7S7335C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C7D0Ev,_ZThn4_N7S7335C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C7D1Ev,_ZTv0_n68_N7S7335C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C7D1Ev,_ZThn4_N7S7335C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7335C7 = {  "S7335C7", // class name
  bases_S7335C7, 7,
  &(vtc_S7335C7[0]), // expected_vtbl_contents
  &(vtt_S7335C7[0]), // expected_vtt_contents
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI7S7335C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7335C7),96, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7335C7),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7335C1  : S7335C2 , S7335C7 {
  virtual void  v1(); // _ZN7S7335C12v1Ev
  virtual void  v2(); // _ZN7S7335C12v2Ev
  virtual void  v3(); // _ZN7S7335C12v3Ev
  virtual void  v4(); // _ZN7S7335C12v4Ev
  virtual void  v5(); // _ZN7S7335C12v5Ev
  virtual void  v6(); // _ZN7S7335C12v6Ev
  virtual void  v7(); // _ZN7S7335C12v7Ev
  ~S7335C1(); // tgen
  S7335C1(); // tgen
};
//SIG(1 S7335C1) C1{ BC2{ VBC3{ BC4{ v8 v9 v10 v11} VBC5{ VBC6{ v12 v13 v14 FD} vd v15 v16} v17 v18 v19 v20 v21 v22 v23 v24} vd v25 v26 v27 v28} BC7{ VBC8{ BC3 v29 v30 v31 v32 v33 v34 v35 v36 v37 FC9{ m Fc}} VBC10{ BC11{ v38 v39 v40 v41 v42 Fc Fi FL Fs} v43 v44 v45 v46 v47 FC11} vd v48 v49 v50 v51} v1 v2 v3 v4 v5 v6 v7}


void  S7335C1 ::v1(){vfunc_called(this, "_ZN7S7335C12v1Ev");}
void  S7335C1 ::v2(){vfunc_called(this, "_ZN7S7335C12v2Ev");}
void  S7335C1 ::v3(){vfunc_called(this, "_ZN7S7335C12v3Ev");}
void  S7335C1 ::v4(){vfunc_called(this, "_ZN7S7335C12v4Ev");}
void  S7335C1 ::v5(){vfunc_called(this, "_ZN7S7335C12v5Ev");}
void  S7335C1 ::v6(){vfunc_called(this, "_ZN7S7335C12v6Ev");}
void  S7335C1 ::v7(){vfunc_called(this, "_ZN7S7335C12v7Ev");}
S7335C1 ::~S7335C1(){ note_dtor("S7335C1", this);} // tgen
S7335C1 ::S7335C1(){ note_ctor("S7335C1", this);} // tgen

static void Test_S7335C1()
{
  extern Class_Descriptor cd_S7335C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,21)];
    init_test(&cd_S7335C1, buf);
    S7335C1 *dp, &lv = *(dp=new (buf) S7335C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S7335C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7335C1)");
    /*is_ambiguous_... S7335C1::S7335C3 */ AMB_check_base_class_offset(lv, (S7335C4*)(S7335C3*), 0, "S7335C1");
    check_base_class_offset(lv, (S7335C6*)(S7335C5*), ABISELECT(16,8), "S7335C1");
    /*is_ambiguous_... S7335C1::S7335C3 */ AMB_check_base_class_offset(lv, (S7335C5*)(S7335C3*), ABISELECT(8,4), "S7335C1");
    check_base_class_offset(lv, (S7335C5*)(S7335C3*)(S7335C8*), ABISELECT(8,4), "S7335C1");
    check_base_class_offset(lv, (S7335C3*)(S7335C2*), 0, "S7335C1");
    check_base_class_offset(lv, (S7335C2*), 0, "S7335C1");
    check_base_class_offset(lv, (S7335C4*)(S7335C3*)(S7335C8*), ABISELECT(48,24), "S7335C1");
    check_base_class_offset(lv, (S7335C3*)(S7335C8*), ABISELECT(48,24), "S7335C1");
    check_base_class_offset(lv, (S7335C8*)(S7335C7*), ABISELECT(48,24), "S7335C1");
    check_base_class_offset(lv, (S7335C11*)(S7335C10*), ABISELECT(64,32), "S7335C1");
    check_base_class_offset(lv, (S7335C10*)(S7335C7*), ABISELECT(64,32), "S7335C1");
    check_base_class_offset(lv, (S7335C7*), ABISELECT(8,4), "S7335C1");
    test_class_info(&lv, &cd_S7335C1);
    dp->~S7335C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7335C1(Test_S7335C1, "S7335C1", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN7S7335C1C1Ev();
extern void _ZN7S7335C1D1Ev();
Name_Map name_map_S7335C1[] = {
  NSPAIR(_ZN7S7335C1C1Ev),
  NSPAIR(_ZN7S7335C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7335C4;
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
extern Class_Descriptor cd_S7335C6;
extern VTBL_ENTRY _ZTI7S7335C6[];
extern  VTBL_ENTRY _ZTV7S7335C6[];
extern Class_Descriptor cd_S7335C5;
extern VTBL_ENTRY _ZTI7S7335C5[];
extern  VTBL_ENTRY _ZTV7S7335C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C5[];
extern Class_Descriptor cd_S7335C3;
extern VTBL_ENTRY _ZTI7S7335C3[];
extern  VTBL_ENTRY _ZTV7S7335C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C3[];
extern Class_Descriptor cd_S7335C2;
extern VTBL_ENTRY _ZTI7S7335C2[];
extern  VTBL_ENTRY _ZTV7S7335C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C2[];
extern Class_Descriptor cd_S7335C4;
extern VTBL_ENTRY _ZTI7S7335C4[];
extern  VTBL_ENTRY _ZTV7S7335C4[];
extern Class_Descriptor cd_S7335C3;
extern VTBL_ENTRY _ZTI7S7335C3[];
extern  VTBL_ENTRY _ZTV7S7335C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C3[];
extern Class_Descriptor cd_S7335C8;
extern VTBL_ENTRY _ZTI7S7335C8[];
extern  VTBL_ENTRY _ZTV7S7335C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C8[];
extern Class_Descriptor cd_S7335C11;
extern VTBL_ENTRY _ZTI8S7335C11[];
extern  VTBL_ENTRY _ZTV8S7335C11[];
extern Class_Descriptor cd_S7335C10;
extern VTBL_ENTRY _ZTI8S7335C10[];
extern  VTBL_ENTRY _ZTV8S7335C10[];
extern Class_Descriptor cd_S7335C7;
extern VTBL_ENTRY _ZTI7S7335C7[];
extern  VTBL_ENTRY _ZTV7S7335C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C7[];
static Base_Class bases_S7335C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7335C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7335C6,    ABISELECT(16,8), //bcp->offset
    62, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7335C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7335C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7335C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7335C4,    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_S7335C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7335C8,    ABISELECT(48,24), //bcp->offset
    70, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7335C11,    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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7335C10,    ABISELECT(64,32), //bcp->offset
    119, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7335C7,    ABISELECT(8,4), //bcp->offset
    45, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7335C1[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S7335C1D1Ev,_ZTv0_n68_N7S7335C1D1Ev)();
extern void _ZN7S7335C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7335C1D0Ev,_ZTv0_n68_N7S7335C1D0Ev)();
extern void _ZN7S7335C1D0Ev() __attribute__((weak));
extern void _ZN7S7335C23v25Ev();
extern void _ZN7S7335C23v26Ev();
extern void _ZN7S7335C23v27Ev();
extern void _ZN7S7335C23v28Ev();
extern void _ZN7S7335C12v1Ev();
extern void _ZN7S7335C12v2Ev();
extern void _ZN7S7335C12v3Ev();
extern void _ZN7S7335C12v4Ev();
extern void _ZN7S7335C12v5Ev();
extern void _ZN7S7335C12v6Ev();
extern void _ZN7S7335C12v7Ev();
extern void ABISELECT(_ZTv0_n32_N7S7335C1D1Ev,_ZTv0_n16_N7S7335C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C1D1Ev,_ZThn4_N7S7335C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C1D0Ev,_ZTv0_n16_N7S7335C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C1D0Ev,_ZThn4_N7S7335C1D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C73v48Ev();
extern void _ZN7S7335C73v49Ev();
extern void _ZN7S7335C73v50Ev();
extern void _ZN7S7335C73v51Ev();
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S7335C1D1Ev,_ZTv0_n68_N7S7335C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7335C1D1Ev,_ZThn24_N7S7335C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7335C1D0Ev,_ZTv0_n68_N7S7335C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7335C1D0Ev,_ZThn24_N7S7335C1D0Ev)() __attribute__((weak));
extern void _ZN7S7335C83v29Ev();
extern void _ZN7S7335C83v30Ev();
extern void _ZN7S7335C83v31Ev();
extern void _ZN7S7335C83v32Ev();
extern void _ZN7S7335C83v33Ev();
extern void _ZN7S7335C83v34Ev();
extern void _ZN7S7335C83v35Ev();
extern void _ZN7S7335C83v36Ev();
extern void _ZN7S7335C83v37Ev();
extern void _ZN8S7335C113v38Ev();
extern void _ZN8S7335C113v39Ev();
extern void _ZN8S7335C113v40Ev();
extern void _ZN8S7335C113v41Ev();
extern void _ZN8S7335C113v42Ev();
extern void _ZN8S7335C103v43Ev();
extern void _ZN8S7335C103v44Ev();
extern void _ZN8S7335C103v45Ev();
extern void _ZN8S7335C103v46Ev();
extern void _ZN8S7335C103v47Ev();
static  VTBL_ENTRY vtc_S7335C1[] = {
  ABISELECT(64,32),
  ABISELECT(48,24),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C1[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C1D1Ev,_ZTv0_n68_N7S7335C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C1D0Ev,_ZTv0_n68_N7S7335C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v28Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7335C12v7Ev,
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C1D1Ev,_ZTv0_n16_N7S7335C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C1D0Ev,_ZTv0_n16_N7S7335C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v48Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v49Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v50Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v51Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C1[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7335C1[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C1D1Ev,_ZTv0_n68_N7S7335C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C1D0Ev,_ZTv0_n68_N7S7335C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v37Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7335C1[0]),
  (VTBL_ENTRY)&_ZN8S7335C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v47Ev,
};
extern VTBL_ENTRY _ZTV7S7335C1[];
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S7335C2D1Ev,_ZTv0_n68_N7S7335C2D1Ev)();
extern void _ZN7S7335C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7335C2D0Ev,_ZTv0_n68_N7S7335C2D0Ev)();
extern void _ZN7S7335C2D0Ev() __attribute__((weak));
extern void _ZN7S7335C23v25Ev();
extern void _ZN7S7335C23v26Ev();
extern void _ZN7S7335C23v27Ev();
extern void _ZN7S7335C23v28Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C2__7S7335C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C2[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C2D1Ev,_ZTv0_n68_N7S7335C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C2D0Ev,_ZTv0_n68_N7S7335C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7335C23v28Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C2D1Ev,_ZTv0_n16_N7S7335C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C2D1Ev,_ZThn4_N7S7335C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C2D0Ev,_ZTv0_n16_N7S7335C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C2D0Ev,_ZThn4_N7S7335C2D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C2__7S7335C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C2D1Ev,_ZTv0_n16_N7S7335C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C2D0Ev,_ZTv0_n16_N7S7335C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C2__7S7335C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C2[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C7D1Ev,_ZTv0_n16_N7S7335C7D1Ev)();
extern void _ZN7S7335C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C7D0Ev,_ZTv0_n16_N7S7335C7D0Ev)();
extern void _ZN7S7335C7D0Ev() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
extern void _ZN7S7335C73v48Ev();
extern void _ZN7S7335C73v49Ev();
extern void _ZN7S7335C73v50Ev();
extern void _ZN7S7335C73v51Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C7__7S7335C1[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  0,
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C7D1Ev,_ZTv0_n16_N7S7335C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C7D0Ev,_ZTv0_n16_N7S7335C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v48Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v49Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v50Ev,
  (VTBL_ENTRY)&_ZN7S7335C73v51Ev,
};
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void ABISELECT(_ZTv0_n136_N7S7335C7D1Ev,_ZTv0_n68_N7S7335C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S7335C7D1Ev,_ZThn20_N7S7335C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7335C7D0Ev,_ZTv0_n68_N7S7335C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S7335C7D0Ev,_ZThn20_N7S7335C7D0Ev)() __attribute__((weak));
extern void _ZN7S7335C83v29Ev();
extern void _ZN7S7335C83v30Ev();
extern void _ZN7S7335C83v31Ev();
extern void _ZN7S7335C83v32Ev();
extern void _ZN7S7335C83v33Ev();
extern void _ZN7S7335C83v34Ev();
extern void _ZN7S7335C83v35Ev();
extern void _ZN7S7335C83v36Ev();
extern void _ZN7S7335C83v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C8__7S7335C7__7S7335C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C7D1Ev,_ZTv0_n68_N7S7335C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7335C7D0Ev,_ZTv0_n68_N7S7335C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v37Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C7__7S7335C1[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void _ZN8S7335C113v38Ev();
extern void _ZN8S7335C113v39Ev();
extern void _ZN8S7335C113v40Ev();
extern void _ZN8S7335C113v41Ev();
extern void _ZN8S7335C113v42Ev();
extern void _ZN8S7335C103v43Ev();
extern void _ZN8S7335C103v44Ev();
extern void _ZN8S7335C103v45Ev();
extern void _ZN8S7335C103v46Ev();
extern void _ZN8S7335C103v47Ev();
static  VTBL_ENTRY _tg__ZTV8S7335C10__7S7335C7__7S7335C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7335C7[0]),
  (VTBL_ENTRY)&_ZN8S7335C113v38Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7335C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v43Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7335C103v47Ev,
};
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C3D1Ev();
extern void _ZN7S7335C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C3__7S7335C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7335C3D1Ev,_ZThn4_N7S7335C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S7335C3D0Ev,_ZThn4_N7S7335C3D0Ev)() __attribute__((weak));
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C3__7S7335C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C3__7S7335C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void _ZN7S7335C5D1Ev();
extern void _ZN7S7335C5D0Ev();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C5__7S7335C1[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7335C5[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C8D1Ev();
extern void _ZN7S7335C8D0Ev();
extern void _ZN7S7335C83v29Ev();
extern void _ZN7S7335C83v30Ev();
extern void _ZN7S7335C83v31Ev();
extern void _ZN7S7335C83v32Ev();
extern void _ZN7S7335C83v33Ev();
extern void _ZN7S7335C83v34Ev();
extern void _ZN7S7335C83v35Ev();
extern void _ZN7S7335C83v36Ev();
extern void _ZN7S7335C83v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C8__7S7335C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7335C83v37Ev,
};
extern void _ZN7S7335C42v8Ev();
extern void _ZN7S7335C42v9Ev();
extern void _ZN7S7335C43v10Ev();
extern void _ZN7S7335C43v11Ev();
extern void _ZN7S7335C33v17Ev();
extern void _ZN7S7335C33v18Ev();
extern void _ZN7S7335C33v19Ev();
extern void _ZN7S7335C33v20Ev();
extern void _ZN7S7335C33v21Ev();
extern void _ZN7S7335C33v22Ev();
extern void _ZN7S7335C33v23Ev();
extern void _ZN7S7335C33v24Ev();
extern void _ZN7S7335C3D1Ev();
extern void _ZN7S7335C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C37S7335C8__A1__7S7335C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7335C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7335C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7335C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7335C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev)();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C37S7335C8__A1__7S7335C1[] = {
  0,
  0,
  ABISELECT(40,20),
  ABISELECT(8,4),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C37S7335C8__A1__7S7335C1[] = {
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7335C3[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev)();
extern void _ZN7S7335C53v15Ev();
extern void _ZN7S7335C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C5__7S7335C8__7S7335C1[] = {
  0,
  0,
  ABISELECT(40,20),
  ABISELECT(8,4),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C8D1Ev,_ZTv0_n16_N7S7335C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7335C8D0Ev,_ZTv0_n16_N7S7335C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7335C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7335C53v16Ev,
};
extern void _ZN7S7335C63v12Ev();
extern void _ZN7S7335C63v13Ev();
extern void _ZN7S7335C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7335C6__7S7335C8__7S7335C1[] = {
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7335C8[0]),
  (VTBL_ENTRY)&_ZN7S7335C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7335C63v14Ev,
};
static  VTT_ENTRY vtt_S7335C1[] = {
  {&(_ZTV7S7335C1[20]),  20,141},
  {&(_tg__ZTV7S7335C2__7S7335C1[18]),  18,36},
  {&(_tg__ZTV7S7335C2__7S7335C1[18]),  18,36},
  {&(_tg__ZTV7S7335C5__7S7335C2__7S7335C1[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C2__7S7335C1[5]),  5,8},
  {&(_tg__ZTV7S7335C7__7S7335C1[9]),  9,17},
  {&(_tg__ZTV7S7335C8__7S7335C7__7S7335C1[26]),  26,49},
  {&(_tg__ZTV7S7335C7__7S7335C1[9]),  9,17},
  {&(_tg__ZTV7S7335C6__7S7335C7__7S7335C1[5]),  5,8},
  {&(_tg__ZTV8S7335C10__7S7335C7__7S7335C1[12]),  12,22},
  {&(_ZTV7S7335C1[20]),  20,141},
  {&(_ZTV7S7335C1[54]),  54,141},
  {&(_ZTV7S7335C1[67]),  67,141},
  {&(_ZTV7S7335C1[54]),  54,141},
  {&(_ZTV7S7335C1[96]),  96,141},
  {&(_ZTV7S7335C1[131]),  131,141},
  {&(_tg__ZTV7S7335C3__7S7335C1[4]),  4,18},
  {&(_tg__ZTV7S7335C5__7S7335C3__7S7335C1[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C3__7S7335C1[5]),  5,8},
  {&(_tg__ZTV7S7335C5__7S7335C1[3]),  3,7},
  {&(_tg__ZTV7S7335C6__7S7335C5__7S7335C1[5]),  5,8},
  {&(_tg__ZTV7S7335C8__7S7335C1[4]),  4,27},
  {&(_tg__ZTV7S7335C37S7335C8__A1__7S7335C1[4]),  4,18},
  {&(_tg__ZTV7S7335C5__7S7335C37S7335C8__A1__7S7335C1[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C37S7335C8__A1__7S7335C1[5]),  5,8},
  {&(_tg__ZTV7S7335C5__7S7335C8__7S7335C1[6]),  6,10},
  {&(_tg__ZTV7S7335C6__7S7335C8__7S7335C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7335C1[];
extern  VTBL_ENTRY _ZTV7S7335C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7335C1[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D0Ev,_ZTv0_n16_N7S7335C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C3D0Ev,_ZThn4_N7S7335C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C3D1Ev,_ZTv0_n16_N7S7335C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C3D1Ev,_ZThn4_N7S7335C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C7D0Ev,_ZTv0_n68_N7S7335C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7335C7D0Ev,_ZThn20_N7S7335C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C7D1Ev,_ZTv0_n68_N7S7335C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7335C7D1Ev,_ZThn20_N7S7335C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C7D0Ev,_ZTv0_n16_N7S7335C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7335C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C7D1Ev,_ZTv0_n16_N7S7335C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7335C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C2D0Ev,_ZTv0_n16_N7S7335C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C2D0Ev,_ZThn4_N7S7335C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C2D1Ev,_ZTv0_n16_N7S7335C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C2D1Ev,_ZThn4_N7S7335C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C2D0Ev,_ZTv0_n68_N7S7335C2D0Ev), // 
  (VTBL_ENTRY)_ZN7S7335C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C2D1Ev,_ZTv0_n68_N7S7335C2D1Ev), // 
  (VTBL_ENTRY)_ZN7S7335C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C1D0Ev,_ZTv0_n16_N7S7335C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C1D0Ev,_ZThn4_N7S7335C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7335C1D1Ev,_ZTv0_n16_N7S7335C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7335C1D1Ev,_ZThn4_N7S7335C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C1D0Ev,_ZTv0_n68_N7S7335C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7335C1D0Ev,_ZThn24_N7S7335C1D0Ev),
  (VTBL_ENTRY)_ZN7S7335C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7335C1D1Ev,_ZTv0_n68_N7S7335C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7335C1D1Ev,_ZThn24_N7S7335C1D1Ev),
  (VTBL_ENTRY)_ZN7S7335C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7335C1 = {  "S7335C1", // class name
  bases_S7335C1, 11,
  &(vtc_S7335C1[0]), // expected_vtbl_contents
  &(vtt_S7335C1[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI7S7335C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7335C1),141, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7335C1),27, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C4_nt  {
  void *s4520c4f0[3];
  void  mf4520c4(); // _ZN10S4520C4_nt8mf4520c4Ev
};
//SIG(-1 S4520C4_nt) C1{ m Fp[3]}


void  S4520C4_nt ::mf4520c4(){}

//skip512 S4520C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C3_nt  {
  ::S4520C4_nt s4520c3f0;
  unsigned int s4520c3f1:1;
  virtual  ~S4520C3_nt(); // _ZN10S4520C3_ntD1Ev
  virtual void  v2(); // _ZN10S4520C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4520C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4520C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4520C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4520C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4520C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4520C3_nt2v8Ev
  S4520C3_nt(); // tgen
};
//SIG(-1 S4520C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S4520C3_nt ::~S4520C3_nt(){ note_dtor("S4520C3_nt", this);}
void  S4520C3_nt ::v2(){vfunc_called(this, "_ZN10S4520C3_nt2v2Ev");}
void  S4520C3_nt ::v3(){vfunc_called(this, "_ZN10S4520C3_nt2v3Ev");}
void  S4520C3_nt ::v4(){vfunc_called(this, "_ZN10S4520C3_nt2v4Ev");}
void  S4520C3_nt ::v5(){vfunc_called(this, "_ZN10S4520C3_nt2v5Ev");}
void  S4520C3_nt ::v6(){vfunc_called(this, "_ZN10S4520C3_nt2v6Ev");}
void  S4520C3_nt ::v7(){vfunc_called(this, "_ZN10S4520C3_nt2v7Ev");}
void  S4520C3_nt ::v8(){vfunc_called(this, "_ZN10S4520C3_nt2v8Ev");}
S4520C3_nt ::S4520C3_nt(){ note_ctor("S4520C3_nt", this);} // tgen

//skip512 S4520C3_nt

#else // __cplusplus

extern void _ZN10S4520C3_ntC1Ev();
extern void _ZN10S4520C3_ntD1Ev();
Name_Map name_map_S4520C3_nt[] = {
  NSPAIR(_ZN10S4520C3_ntC1Ev),
  NSPAIR(_ZN10S4520C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4520C3_nt[];
extern void _ZN10S4520C3_ntD1Ev();
extern void _ZN10S4520C3_ntD0Ev();
extern void _ZN10S4520C3_nt2v2Ev();
extern void _ZN10S4520C3_nt2v3Ev();
extern void _ZN10S4520C3_nt2v4Ev();
extern void _ZN10S4520C3_nt2v5Ev();
extern void _ZN10S4520C3_nt2v6Ev();
extern void _ZN10S4520C3_nt2v7Ev();
extern void _ZN10S4520C3_nt2v8Ev();
static  VTBL_ENTRY vtc_S4520C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4520C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4520C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S4520C3_nt[];
VTBL_ENTRY *P__ZTI10S4520C3_nt = _ZTI10S4520C3_nt; 
extern  VTBL_ENTRY _ZTV10S4520C3_nt[];
Class_Descriptor cd_S4520C3_nt = {  "S4520C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4520C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI10S4520C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4520C3_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C5_nt  {
  virtual void  v9(); // _ZN10S4520C5_nt2v9Ev
  ~S4520C5_nt(); // tgen
  S4520C5_nt(); // tgen
};
//SIG(-1 S4520C5_nt) C1{ v1}


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

//skip512 S4520C5_nt

#else // __cplusplus

extern void _ZN10S4520C5_ntC1Ev();
extern void _ZN10S4520C5_ntD1Ev();
Name_Map name_map_S4520C5_nt[] = {
  NSPAIR(_ZN10S4520C5_ntC1Ev),
  NSPAIR(_ZN10S4520C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4520C5_nt[];
extern void _ZN10S4520C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S4520C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4520C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S4520C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S4520C5_nt[];
VTBL_ENTRY *P__ZTI10S4520C5_nt = _ZTI10S4520C5_nt; 
extern  VTBL_ENTRY _ZTV10S4520C5_nt[];
Class_Descriptor cd_S4520C5_nt = {  "S4520C5_nt", // class name
  0,0,//no base classes
  &(vtc_S4520C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4520C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4520C5_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  S4520C6_nt  {
  ::S3281C18 s4520c6f0;
  int s4520c6f1;
  void  mf4520c6(); // _ZN10S4520C6_nt8mf4520c6Ev
};
//SIG(-1 S4520C6_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fi}


void  S4520C6_nt ::mf4520c6(){}

//skip512 S4520C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C9_nt  {
  unsigned int s4520c9f0:1;
  int s4520c9f1:3;
};
//SIG(-1 S4520C9_nt) C1{ Fi:1 Fi:3}



//skip512 S4520C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C2_nt  : S4520C3_nt , S4520C5_nt {
  ::S4520C6_nt s4520c2f0;
  ::S4520C9_nt s4520c2f1;
  ::S4224C43_nt s4520c2f2;
  ::S2650C18 s4520c2f3;
  void *s4520c2f4;
  ::S15502C13_nt s4520c2f5;
  int s4520c2f6;
  void *s4520c2f7;
  int s4520c2f8[2];
  virtual  ~S4520C2_nt(); // _ZN10S4520C2_ntD1Ev
  virtual void  v10(); // _ZN10S4520C2_nt3v10Ev
  virtual void  v11(); // _ZN10S4520C2_nt3v11Ev
  virtual void  v12(); // _ZN10S4520C2_nt3v12Ev
  virtual void  v13(); // _ZN10S4520C2_nt3v13Ev
  virtual void  v14(); // _ZN10S4520C2_nt3v14Ev
  S4520C2_nt(); // tgen
};
//SIG(-1 S4520C2_nt) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 FC3{ m Fp[3]} Fi:1} BC4{ v13} vd v1 v2 v3 v4 v5 FC5{ m FC6{ BC7{ m Fp Fi[2]}} Fi} FC8{ Fi:1 Fi:3} FC9{ m Fp} FC10{ m Fp} Fp FC11{ m Fi[4]} Fi Fp Fi[2]}


 S4520C2_nt ::~S4520C2_nt(){ note_dtor("S4520C2_nt", this);}
void  S4520C2_nt ::v10(){vfunc_called(this, "_ZN10S4520C2_nt3v10Ev");}
void  S4520C2_nt ::v11(){vfunc_called(this, "_ZN10S4520C2_nt3v11Ev");}
void  S4520C2_nt ::v12(){vfunc_called(this, "_ZN10S4520C2_nt3v12Ev");}
void  S4520C2_nt ::v13(){vfunc_called(this, "_ZN10S4520C2_nt3v13Ev");}
void  S4520C2_nt ::v14(){vfunc_called(this, "_ZN10S4520C2_nt3v14Ev");}
S4520C2_nt ::S4520C2_nt(){ note_ctor("S4520C2_nt", this);} // tgen

//skip512 S4520C2_nt

#else // __cplusplus

extern void _ZN10S4520C2_ntC1Ev();
extern void _ZN10S4520C2_ntD1Ev();
Name_Map name_map_S4520C2_nt[] = {
  NSPAIR(_ZN10S4520C2_ntC1Ev),
  NSPAIR(_ZN10S4520C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4520C3_nt;
extern VTBL_ENTRY _ZTI10S4520C3_nt[];
extern  VTBL_ENTRY _ZTV10S4520C3_nt[];
extern Class_Descriptor cd_S4520C5_nt;
extern VTBL_ENTRY _ZTI10S4520C5_nt[];
extern  VTBL_ENTRY _ZTV10S4520C5_nt[];
static Base_Class bases_S4520C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4520C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4520C5_nt,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4520C2_nt[];
extern void _ZN10S4520C2_ntD1Ev();
extern void _ZN10S4520C2_ntD0Ev();
extern void _ZN10S4520C3_nt2v2Ev();
extern void _ZN10S4520C3_nt2v3Ev();
extern void _ZN10S4520C3_nt2v4Ev();
extern void _ZN10S4520C3_nt2v5Ev();
extern void _ZN10S4520C3_nt2v6Ev();
extern void _ZN10S4520C3_nt2v7Ev();
extern void _ZN10S4520C3_nt2v8Ev();
extern void _ZN10S4520C2_nt3v10Ev();
extern void _ZN10S4520C2_nt3v11Ev();
extern void _ZN10S4520C2_nt3v12Ev();
extern void _ZN10S4520C2_nt3v13Ev();
extern void _ZN10S4520C2_nt3v14Ev();
extern void _ZN10S4520C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S4520C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4520C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4520C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S4520C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4520C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S4520C2_nt[];
VTBL_ENTRY *P__ZTI10S4520C2_nt = _ZTI10S4520C2_nt; 
extern  VTBL_ENTRY _ZTV10S4520C2_nt[];
Class_Descriptor cd_S4520C2_nt = {  "S4520C2_nt", // class name
  bases_S4520C2_nt, 2,
  &(vtc_S4520C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI10S4520C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S4520C2_nt),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  S4520C14_nt  {
  short s4520c14f0[3];
  void  mf4520c14(); // _ZN11S4520C14_nt9mf4520c14Ev
};
//SIG(-1 S4520C14_nt) C1{ m Fs[3]}


void  S4520C14_nt ::mf4520c14(){}

//skip512 S4520C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C13_nt  {
  ::S4520C14_nt s4520c13f0;
  void  mf4520c13(); // _ZN11S4520C13_nt9mf4520c13Ev
};
//SIG(-1 S4520C13_nt) C1{ m FC2{ m Fs[3]}}


void  S4520C13_nt ::mf4520c13(){}

//skip512 S4520C13_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S4520C15_nt  {
  void *s4520c15f0[2];
  void  mf4520c15(); // _ZN11S4520C15_nt9mf4520c15Ev
};
//SIG(-1 S4520C15_nt) C1{ m Fp[2]}


void  S4520C15_nt ::mf4520c15(){}

//skip512 S4520C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C16  {
  ::S4520C14_nt s4520c16f0;
  ::S4520C14_nt s4520c16f1;
  ::S4520C14_nt s4520c16f2;
  ::S4520C14_nt s4520c16f3;
  ::S4520C14_nt s4520c16f4;
  ::S4520C14_nt s4520c16f5;
  void  mf4520c16(); // _ZN8S4520C169mf4520c16Ev
};
//SIG(-1 S4520C16) C1{ m FC2{ m Fs[3]} FC2 FC2 FC2 FC2 FC2}


void  S4520C16 ::mf4520c16(){}

static void Test_S4520C16()
{
  {
    init_simple_test("S4520C16");
    S4520C16 lv;
    check2(sizeof(lv), 36, "sizeof(S4520C16)");
    check2(__alignof__(lv), 2, "__alignof__(S4520C16)");
    check_field_offset(lv, s4520c16f0, 0, "S4520C16.s4520c16f0");
    check_field_offset(lv, s4520c16f1, 6, "S4520C16.s4520c16f1");
    check_field_offset(lv, s4520c16f2, 12, "S4520C16.s4520c16f2");
    check_field_offset(lv, s4520c16f3, 18, "S4520C16.s4520c16f3");
    check_field_offset(lv, s4520c16f4, 24, "S4520C16.s4520c16f4");
    check_field_offset(lv, s4520c16f5, 30, "S4520C16.s4520c16f5");
  }
}
static Arrange_To_Call_Me vS4520C16(Test_S4520C16, "S4520C16", 36);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C17  {
  ::S4520C14_nt s4520c17f0;
  ::S4520C14_nt s4520c17f1;
  ::S4520C14_nt s4520c17f2;
  ::S4520C14_nt s4520c17f3;
  ::S4520C14_nt s4520c17f4;
  void  mf4520c17(); // _ZN8S4520C179mf4520c17Ev
};
//SIG(-1 S4520C17) C1{ m FC2{ m Fs[3]} FC2 FC2 FC2 FC2}


void  S4520C17 ::mf4520c17(){}

static void Test_S4520C17()
{
  {
    init_simple_test("S4520C17");
    S4520C17 lv;
    check2(sizeof(lv), 30, "sizeof(S4520C17)");
    check2(__alignof__(lv), 2, "__alignof__(S4520C17)");
    check_field_offset(lv, s4520c17f0, 0, "S4520C17.s4520c17f0");
    check_field_offset(lv, s4520c17f1, 6, "S4520C17.s4520c17f1");
    check_field_offset(lv, s4520c17f2, 12, "S4520C17.s4520c17f2");
    check_field_offset(lv, s4520c17f3, 18, "S4520C17.s4520c17f3");
    check_field_offset(lv, s4520c17f4, 24, "S4520C17.s4520c17f4");
  }
}
static Arrange_To_Call_Me vS4520C17(Test_S4520C17, "S4520C17", 30);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4520C1  : S4520C2_nt , S4520C13_nt {
  ::S4520C15_nt s4520c1f0;
  ::S4520C16 s4520c1f1;
  ::S4520C17 s4520c1f2;
  virtual void  v1(); // _ZN7S4520C12v1Ev
  ~S4520C1(); // tgen
  S4520C1(); // tgen
};
//SIG(1 S4520C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[3]} Fi:1} BC5{ v9} vd v10 v11 v12 v13 v14 FC6{ m FC7{ BC8{ m Fp Fi[2]}} Fi} FC9{ Fi:1 Fi:3} FC10{ m Fp} FC11{ m Fp} Fp FC12{ m Fi[4]} Fi Fp Fi[2]} BC13{ m FC14{ m Fs[3]}} v1 FC15{ m Fp[2]} FC16{ m FC14 FC14 FC14 FC14 FC14 FC14} FC17{ m FC14 FC14 FC14 FC14 FC14}}


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

static void Test_S4520C1()
{
  extern Class_Descriptor cd_S4520C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,44)];
    init_test(&cd_S4520C1, buf);
    S4520C1 *dp, &lv = *(dp=new (buf) S4520C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,172), "sizeof(S4520C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4520C1)");
    check_base_class_offset(lv, (S4520C3_nt*)(S4520C2_nt*), 0, "S4520C1");
    check_base_class_offset(lv, (S4520C5_nt*)(S4520C2_nt*), ABISELECT(40,20), "S4520C1");
    check_base_class_offset(lv, (S4520C2_nt*), 0, "S4520C1");
    check_base_class_offset(lv, (S4520C13_nt*), ABISELECT(144,88), "S4520C1");
    check_field_offset(lv, s4520c1f0, ABISELECT(152,96), "S4520C1.s4520c1f0");
    check_field_offset(lv, s4520c1f1, ABISELECT(168,104), "S4520C1.s4520c1f1");
    check_field_offset(lv, s4520c1f2, ABISELECT(204,140), "S4520C1.s4520c1f2");
    test_class_info(&lv, &cd_S4520C1);
    dp->~S4520C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4520C1(Test_S4520C1, "S4520C1", ABISELECT(240,172));

#else // __cplusplus

extern void _ZN7S4520C1C1Ev();
extern void _ZN7S4520C1D1Ev();
Name_Map name_map_S4520C1[] = {
  NSPAIR(_ZN7S4520C1C1Ev),
  NSPAIR(_ZN7S4520C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4520C3_nt;
extern VTBL_ENTRY _ZTI10S4520C3_nt[];
extern  VTBL_ENTRY _ZTV10S4520C3_nt[];
extern Class_Descriptor cd_S4520C5_nt;
extern VTBL_ENTRY _ZTI10S4520C5_nt[];
extern  VTBL_ENTRY _ZTV10S4520C5_nt[];
extern Class_Descriptor cd_S4520C2_nt;
extern VTBL_ENTRY _ZTI10S4520C2_nt[];
extern  VTBL_ENTRY _ZTV10S4520C2_nt[];
extern Class_Descriptor cd_S4520C13_nt;
extern VTBL_ENTRY _ZTI11S4520C13_nt[];
static Base_Class bases_S4520C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4520C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4520C5_nt,    ABISELECT(40,20), //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_S4520C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4520C13_nt,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4520C1[];
extern void _ZN7S4520C1D1Ev();
extern void _ZN7S4520C1D0Ev();
extern void _ZN10S4520C3_nt2v2Ev();
extern void _ZN10S4520C3_nt2v3Ev();
extern void _ZN10S4520C3_nt2v4Ev();
extern void _ZN10S4520C3_nt2v5Ev();
extern void _ZN10S4520C3_nt2v6Ev();
extern void _ZN10S4520C3_nt2v7Ev();
extern void _ZN10S4520C3_nt2v8Ev();
extern void _ZN10S4520C2_nt3v10Ev();
extern void _ZN10S4520C2_nt3v11Ev();
extern void _ZN10S4520C2_nt3v12Ev();
extern void _ZN10S4520C2_nt3v13Ev();
extern void _ZN10S4520C2_nt3v14Ev();
extern void _ZN7S4520C12v1Ev();
extern void _ZN10S4520C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S4520C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4520C1[0]),
  (VTBL_ENTRY)&_ZN7S4520C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4520C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4520C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4520C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN7S4520C12v1Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4520C1[0]),
  (VTBL_ENTRY)&_ZN10S4520C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI7S4520C1[];
extern  VTBL_ENTRY _ZTV7S4520C1[];
Class_Descriptor cd_S4520C1 = {  "S4520C1", // class name
  bases_S4520C1, 4,
  &(vtc_S4520C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,172), // object size
  NSPAIRA(_ZTI7S4520C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4520C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4523C3  {
  ::S4520C4_nt s4523c3f0;
  unsigned int s4523c3f1:1;
  virtual  ~S4523C3(); // _ZN7S4523C3D1Ev
  virtual void  v2(); // _ZN7S4523C32v2Ev
  virtual void  v3(); // _ZN7S4523C32v3Ev
  virtual void  v4(); // _ZN7S4523C32v4Ev
  virtual void  v5(); // _ZN7S4523C32v5Ev
  virtual void  v6(); // _ZN7S4523C32v6Ev
  virtual void  v7(); // _ZN7S4523C32v7Ev
  virtual void  v8(); // _ZN7S4523C32v8Ev
  S4523C3(); // tgen
};
//SIG(-1 S4523C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S4523C3 ::~S4523C3(){ note_dtor("S4523C3", this);}
void  S4523C3 ::v2(){vfunc_called(this, "_ZN7S4523C32v2Ev");}
void  S4523C3 ::v3(){vfunc_called(this, "_ZN7S4523C32v3Ev");}
void  S4523C3 ::v4(){vfunc_called(this, "_ZN7S4523C32v4Ev");}
void  S4523C3 ::v5(){vfunc_called(this, "_ZN7S4523C32v5Ev");}
void  S4523C3 ::v6(){vfunc_called(this, "_ZN7S4523C32v6Ev");}
void  S4523C3 ::v7(){vfunc_called(this, "_ZN7S4523C32v7Ev");}
void  S4523C3 ::v8(){vfunc_called(this, "_ZN7S4523C32v8Ev");}
S4523C3 ::S4523C3(){ note_ctor("S4523C3", this);} // tgen

static void Test_S4523C3()
{
  extern Class_Descriptor cd_S4523C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S4523C3, buf);
    S4523C3 *dp, &lv = *(dp=new (buf) S4523C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S4523C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4523C3)");
    check_field_offset(lv, s4523c3f0, ABISELECT(8,4), "S4523C3.s4523c3f0");
    set_bf_and_test(lv, s4523c3f1, ABISELECT(32,16), 0, 1, 1, "S4523C3");
    test_class_info(&lv, &cd_S4523C3);
    dp->~S4523C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4523C3(Test_S4523C3, "S4523C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S4523C3C1Ev();
extern void _ZN7S4523C3D1Ev();
Name_Map name_map_S4523C3[] = {
  NSPAIR(_ZN7S4523C3C1Ev),
  NSPAIR(_ZN7S4523C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4523C3[];
extern void _ZN7S4523C3D1Ev();
extern void _ZN7S4523C3D0Ev();
extern void _ZN7S4523C32v2Ev();
extern void _ZN7S4523C32v3Ev();
extern void _ZN7S4523C32v4Ev();
extern void _ZN7S4523C32v5Ev();
extern void _ZN7S4523C32v6Ev();
extern void _ZN7S4523C32v7Ev();
extern void _ZN7S4523C32v8Ev();
static  VTBL_ENTRY vtc_S4523C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4523C3[0]),
  (VTBL_ENTRY)&_ZN7S4523C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4523C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S4523C3[];
extern  VTBL_ENTRY _ZTV7S4523C3[];
Class_Descriptor cd_S4523C3 = {  "S4523C3", // class name
  0,0,//no base classes
  &(vtc_S4523C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S4523C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4523C3),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  S4523C5  {
  virtual void  v9(); // _ZN7S4523C52v9Ev
  ~S4523C5(); // tgen
  S4523C5(); // tgen
};
//SIG(-1 S4523C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S4523C5C1Ev();
extern void _ZN7S4523C5D1Ev();
Name_Map name_map_S4523C5[] = {
  NSPAIR(_ZN7S4523C5C1Ev),
  NSPAIR(_ZN7S4523C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4523C5[];
extern void _ZN7S4523C52v9Ev();
static  VTBL_ENTRY vtc_S4523C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4523C5[0]),
  (VTBL_ENTRY)&_ZN7S4523C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4523C5[];
extern  VTBL_ENTRY _ZTV7S4523C5[];
Class_Descriptor cd_S4523C5 = {  "S4523C5", // class name
  0,0,//no base classes
  &(vtc_S4523C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4523C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4523C5),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  S4523C2  : S4523C3 , S4523C5 {
  ::S4520C6_nt s4523c2f0;
  ::S4520C9_nt s4523c2f1;
  ::S4224C43_nt s4523c2f2;
  ::S2650C18 s4523c2f3;
  void *s4523c2f4;
  ::S15502C13_nt s4523c2f5;
  int s4523c2f6;
  void *s4523c2f7;
  int s4523c2f8[2];
  virtual  ~S4523C2(); // _ZN7S4523C2D1Ev
  virtual void  v10(); // _ZN7S4523C23v10Ev
  virtual void  v11(); // _ZN7S4523C23v11Ev
  virtual void  v12(); // _ZN7S4523C23v12Ev
  virtual void  v13(); // _ZN7S4523C23v13Ev
  virtual void  v14(); // _ZN7S4523C23v14Ev
  S4523C2(); // tgen
};
//SIG(-1 S4523C2) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 FC3{ m Fp[3]} Fi:1} BC4{ v13} vd v1 v2 v3 v4 v5 FC5{ m FC6{ BC7{ m Fp Fi[2]}} Fi} FC8{ Fi:1 Fi:3} FC9{ m Fp} FC10{ m Fp} Fp FC11{ m Fi[4]} Fi Fp Fi[2]}


 S4523C2 ::~S4523C2(){ note_dtor("S4523C2", this);}
void  S4523C2 ::v10(){vfunc_called(this, "_ZN7S4523C23v10Ev");}
void  S4523C2 ::v11(){vfunc_called(this, "_ZN7S4523C23v11Ev");}
void  S4523C2 ::v12(){vfunc_called(this, "_ZN7S4523C23v12Ev");}
void  S4523C2 ::v13(){vfunc_called(this, "_ZN7S4523C23v13Ev");}
void  S4523C2 ::v14(){vfunc_called(this, "_ZN7S4523C23v14Ev");}
S4523C2 ::S4523C2(){ note_ctor("S4523C2", this);} // tgen

static void Test_S4523C2()
{
  extern Class_Descriptor cd_S4523C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S4523C2, buf);
    S4523C2 *dp, &lv = *(dp=new (buf) S4523C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S4523C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4523C2)");
    check_base_class_offset(lv, (S4523C3*), 0, "S4523C2");
    check_base_class_offset(lv, (S4523C5*), ABISELECT(40,20), "S4523C2");
    check_field_offset(lv, s4523c2f0, ABISELECT(48,24), "S4523C2.s4523c2f0");
    check_field_offset(lv, s4523c2f1, ABISELECT(72,40), "S4523C2.s4523c2f1");
    check_field_offset(lv, s4523c2f2, ABISELECT(80,44), "S4523C2.s4523c2f2");
    check_field_offset(lv, s4523c2f3, ABISELECT(88,48), "S4523C2.s4523c2f3");
    check_field_offset(lv, s4523c2f4, ABISELECT(96,52), "S4523C2.s4523c2f4");
    check_field_offset(lv, s4523c2f5, ABISELECT(104,56), "S4523C2.s4523c2f5");
    check_field_offset(lv, s4523c2f6, ABISELECT(120,72), "S4523C2.s4523c2f6");
    check_field_offset(lv, s4523c2f7, ABISELECT(128,76), "S4523C2.s4523c2f7");
    check_field_offset(lv, s4523c2f8, ABISELECT(136,80), "S4523C2.s4523c2f8");
    test_class_info(&lv, &cd_S4523C2);
    dp->~S4523C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4523C2(Test_S4523C2, "S4523C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S4523C2C1Ev();
extern void _ZN7S4523C2D1Ev();
Name_Map name_map_S4523C2[] = {
  NSPAIR(_ZN7S4523C2C1Ev),
  NSPAIR(_ZN7S4523C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4523C3;
extern VTBL_ENTRY _ZTI7S4523C3[];
extern  VTBL_ENTRY _ZTV7S4523C3[];
extern Class_Descriptor cd_S4523C5;
extern VTBL_ENTRY _ZTI7S4523C5[];
extern  VTBL_ENTRY _ZTV7S4523C5[];
static Base_Class bases_S4523C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4523C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4523C5,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4523C2[];
extern void _ZN7S4523C2D1Ev();
extern void _ZN7S4523C2D0Ev();
extern void _ZN7S4523C32v2Ev();
extern void _ZN7S4523C32v3Ev();
extern void _ZN7S4523C32v4Ev();
extern void _ZN7S4523C32v5Ev();
extern void _ZN7S4523C32v6Ev();
extern void _ZN7S4523C32v7Ev();
extern void _ZN7S4523C32v8Ev();
extern void _ZN7S4523C23v10Ev();
extern void _ZN7S4523C23v11Ev();
extern void _ZN7S4523C23v12Ev();
extern void _ZN7S4523C23v13Ev();
extern void _ZN7S4523C23v14Ev();
extern void _ZN7S4523C52v9Ev();
static  VTBL_ENTRY vtc_S4523C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4523C2[0]),
  (VTBL_ENTRY)&_ZN7S4523C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4523C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4523C2[0]),
  (VTBL_ENTRY)&_ZN7S4523C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4523C2[];
extern  VTBL_ENTRY _ZTV7S4523C2[];
Class_Descriptor cd_S4523C2 = {  "S4523C2", // class name
  bases_S4523C2, 2,
  &(vtc_S4523C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S4523C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4523C2),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  S4523C1  : S4523C2 , S4224C37 {
  ::S4520C15_nt s4523c1f0;
  ::S4520C16 s4523c1f1;
  ::S4520C17 s4523c1f2;
  virtual void  v1(); // _ZN7S4523C12v1Ev
  ~S4523C1(); // tgen
  S4523C1(); // tgen
};
//SIG(1 S4523C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[3]} Fi:1} BC5{ v9} vd v10 v11 v12 v13 v14 FC6{ m FC7{ BC8{ m Fp Fi[2]}} Fi} FC9{ Fi:1 Fi:3} FC10{ m Fp} FC11{ m Fp} Fp FC12{ m Fi[4]} Fi Fp Fi[2]} BC13{ m} v1 FC14{ m Fp[2]} FC15{ m FC16{ m Fs[3]} FC16 FC16 FC16 FC16 FC16} FC17{ m FC16 FC16 FC16 FC16 FC16}}


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

static void Test_S4523C1()
{
  extern Class_Descriptor cd_S4523C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,42)];
    init_test(&cd_S4523C1, buf);
    S4523C1 *dp, &lv = *(dp=new (buf) S4523C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,164), "sizeof(S4523C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4523C1)");
    check_base_class_offset(lv, (S4523C3*)(S4523C2*), 0, "S4523C1");
    check_base_class_offset(lv, (S4523C5*)(S4523C2*), ABISELECT(40,20), "S4523C1");
    check_base_class_offset(lv, (S4523C2*), 0, "S4523C1");
    check_base_class_offset(lv, (S4224C37*), 0, "S4523C1");
    check_field_offset(lv, s4523c1f0, ABISELECT(144,88), "S4523C1.s4523c1f0");
    check_field_offset(lv, s4523c1f1, ABISELECT(160,96), "S4523C1.s4523c1f1");
    check_field_offset(lv, s4523c1f2, ABISELECT(196,132), "S4523C1.s4523c1f2");
    test_class_info(&lv, &cd_S4523C1);
    dp->~S4523C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4523C1(Test_S4523C1, "S4523C1", ABISELECT(232,164));

#else // __cplusplus

extern void _ZN7S4523C1C1Ev();
extern void _ZN7S4523C1D1Ev();
Name_Map name_map_S4523C1[] = {
  NSPAIR(_ZN7S4523C1C1Ev),
  NSPAIR(_ZN7S4523C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4523C3;
extern VTBL_ENTRY _ZTI7S4523C3[];
extern  VTBL_ENTRY _ZTV7S4523C3[];
extern Class_Descriptor cd_S4523C5;
extern VTBL_ENTRY _ZTI7S4523C5[];
extern  VTBL_ENTRY _ZTV7S4523C5[];
extern Class_Descriptor cd_S4523C2;
extern VTBL_ENTRY _ZTI7S4523C2[];
extern  VTBL_ENTRY _ZTV7S4523C2[];
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
static Base_Class bases_S4523C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4523C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4523C5,    ABISELECT(40,20), //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_S4523C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4523C1[];
extern void _ZN7S4523C1D1Ev();
extern void _ZN7S4523C1D0Ev();
extern void _ZN7S4523C32v2Ev();
extern void _ZN7S4523C32v3Ev();
extern void _ZN7S4523C32v4Ev();
extern void _ZN7S4523C32v5Ev();
extern void _ZN7S4523C32v6Ev();
extern void _ZN7S4523C32v7Ev();
extern void _ZN7S4523C32v8Ev();
extern void _ZN7S4523C23v10Ev();
extern void _ZN7S4523C23v11Ev();
extern void _ZN7S4523C23v12Ev();
extern void _ZN7S4523C23v13Ev();
extern void _ZN7S4523C23v14Ev();
extern void _ZN7S4523C12v1Ev();
extern void _ZN7S4523C52v9Ev();
static  VTBL_ENTRY vtc_S4523C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4523C1[0]),
  (VTBL_ENTRY)&_ZN7S4523C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4523C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4523C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4523C23v14Ev,
  (VTBL_ENTRY)&_ZN7S4523C12v1Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4523C1[0]),
  (VTBL_ENTRY)&_ZN7S4523C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4523C1[];
extern  VTBL_ENTRY _ZTV7S4523C1[];
Class_Descriptor cd_S4523C1 = {  "S4523C1", // class name
  bases_S4523C1, 4,
  &(vtc_S4523C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,164), // object size
  NSPAIRA(_ZTI7S4523C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4523C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5267C3  {
  ::S4224C18_nt s5267c3f0;
  ::S4224C18_nt s5267c3f1;
  ::S4224C18_nt s5267c3f2;
  ::S4224C18_nt s5267c3f3;
  ::S4224C18_nt s5267c3f4;
  void *s5267c3f5[5];
  char s5267c3f6[2];
  void *s5267c3f7[2];
  int s5267c3f8;
  virtual  ~S5267C3(); // _ZN7S5267C3D1Ev
  virtual void  v5(); // _ZN7S5267C32v5Ev
  virtual void  v6(); // _ZN7S5267C32v6Ev
  virtual void  v7(); // _ZN7S5267C32v7Ev
  virtual void  v8(); // _ZN7S5267C32v8Ev
  virtual void  v9(); // _ZN7S5267C32v9Ev
  virtual void  v10(); // _ZN7S5267C33v10Ev
  virtual void  v11(); // _ZN7S5267C33v11Ev
  virtual void  v12(); // _ZN7S5267C33v12Ev
  virtual void  v13(); // _ZN7S5267C33v13Ev
  virtual void  v14(); // _ZN7S5267C33v14Ev
  virtual void  v15(); // _ZN7S5267C33v15Ev
  virtual void  v16(); // _ZN7S5267C33v16Ev
  virtual void  v17(); // _ZN7S5267C33v17Ev
  virtual void  v18(); // _ZN7S5267C33v18Ev
  virtual void  v19(); // _ZN7S5267C33v19Ev
  virtual void  v20(); // _ZN7S5267C33v20Ev
  virtual void  v21(); // _ZN7S5267C33v21Ev
  virtual void  v22(); // _ZN7S5267C33v22Ev
  virtual void  v23(); // _ZN7S5267C33v23Ev
  virtual void  v24(); // _ZN7S5267C33v24Ev
  virtual void  v25(); // _ZN7S5267C33v25Ev
  virtual void  v26(); // _ZN7S5267C33v26Ev
  virtual void  v27(); // _ZN7S5267C33v27Ev
  virtual void  v28(); // _ZN7S5267C33v28Ev
  virtual void  v29(); // _ZN7S5267C33v29Ev
  virtual void  v30(); // _ZN7S5267C33v30Ev
  virtual void  v31(); // _ZN7S5267C33v31Ev
  S5267C3(); // tgen
};
//SIG(-1 S5267C3) 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 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC2 FC2 FC2 Fp[5] Fc[2] Fp[2] Fi}


 S5267C3 ::~S5267C3(){ note_dtor("S5267C3", this);}
void  S5267C3 ::v5(){vfunc_called(this, "_ZN7S5267C32v5Ev");}
void  S5267C3 ::v6(){vfunc_called(this, "_ZN7S5267C32v6Ev");}
void  S5267C3 ::v7(){vfunc_called(this, "_ZN7S5267C32v7Ev");}
void  S5267C3 ::v8(){vfunc_called(this, "_ZN7S5267C32v8Ev");}
void  S5267C3 ::v9(){vfunc_called(this, "_ZN7S5267C32v9Ev");}
void  S5267C3 ::v10(){vfunc_called(this, "_ZN7S5267C33v10Ev");}
void  S5267C3 ::v11(){vfunc_called(this, "_ZN7S5267C33v11Ev");}
void  S5267C3 ::v12(){vfunc_called(this, "_ZN7S5267C33v12Ev");}
void  S5267C3 ::v13(){vfunc_called(this, "_ZN7S5267C33v13Ev");}
void  S5267C3 ::v14(){vfunc_called(this, "_ZN7S5267C33v14Ev");}
void  S5267C3 ::v15(){vfunc_called(this, "_ZN7S5267C33v15Ev");}
void  S5267C3 ::v16(){vfunc_called(this, "_ZN7S5267C33v16Ev");}
void  S5267C3 ::v17(){vfunc_called(this, "_ZN7S5267C33v17Ev");}
void  S5267C3 ::v18(){vfunc_called(this, "_ZN7S5267C33v18Ev");}
void  S5267C3 ::v19(){vfunc_called(this, "_ZN7S5267C33v19Ev");}
void  S5267C3 ::v20(){vfunc_called(this, "_ZN7S5267C33v20Ev");}
void  S5267C3 ::v21(){vfunc_called(this, "_ZN7S5267C33v21Ev");}
void  S5267C3 ::v22(){vfunc_called(this, "_ZN7S5267C33v22Ev");}
void  S5267C3 ::v23(){vfunc_called(this, "_ZN7S5267C33v23Ev");}
void  S5267C3 ::v24(){vfunc_called(this, "_ZN7S5267C33v24Ev");}
void  S5267C3 ::v25(){vfunc_called(this, "_ZN7S5267C33v25Ev");}
void  S5267C3 ::v26(){vfunc_called(this, "_ZN7S5267C33v26Ev");}
void  S5267C3 ::v27(){vfunc_called(this, "_ZN7S5267C33v27Ev");}
void  S5267C3 ::v28(){vfunc_called(this, "_ZN7S5267C33v28Ev");}
void  S5267C3 ::v29(){vfunc_called(this, "_ZN7S5267C33v29Ev");}
void  S5267C3 ::v30(){vfunc_called(this, "_ZN7S5267C33v30Ev");}
void  S5267C3 ::v31(){vfunc_called(this, "_ZN7S5267C33v31Ev");}
S5267C3 ::S5267C3(){ note_ctor("S5267C3", this);} // tgen

static void Test_S5267C3()
{
  extern Class_Descriptor cd_S5267C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S5267C3, buf);
    S5267C3 *dp, &lv = *(dp=new (buf) S5267C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S5267C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5267C3)");
    check_field_offset(lv, s5267c3f0, ABISELECT(8,4), "S5267C3.s5267c3f0");
    check_field_offset(lv, s5267c3f1, ABISELECT(32,20), "S5267C3.s5267c3f1");
    check_field_offset(lv, s5267c3f2, ABISELECT(56,36), "S5267C3.s5267c3f2");
    check_field_offset(lv, s5267c3f3, ABISELECT(80,52), "S5267C3.s5267c3f3");
    check_field_offset(lv, s5267c3f4, ABISELECT(104,68), "S5267C3.s5267c3f4");
    check_field_offset(lv, s5267c3f5, ABISELECT(128,84), "S5267C3.s5267c3f5");
    check_field_offset(lv, s5267c3f6, ABISELECT(168,104), "S5267C3.s5267c3f6");
    check_field_offset(lv, s5267c3f7, ABISELECT(176,108), "S5267C3.s5267c3f7");
    check_field_offset(lv, s5267c3f8, ABISELECT(192,116), "S5267C3.s5267c3f8");
    test_class_info(&lv, &cd_S5267C3);
    dp->~S5267C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5267C3(Test_S5267C3, "S5267C3", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN7S5267C3C1Ev();
extern void _ZN7S5267C3D1Ev();
Name_Map name_map_S5267C3[] = {
  NSPAIR(_ZN7S5267C3C1Ev),
  NSPAIR(_ZN7S5267C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5267C3[];
extern void _ZN7S5267C3D1Ev();
extern void _ZN7S5267C3D0Ev();
extern void _ZN7S5267C32v5Ev();
extern void _ZN7S5267C32v6Ev();
extern void _ZN7S5267C32v7Ev();
extern void _ZN7S5267C32v8Ev();
extern void _ZN7S5267C32v9Ev();
extern void _ZN7S5267C33v10Ev();
extern void _ZN7S5267C33v11Ev();
extern void _ZN7S5267C33v12Ev();
extern void _ZN7S5267C33v13Ev();
extern void _ZN7S5267C33v14Ev();
extern void _ZN7S5267C33v15Ev();
extern void _ZN7S5267C33v16Ev();
extern void _ZN7S5267C33v17Ev();
extern void _ZN7S5267C33v18Ev();
extern void _ZN7S5267C33v19Ev();
extern void _ZN7S5267C33v20Ev();
extern void _ZN7S5267C33v21Ev();
extern void _ZN7S5267C33v22Ev();
extern void _ZN7S5267C33v23Ev();
extern void _ZN7S5267C33v24Ev();
extern void _ZN7S5267C33v25Ev();
extern void _ZN7S5267C33v26Ev();
extern void _ZN7S5267C33v27Ev();
extern void _ZN7S5267C33v28Ev();
extern void _ZN7S5267C33v29Ev();
extern void _ZN7S5267C33v30Ev();
extern void _ZN7S5267C33v31Ev();
static  VTBL_ENTRY vtc_S5267C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5267C3[0]),
  (VTBL_ENTRY)&_ZN7S5267C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5267C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v27Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v28Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v29Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v30Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v31Ev,
};
extern VTBL_ENTRY _ZTI7S5267C3[];
extern  VTBL_ENTRY _ZTV7S5267C3[];
Class_Descriptor cd_S5267C3 = {  "S5267C3", // class name
  0,0,//no base classes
  &(vtc_S5267C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI7S5267C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5267C3),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5267C2  : S5267C3 {
  char s5267c2f0[6];
  virtual  ~S5267C2(); // _ZN7S5267C2D1Ev
  virtual void  v32(); // _ZN7S5267C23v32Ev
  virtual void  v33(); // _ZN7S5267C23v33Ev
  virtual void  v34(); // _ZN7S5267C23v34Ev
  virtual void  v35(); // _ZN7S5267C23v35Ev
  virtual void  v36(); // _ZN7S5267C23v36Ev
  virtual void  v37(); // _ZN7S5267C23v37Ev
  virtual void  v38(); // _ZN7S5267C23v38Ev
  virtual void  v39(); // _ZN7S5267C23v39Ev
  virtual void  v40(); // _ZN7S5267C23v40Ev
  virtual void  v41(); // _ZN7S5267C23v41Ev
  virtual void  v42(); // _ZN7S5267C23v42Ev
  virtual void  v43(); // _ZN7S5267C23v43Ev
  virtual void  v44(); // _ZN7S5267C23v44Ev
  virtual void  v45(); // _ZN7S5267C23v45Ev
  virtual void  v46(); // _ZN7S5267C23v46Ev
  S5267C2(); // tgen
};
//SIG(-1 S5267C2) C1{ BC2{ 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 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} FC3 FC3 FC3 FC3 Fp[5] Fc[2] Fp[2] Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc[6]}


 S5267C2 ::~S5267C2(){ note_dtor("S5267C2", this);}
void  S5267C2 ::v32(){vfunc_called(this, "_ZN7S5267C23v32Ev");}
void  S5267C2 ::v33(){vfunc_called(this, "_ZN7S5267C23v33Ev");}
void  S5267C2 ::v34(){vfunc_called(this, "_ZN7S5267C23v34Ev");}
void  S5267C2 ::v35(){vfunc_called(this, "_ZN7S5267C23v35Ev");}
void  S5267C2 ::v36(){vfunc_called(this, "_ZN7S5267C23v36Ev");}
void  S5267C2 ::v37(){vfunc_called(this, "_ZN7S5267C23v37Ev");}
void  S5267C2 ::v38(){vfunc_called(this, "_ZN7S5267C23v38Ev");}
void  S5267C2 ::v39(){vfunc_called(this, "_ZN7S5267C23v39Ev");}
void  S5267C2 ::v40(){vfunc_called(this, "_ZN7S5267C23v40Ev");}
void  S5267C2 ::v41(){vfunc_called(this, "_ZN7S5267C23v41Ev");}
void  S5267C2 ::v42(){vfunc_called(this, "_ZN7S5267C23v42Ev");}
void  S5267C2 ::v43(){vfunc_called(this, "_ZN7S5267C23v43Ev");}
void  S5267C2 ::v44(){vfunc_called(this, "_ZN7S5267C23v44Ev");}
void  S5267C2 ::v45(){vfunc_called(this, "_ZN7S5267C23v45Ev");}
void  S5267C2 ::v46(){vfunc_called(this, "_ZN7S5267C23v46Ev");}
S5267C2 ::S5267C2(){ note_ctor("S5267C2", this);} // tgen

static void Test_S5267C2()
{
  extern Class_Descriptor cd_S5267C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,33)];
    init_test(&cd_S5267C2, buf);
    S5267C2 *dp, &lv = *(dp=new (buf) S5267C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,128), "sizeof(S5267C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5267C2)");
    check_base_class_offset(lv, (S5267C3*), 0, "S5267C2");
    check_field_offset(lv, s5267c2f0, ABISELECT(196,120), "S5267C2.s5267c2f0");
    test_class_info(&lv, &cd_S5267C2);
    dp->~S5267C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5267C2(Test_S5267C2, "S5267C2", ABISELECT(208,128));

#else // __cplusplus

extern void _ZN7S5267C2C1Ev();
extern void _ZN7S5267C2D1Ev();
Name_Map name_map_S5267C2[] = {
  NSPAIR(_ZN7S5267C2C1Ev),
  NSPAIR(_ZN7S5267C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5267C3;
extern VTBL_ENTRY _ZTI7S5267C3[];
extern  VTBL_ENTRY _ZTV7S5267C3[];
static Base_Class bases_S5267C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5267C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5267C2[];
extern void _ZN7S5267C2D1Ev();
extern void _ZN7S5267C2D0Ev();
extern void _ZN7S5267C32v5Ev();
extern void _ZN7S5267C32v6Ev();
extern void _ZN7S5267C32v7Ev();
extern void _ZN7S5267C32v8Ev();
extern void _ZN7S5267C32v9Ev();
extern void _ZN7S5267C33v10Ev();
extern void _ZN7S5267C33v11Ev();
extern void _ZN7S5267C33v12Ev();
extern void _ZN7S5267C33v13Ev();
extern void _ZN7S5267C33v14Ev();
extern void _ZN7S5267C33v15Ev();
extern void _ZN7S5267C33v16Ev();
extern void _ZN7S5267C33v17Ev();
extern void _ZN7S5267C33v18Ev();
extern void _ZN7S5267C33v19Ev();
extern void _ZN7S5267C33v20Ev();
extern void _ZN7S5267C33v21Ev();
extern void _ZN7S5267C33v22Ev();
extern void _ZN7S5267C33v23Ev();
extern void _ZN7S5267C33v24Ev();
extern void _ZN7S5267C33v25Ev();
extern void _ZN7S5267C33v26Ev();
extern void _ZN7S5267C33v27Ev();
extern void _ZN7S5267C33v28Ev();
extern void _ZN7S5267C33v29Ev();
extern void _ZN7S5267C33v30Ev();
extern void _ZN7S5267C33v31Ev();
extern void _ZN7S5267C23v32Ev();
extern void _ZN7S5267C23v33Ev();
extern void _ZN7S5267C23v34Ev();
extern void _ZN7S5267C23v35Ev();
extern void _ZN7S5267C23v36Ev();
extern void _ZN7S5267C23v37Ev();
extern void _ZN7S5267C23v38Ev();
extern void _ZN7S5267C23v39Ev();
extern void _ZN7S5267C23v40Ev();
extern void _ZN7S5267C23v41Ev();
extern void _ZN7S5267C23v42Ev();
extern void _ZN7S5267C23v43Ev();
extern void _ZN7S5267C23v44Ev();
extern void _ZN7S5267C23v45Ev();
extern void _ZN7S5267C23v46Ev();
static  VTBL_ENTRY vtc_S5267C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5267C2[0]),
  (VTBL_ENTRY)&_ZN7S5267C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5267C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v27Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v28Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v29Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v30Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v31Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v46Ev,
};
extern VTBL_ENTRY _ZTI7S5267C2[];
extern  VTBL_ENTRY _ZTV7S5267C2[];
Class_Descriptor cd_S5267C2 = {  "S5267C2", // class name
  bases_S5267C2, 1,
  &(vtc_S5267C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,128), // object size
  NSPAIRA(_ZTI7S5267C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5267C2),46, //virtual function table var
  2, // 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  S5267C1  : S5267C2 {
  virtual  ~S5267C1(); // _ZN7S5267C1D1Ev
  virtual void  v1(); // _ZN7S5267C12v1Ev
  virtual void  v2(); // _ZN7S5267C12v2Ev
  virtual void  v3(); // _ZN7S5267C12v3Ev
  virtual void  v4(); // _ZN7S5267C12v4Ev
  S5267C1(); // tgen
};
//SIG(1 S5267C1) 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 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} FC4 FC4 FC4 FC4 Fp[5] Fc[2] Fp[2] Fi} vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 Fc[6]} vd v1 v2 v3 v4}


 S5267C1 ::~S5267C1(){ note_dtor("S5267C1", this);}
void  S5267C1 ::v1(){vfunc_called(this, "_ZN7S5267C12v1Ev");}
void  S5267C1 ::v2(){vfunc_called(this, "_ZN7S5267C12v2Ev");}
void  S5267C1 ::v3(){vfunc_called(this, "_ZN7S5267C12v3Ev");}
void  S5267C1 ::v4(){vfunc_called(this, "_ZN7S5267C12v4Ev");}
S5267C1 ::S5267C1(){ note_ctor("S5267C1", this);} // tgen

static void Test_S5267C1()
{
  extern Class_Descriptor cd_S5267C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,33)];
    init_test(&cd_S5267C1, buf);
    S5267C1 *dp, &lv = *(dp=new (buf) S5267C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,128), "sizeof(S5267C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5267C1)");
    check_base_class_offset(lv, (S5267C3*)(S5267C2*), 0, "S5267C1");
    check_base_class_offset(lv, (S5267C2*), 0, "S5267C1");
    test_class_info(&lv, &cd_S5267C1);
    dp->~S5267C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5267C1(Test_S5267C1, "S5267C1", ABISELECT(208,128));

#else // __cplusplus

extern void _ZN7S5267C1C1Ev();
extern void _ZN7S5267C1D1Ev();
Name_Map name_map_S5267C1[] = {
  NSPAIR(_ZN7S5267C1C1Ev),
  NSPAIR(_ZN7S5267C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5267C3;
extern VTBL_ENTRY _ZTI7S5267C3[];
extern  VTBL_ENTRY _ZTV7S5267C3[];
extern Class_Descriptor cd_S5267C2;
extern VTBL_ENTRY _ZTI7S5267C2[];
extern  VTBL_ENTRY _ZTV7S5267C2[];
static Base_Class bases_S5267C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5267C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5267C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5267C1[];
extern void _ZN7S5267C1D1Ev();
extern void _ZN7S5267C1D0Ev();
extern void _ZN7S5267C32v5Ev();
extern void _ZN7S5267C32v6Ev();
extern void _ZN7S5267C32v7Ev();
extern void _ZN7S5267C32v8Ev();
extern void _ZN7S5267C32v9Ev();
extern void _ZN7S5267C33v10Ev();
extern void _ZN7S5267C33v11Ev();
extern void _ZN7S5267C33v12Ev();
extern void _ZN7S5267C33v13Ev();
extern void _ZN7S5267C33v14Ev();
extern void _ZN7S5267C33v15Ev();
extern void _ZN7S5267C33v16Ev();
extern void _ZN7S5267C33v17Ev();
extern void _ZN7S5267C33v18Ev();
extern void _ZN7S5267C33v19Ev();
extern void _ZN7S5267C33v20Ev();
extern void _ZN7S5267C33v21Ev();
extern void _ZN7S5267C33v22Ev();
extern void _ZN7S5267C33v23Ev();
extern void _ZN7S5267C33v24Ev();
extern void _ZN7S5267C33v25Ev();
extern void _ZN7S5267C33v26Ev();
extern void _ZN7S5267C33v27Ev();
extern void _ZN7S5267C33v28Ev();
extern void _ZN7S5267C33v29Ev();
extern void _ZN7S5267C33v30Ev();
extern void _ZN7S5267C33v31Ev();
extern void _ZN7S5267C23v32Ev();
extern void _ZN7S5267C23v33Ev();
extern void _ZN7S5267C23v34Ev();
extern void _ZN7S5267C23v35Ev();
extern void _ZN7S5267C23v36Ev();
extern void _ZN7S5267C23v37Ev();
extern void _ZN7S5267C23v38Ev();
extern void _ZN7S5267C23v39Ev();
extern void _ZN7S5267C23v40Ev();
extern void _ZN7S5267C23v41Ev();
extern void _ZN7S5267C23v42Ev();
extern void _ZN7S5267C23v43Ev();
extern void _ZN7S5267C23v44Ev();
extern void _ZN7S5267C23v45Ev();
extern void _ZN7S5267C23v46Ev();
extern void _ZN7S5267C12v1Ev();
extern void _ZN7S5267C12v2Ev();
extern void _ZN7S5267C12v3Ev();
extern void _ZN7S5267C12v4Ev();
static  VTBL_ENTRY vtc_S5267C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5267C1[0]),
  (VTBL_ENTRY)&_ZN7S5267C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5267C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5267C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v27Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v28Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v29Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v30Ev,
  (VTBL_ENTRY)&_ZN7S5267C33v31Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5267C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5267C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5267C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5267C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5267C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5267C1[];
extern  VTBL_ENTRY _ZTV7S5267C1[];
Class_Descriptor cd_S5267C1 = {  "S5267C1", // class name
  bases_S5267C1, 2,
  &(vtc_S5267C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,128), // object size
  NSPAIRA(_ZTI7S5267C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5267C1),50, //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  S1698C3  : S1702C4_nt {
  virtual void  v6(); // _ZN7S1698C32v6Ev
  virtual void  v7(); // _ZN7S1698C32v7Ev
  virtual void  v8(); // _ZN7S1698C32v8Ev
  virtual void  v9(); // _ZN7S1698C32v9Ev
  virtual void  v10(); // _ZN7S1698C33v10Ev
  ~S1698C3(); // tgen
  S1698C3(); // tgen
};
//SIG(-1 S1698C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5}


void  S1698C3 ::v6(){vfunc_called(this, "_ZN7S1698C32v6Ev");}
void  S1698C3 ::v7(){vfunc_called(this, "_ZN7S1698C32v7Ev");}
void  S1698C3 ::v8(){vfunc_called(this, "_ZN7S1698C32v8Ev");}
void  S1698C3 ::v9(){vfunc_called(this, "_ZN7S1698C32v9Ev");}
void  S1698C3 ::v10(){vfunc_called(this, "_ZN7S1698C33v10Ev");}
S1698C3 ::~S1698C3(){ note_dtor("S1698C3", this);} // tgen
S1698C3 ::S1698C3(){ note_ctor("S1698C3", this);} // tgen

static void Test_S1698C3()
{
  extern Class_Descriptor cd_S1698C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1698C3, buf);
    S1698C3 *dp, &lv = *(dp=new (buf) S1698C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1698C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1698C3)");
    check_base_class_offset(lv, (S1702C4_nt*), 0, "S1698C3");
    test_class_info(&lv, &cd_S1698C3);
    dp->~S1698C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1698C3(Test_S1698C3, "S1698C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1698C3C1Ev();
extern void _ZN7S1698C3D1Ev();
Name_Map name_map_S1698C3[] = {
  NSPAIR(_ZN7S1698C3C1Ev),
  NSPAIR(_ZN7S1698C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
static Base_Class bases_S1698C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1698C3[];
extern void _ZN7S1698C3D1Ev();
extern void _ZN7S1698C3D0Ev();
extern void _ZN7S1698C32v6Ev();
extern void _ZN7S1698C32v7Ev();
extern void _ZN7S1698C32v8Ev();
extern void _ZN7S1698C32v9Ev();
extern void _ZN7S1698C33v10Ev();
static  VTBL_ENTRY vtc_S1698C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1698C3[0]),
  (VTBL_ENTRY)&_ZN7S1698C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1698C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1698C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S1698C3[];
extern  VTBL_ENTRY _ZTV7S1698C3[];
Class_Descriptor cd_S1698C3 = {  "S1698C3", // class name
  bases_S1698C3, 1,
  &(vtc_S1698C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1698C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1698C3),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1698C2  : S1698C3 {
  void *s1698c2f0[3];
  ::S1702C5_nt s1698c2f1;
  virtual void  v11(); // _ZN7S1698C23v11Ev
  virtual void  v12(); // _ZN7S1698C23v12Ev
  virtual void  v13(); // _ZN7S1698C23v13Ev
  virtual void  v14(); // _ZN7S1698C23v14Ev
  virtual void  v15(); // _ZN7S1698C23v15Ev
  virtual void  v16(); // _ZN7S1698C23v16Ev
  virtual void  v17(); // _ZN7S1698C23v17Ev
  virtual void  v18(); // _ZN7S1698C23v18Ev
  virtual void  v19(); // _ZN7S1698C23v19Ev
  virtual void  v20(); // _ZN7S1698C23v20Ev
  virtual void  v21(); // _ZN7S1698C23v21Ev
  ~S1698C2(); // tgen
  S1698C2(); // tgen
};
//SIG(-1 S1698C2) C1{ BC2{ BC3{ vd m Fi} v12 v13 v14 v15 v16} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[3] FC4{ m FC5{ m Fp Fi[2] FC6{ m}} Fp[2]}}


void  S1698C2 ::v11(){vfunc_called(this, "_ZN7S1698C23v11Ev");}
void  S1698C2 ::v12(){vfunc_called(this, "_ZN7S1698C23v12Ev");}
void  S1698C2 ::v13(){vfunc_called(this, "_ZN7S1698C23v13Ev");}
void  S1698C2 ::v14(){vfunc_called(this, "_ZN7S1698C23v14Ev");}
void  S1698C2 ::v15(){vfunc_called(this, "_ZN7S1698C23v15Ev");}
void  S1698C2 ::v16(){vfunc_called(this, "_ZN7S1698C23v16Ev");}
void  S1698C2 ::v17(){vfunc_called(this, "_ZN7S1698C23v17Ev");}
void  S1698C2 ::v18(){vfunc_called(this, "_ZN7S1698C23v18Ev");}
void  S1698C2 ::v19(){vfunc_called(this, "_ZN7S1698C23v19Ev");}
void  S1698C2 ::v20(){vfunc_called(this, "_ZN7S1698C23v20Ev");}
void  S1698C2 ::v21(){vfunc_called(this, "_ZN7S1698C23v21Ev");}
S1698C2 ::~S1698C2(){ note_dtor("S1698C2", this);} // tgen
S1698C2 ::S1698C2(){ note_ctor("S1698C2", this);} // tgen

static void Test_S1698C2()
{
  extern Class_Descriptor cd_S1698C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S1698C2, buf);
    S1698C2 *dp, &lv = *(dp=new (buf) S1698C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S1698C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1698C2)");
    check_base_class_offset(lv, (S1702C4_nt*)(S1698C3*), 0, "S1698C2");
    check_base_class_offset(lv, (S1698C3*), 0, "S1698C2");
    check_field_offset(lv, s1698c2f0, ABISELECT(16,8), "S1698C2.s1698c2f0");
    check_field_offset(lv, s1698c2f1, ABISELECT(40,20), "S1698C2.s1698c2f1");
    test_class_info(&lv, &cd_S1698C2);
    dp->~S1698C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1698C2(Test_S1698C2, "S1698C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S1698C2C1Ev();
extern void _ZN7S1698C2D1Ev();
Name_Map name_map_S1698C2[] = {
  NSPAIR(_ZN7S1698C2C1Ev),
  NSPAIR(_ZN7S1698C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
extern Class_Descriptor cd_S1698C3;
extern VTBL_ENTRY _ZTI7S1698C3[];
extern  VTBL_ENTRY _ZTV7S1698C3[];
static Base_Class bases_S1698C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1698C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1698C2[];
extern void _ZN7S1698C2D1Ev();
extern void _ZN7S1698C2D0Ev();
extern void _ZN7S1698C32v6Ev();
extern void _ZN7S1698C32v7Ev();
extern void _ZN7S1698C32v8Ev();
extern void _ZN7S1698C32v9Ev();
extern void _ZN7S1698C33v10Ev();
extern void _ZN7S1698C23v11Ev();
extern void _ZN7S1698C23v12Ev();
extern void _ZN7S1698C23v13Ev();
extern void _ZN7S1698C23v14Ev();
extern void _ZN7S1698C23v15Ev();
extern void _ZN7S1698C23v16Ev();
extern void _ZN7S1698C23v17Ev();
extern void _ZN7S1698C23v18Ev();
extern void _ZN7S1698C23v19Ev();
extern void _ZN7S1698C23v20Ev();
extern void _ZN7S1698C23v21Ev();
static  VTBL_ENTRY vtc_S1698C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1698C2[0]),
  (VTBL_ENTRY)&_ZN7S1698C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1698C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1698C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v21Ev,
};
extern VTBL_ENTRY _ZTI7S1698C2[];
extern  VTBL_ENTRY _ZTV7S1698C2[];
Class_Descriptor cd_S1698C2 = {  "S1698C2", // class name
  bases_S1698C2, 2,
  &(vtc_S1698C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S1698C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1698C2),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1698C1  : S1698C2 {
  ::S4224C39_nt s1698c1f0;
  ::S4224C43_nt s1698c1f1;
  ::S4224C19_nt s1698c1f2;
  ::S4224C19_nt s1698c1f3;
  ::S4224C19_nt s1698c1f4;
  void *s1698c1f5[2];
  ::S1702C5_nt s1698c1f6;
  ::S1702C13 s1698c1f7;
  ::S4224C36 s1698c1f8;
  char s1698c1f9[2];
  virtual void  v1(); // _ZN7S1698C12v1Ev
  virtual void  v2(); // _ZN7S1698C12v2Ev
  virtual void  v3(); // _ZN7S1698C12v3Ev
  virtual void  v4(); // _ZN7S1698C12v4Ev
  virtual void  v5(); // _ZN7S1698C12v5Ev
  ~S1698C1(); // tgen
  S1698C1(); // tgen
};
//SIG(1 S1698C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v6 v7 v8 v9 v10} v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp[3] FC5{ m FC6{ m Fp Fi[2] FC7{ m}} Fp[2]}} v1 v2 v3 v4 v5 FC8{ m FC9{ m FL}} FC10{ m Fp} FC11{ m Fp Fi FC12{ m}} FC11 FC11 Fp[2] FC5 FC13{ Fc[1280] FC11 FL Fc[2]} FC6 Fc[2]}


void  S1698C1 ::v1(){vfunc_called(this, "_ZN7S1698C12v1Ev");}
void  S1698C1 ::v2(){vfunc_called(this, "_ZN7S1698C12v2Ev");}
void  S1698C1 ::v3(){vfunc_called(this, "_ZN7S1698C12v3Ev");}
void  S1698C1 ::v4(){vfunc_called(this, "_ZN7S1698C12v4Ev");}
void  S1698C1 ::v5(){vfunc_called(this, "_ZN7S1698C12v5Ev");}
S1698C1 ::~S1698C1(){ note_dtor("S1698C1", this);} // tgen
S1698C1 ::S1698C1(){ note_ctor("S1698C1", this);} // tgen

static void Test_S1698C1()
{
  extern Class_Descriptor cd_S1698C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(194,363)];
    init_test(&cd_S1698C1, buf);
    S1698C1 *dp, &lv = *(dp=new (buf) S1698C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1544,1448), "sizeof(S1698C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1698C1)");
    check_base_class_offset(lv, (S1702C4_nt*)(S1698C3*)(S1698C2*), 0, "S1698C1");
    check_base_class_offset(lv, (S1698C3*)(S1698C2*), 0, "S1698C1");
    check_base_class_offset(lv, (S1698C2*), 0, "S1698C1");
    check_field_offset(lv, s1698c1f0, ABISELECT(80,44), "S1698C1.s1698c1f0");
    check_field_offset(lv, s1698c1f1, ABISELECT(88,52), "S1698C1.s1698c1f1");
    check_field_offset(lv, s1698c1f2, ABISELECT(96,56), "S1698C1.s1698c1f2");
    check_field_offset(lv, s1698c1f3, ABISELECT(112,68), "S1698C1.s1698c1f3");
    check_field_offset(lv, s1698c1f4, ABISELECT(128,80), "S1698C1.s1698c1f4");
    check_field_offset(lv, s1698c1f5, ABISELECT(144,92), "S1698C1.s1698c1f5");
    check_field_offset(lv, s1698c1f6, ABISELECT(160,100), "S1698C1.s1698c1f6");
    check_field_offset(lv, s1698c1f7, ABISELECT(200,124), "S1698C1.s1698c1f7");
    check_field_offset(lv, s1698c1f8, ABISELECT(1512,1428), "S1698C1.s1698c1f8");
    check_field_offset(lv, s1698c1f9, ABISELECT(1536,1444), "S1698C1.s1698c1f9");
    test_class_info(&lv, &cd_S1698C1);
    dp->~S1698C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1698C1(Test_S1698C1, "S1698C1", ABISELECT(1544,1448));

#else // __cplusplus

extern void _ZN7S1698C1C1Ev();
extern void _ZN7S1698C1D1Ev();
Name_Map name_map_S1698C1[] = {
  NSPAIR(_ZN7S1698C1C1Ev),
  NSPAIR(_ZN7S1698C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1702C4_nt;
extern VTBL_ENTRY _ZTI10S1702C4_nt[];
extern  VTBL_ENTRY _ZTV10S1702C4_nt[];
extern Class_Descriptor cd_S1698C3;
extern VTBL_ENTRY _ZTI7S1698C3[];
extern  VTBL_ENTRY _ZTV7S1698C3[];
extern Class_Descriptor cd_S1698C2;
extern VTBL_ENTRY _ZTI7S1698C2[];
extern  VTBL_ENTRY _ZTV7S1698C2[];
static Base_Class bases_S1698C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1702C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1698C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1698C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1698C1[];
extern void _ZN7S1698C1D1Ev();
extern void _ZN7S1698C1D0Ev();
extern void _ZN7S1698C32v6Ev();
extern void _ZN7S1698C32v7Ev();
extern void _ZN7S1698C32v8Ev();
extern void _ZN7S1698C32v9Ev();
extern void _ZN7S1698C33v10Ev();
extern void _ZN7S1698C23v11Ev();
extern void _ZN7S1698C23v12Ev();
extern void _ZN7S1698C23v13Ev();
extern void _ZN7S1698C23v14Ev();
extern void _ZN7S1698C23v15Ev();
extern void _ZN7S1698C23v16Ev();
extern void _ZN7S1698C23v17Ev();
extern void _ZN7S1698C23v18Ev();
extern void _ZN7S1698C23v19Ev();
extern void _ZN7S1698C23v20Ev();
extern void _ZN7S1698C23v21Ev();
extern void _ZN7S1698C12v1Ev();
extern void _ZN7S1698C12v2Ev();
extern void _ZN7S1698C12v3Ev();
extern void _ZN7S1698C12v4Ev();
extern void _ZN7S1698C12v5Ev();
static  VTBL_ENTRY vtc_S1698C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1698C1[0]),
  (VTBL_ENTRY)&_ZN7S1698C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1698C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1698C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1698C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1698C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1698C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1698C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1698C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1698C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1698C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1698C1[];
extern  VTBL_ENTRY _ZTV7S1698C1[];
Class_Descriptor cd_S1698C1 = {  "S1698C1", // class name
  bases_S1698C1, 3,
  &(vtc_S1698C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1544,1448), // object size
  NSPAIRA(_ZTI7S1698C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1698C1),25, //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  S7662C3  {
  virtual void  v7(); // _ZN7S7662C32v7Ev
  virtual void  v8(); // _ZN7S7662C32v8Ev
  virtual void  v9(); // _ZN7S7662C32v9Ev
  virtual void  v10(); // _ZN7S7662C33v10Ev
  ~S7662C3(); // tgen
  S7662C3(); // tgen
};
//SIG(-1 S7662C3) C1{ v1 v2 v3 v4}


void  S7662C3 ::v7(){vfunc_called(this, "_ZN7S7662C32v7Ev");}
void  S7662C3 ::v8(){vfunc_called(this, "_ZN7S7662C32v8Ev");}
void  S7662C3 ::v9(){vfunc_called(this, "_ZN7S7662C32v9Ev");}
void  S7662C3 ::v10(){vfunc_called(this, "_ZN7S7662C33v10Ev");}
S7662C3 ::~S7662C3(){ note_dtor("S7662C3", this);} // tgen
S7662C3 ::S7662C3(){ note_ctor("S7662C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7662C3C1Ev();
extern void _ZN7S7662C3D1Ev();
Name_Map name_map_S7662C3[] = {
  NSPAIR(_ZN7S7662C3C1Ev),
  NSPAIR(_ZN7S7662C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7662C3[];
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
static  VTBL_ENTRY vtc_S7662C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C3[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
Class_Descriptor cd_S7662C3 = {  "S7662C3", // class name
  0,0,//no base classes
  &(vtc_S7662C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7662C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7662C3),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  S7662C2  : virtual S7662C3 {
  virtual void  v11(); // _ZN7S7662C23v11Ev
  virtual void  v12(); // _ZN7S7662C23v12Ev
  virtual void  v13(); // _ZN7S7662C23v13Ev
  ~S7662C2(); // tgen
  S7662C2(); // tgen
};
//SIG(-1 S7662C2) C1{ VBC2{ v4 v5 v6 v7} v1 v2 v3}


void  S7662C2 ::v11(){vfunc_called(this, "_ZN7S7662C23v11Ev");}
void  S7662C2 ::v12(){vfunc_called(this, "_ZN7S7662C23v12Ev");}
void  S7662C2 ::v13(){vfunc_called(this, "_ZN7S7662C23v13Ev");}
S7662C2 ::~S7662C2(){ note_dtor("S7662C2", this);} // tgen
S7662C2 ::S7662C2(){ note_ctor("S7662C2", this);} // tgen

static void Test_S7662C2()
{
  extern Class_Descriptor cd_S7662C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7662C2, buf);
    S7662C2 *dp, &lv = *(dp=new (buf) S7662C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7662C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7662C2)");
    check_base_class_offset(lv, (S7662C3*), 0, "S7662C2");
    test_class_info(&lv, &cd_S7662C2);
    dp->~S7662C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7662C2(Test_S7662C2, "S7662C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7662C2C1Ev();
extern void _ZN7S7662C2D1Ev();
Name_Map name_map_S7662C2[] = {
  NSPAIR(_ZN7S7662C2C1Ev),
  NSPAIR(_ZN7S7662C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7662C3;
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
static Base_Class bases_S7662C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7662C3,    0, //bcp->offset
    -1, //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 _ZTI7S7662C2[];
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
static  VTBL_ENTRY vtc_S7662C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C2[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7662C2[];
static  VTT_ENTRY vtt_S7662C2[] = {
  {&(_ZTV7S7662C2[7]),  7,14},
  {&(_ZTV7S7662C2[7]),  7,14},
};
extern VTBL_ENTRY _ZTI7S7662C2[];
extern  VTBL_ENTRY _ZTV7S7662C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C2[];
Class_Descriptor cd_S7662C2 = {  "S7662C2", // class name
  bases_S7662C2, 1,
  &(vtc_S7662C2[0]), // expected_vtbl_contents
  &(vtt_S7662C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7662C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7662C2),14, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7662C2),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  S7662C6  {
  int s7662c6f0;
  virtual  ~S7662C6(); // _ZN7S7662C6D1Ev
  virtual void  v14(); // _ZN7S7662C63v14Ev
  virtual void  v15(); // _ZN7S7662C63v15Ev
  virtual void  v16(); // _ZN7S7662C63v16Ev
  virtual void  v17(); // _ZN7S7662C63v17Ev
  S7662C6(); // tgen
};
//SIG(-1 S7662C6) C1{ vd v1 v2 v3 v4 Fi}


 S7662C6 ::~S7662C6(){ note_dtor("S7662C6", this);}
void  S7662C6 ::v14(){vfunc_called(this, "_ZN7S7662C63v14Ev");}
void  S7662C6 ::v15(){vfunc_called(this, "_ZN7S7662C63v15Ev");}
void  S7662C6 ::v16(){vfunc_called(this, "_ZN7S7662C63v16Ev");}
void  S7662C6 ::v17(){vfunc_called(this, "_ZN7S7662C63v17Ev");}
S7662C6 ::S7662C6(){ note_ctor("S7662C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7662C6C1Ev();
extern void _ZN7S7662C6D1Ev();
Name_Map name_map_S7662C6[] = {
  NSPAIR(_ZN7S7662C6C1Ev),
  NSPAIR(_ZN7S7662C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7662C6[];
extern void _ZN7S7662C6D1Ev();
extern void _ZN7S7662C6D0Ev();
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY vtc_S7662C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C6[0]),
  (VTBL_ENTRY)&_ZN7S7662C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern VTBL_ENTRY _ZTI7S7662C6[];
extern  VTBL_ENTRY _ZTV7S7662C6[];
Class_Descriptor cd_S7662C6 = {  "S7662C6", // class name
  0,0,//no base classes
  &(vtc_S7662C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7662C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7662C6),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  S7662C5  : virtual S7662C6 {
  __tsi64 s7662c5f0;
  int s7662c5f1;
  virtual void  v18(); // _ZN7S7662C53v18Ev
  virtual void  v19(); // _ZN7S7662C53v19Ev
  virtual void  v20(); // _ZN7S7662C53v20Ev
  virtual void  v21(); // _ZN7S7662C53v21Ev
  virtual void  v22(); // _ZN7S7662C53v22Ev
  virtual void  v23(); // _ZN7S7662C53v23Ev
  virtual void  v24(); // _ZN7S7662C53v24Ev
  ~S7662C5(); // tgen
  S7662C5(); // tgen
};
//SIG(-1 S7662C5) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S7662C5 ::v18(){vfunc_called(this, "_ZN7S7662C53v18Ev");}
void  S7662C5 ::v19(){vfunc_called(this, "_ZN7S7662C53v19Ev");}
void  S7662C5 ::v20(){vfunc_called(this, "_ZN7S7662C53v20Ev");}
void  S7662C5 ::v21(){vfunc_called(this, "_ZN7S7662C53v21Ev");}
void  S7662C5 ::v22(){vfunc_called(this, "_ZN7S7662C53v22Ev");}
void  S7662C5 ::v23(){vfunc_called(this, "_ZN7S7662C53v23Ev");}
void  S7662C5 ::v24(){vfunc_called(this, "_ZN7S7662C53v24Ev");}
S7662C5 ::~S7662C5(){ note_dtor("S7662C5", this);} // tgen
S7662C5 ::S7662C5(){ note_ctor("S7662C5", this);} // tgen

static void Test_S7662C5()
{
  extern Class_Descriptor cd_S7662C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7662C5, buf);
    S7662C5 *dp, &lv = *(dp=new (buf) S7662C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7662C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7662C5)");
    check_base_class_offset(lv, (S7662C6*), ABISELECT(24,16), "S7662C5");
    check_field_offset(lv, s7662c5f0, ABISELECT(8,4), "S7662C5.s7662c5f0");
    check_field_offset(lv, s7662c5f1, ABISELECT(16,12), "S7662C5.s7662c5f1");
    test_class_info(&lv, &cd_S7662C5);
    dp->~S7662C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7662C5(Test_S7662C5, "S7662C5", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7662C5C1Ev();
extern void _ZN7S7662C5D1Ev();
Name_Map name_map_S7662C5[] = {
  NSPAIR(_ZN7S7662C5C1Ev),
  NSPAIR(_ZN7S7662C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7662C6;
extern VTBL_ENTRY _ZTI7S7662C6[];
extern  VTBL_ENTRY _ZTV7S7662C6[];
static Base_Class bases_S7662C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7662C6,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI7S7662C5[];
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void _ZN7S7662C5D1Ev();
extern void _ZN7S7662C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY vtc_S7662C5[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7662C5[];
static  VTT_ENTRY vtt_S7662C5[] = {
  {&(_ZTV7S7662C5[3]),  3,25},
  {&(_ZTV7S7662C5[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S7662C5[];
extern  VTBL_ENTRY _ZTV7S7662C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C5[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7662C5 = {  "S7662C5", // class name
  bases_S7662C5, 1,
  &(vtc_S7662C5[0]), // expected_vtbl_contents
  &(vtt_S7662C5[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7662C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7662C5),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7662C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7662C7  : S7662C3 {
  virtual  ~S7662C7(); // _ZN7S7662C7D1Ev
  virtual void  v25(); // _ZN7S7662C73v25Ev
  S7662C7(); // tgen
};
//SIG(-1 S7662C7) C1{ BC2{ v2 v3 v4 v5} vd v1}


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

static void Test_S7662C7()
{
  extern Class_Descriptor cd_S7662C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7662C7, buf);
    S7662C7 *dp, &lv = *(dp=new (buf) S7662C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7662C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7662C7)");
    check_base_class_offset(lv, (S7662C3*), 0, "S7662C7");
    test_class_info(&lv, &cd_S7662C7);
    dp->~S7662C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7662C7(Test_S7662C7, "S7662C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7662C7C1Ev();
extern void _ZN7S7662C7D1Ev();
Name_Map name_map_S7662C7[] = {
  NSPAIR(_ZN7S7662C7C1Ev),
  NSPAIR(_ZN7S7662C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7662C3;
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
static Base_Class bases_S7662C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7662C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7662C7[];
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C7D1Ev();
extern void _ZN7S7662C7D0Ev();
extern void _ZN7S7662C73v25Ev();
static  VTBL_ENTRY vtc_S7662C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C7[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C73v25Ev,
};
extern VTBL_ENTRY _ZTI7S7662C7[];
extern  VTBL_ENTRY _ZTV7S7662C7[];
Class_Descriptor cd_S7662C7 = {  "S7662C7", // class name
  bases_S7662C7, 1,
  &(vtc_S7662C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7662C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7662C7),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7662C8  : virtual S7662C5 {
  ::S7688C10 s7662c8f0;
  virtual  ~S7662C8(); // _ZN7S7662C8D2Ev
  virtual void  v26(); // _ZN7S7662C83v26Ev
  virtual void  v27(); // _ZN7S7662C83v27Ev
  virtual void  v28(); // _ZN7S7662C83v28Ev
  virtual void  v29(); // _ZN7S7662C83v29Ev
  virtual void  v30(); // _ZN7S7662C83v30Ev
  virtual void  v31(); // _ZN7S7662C83v31Ev
  virtual void  v32(); // _ZN7S7662C83v32Ev
  virtual void  v33(); // _ZN7S7662C83v33Ev
  virtual void  v34(); // _ZN7S7662C83v34Ev
  S7662C8(); // tgen
};
//SIG(-1 S7662C8) C1{ VBC2{ VBC3{ vd v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 FL Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ vd m Fp[9]}}


 S7662C8 ::~S7662C8(){ note_dtor("S7662C8", this);}
void  S7662C8 ::v26(){vfunc_called(this, "_ZN7S7662C83v26Ev");}
void  S7662C8 ::v27(){vfunc_called(this, "_ZN7S7662C83v27Ev");}
void  S7662C8 ::v28(){vfunc_called(this, "_ZN7S7662C83v28Ev");}
void  S7662C8 ::v29(){vfunc_called(this, "_ZN7S7662C83v29Ev");}
void  S7662C8 ::v30(){vfunc_called(this, "_ZN7S7662C83v30Ev");}
void  S7662C8 ::v31(){vfunc_called(this, "_ZN7S7662C83v31Ev");}
void  S7662C8 ::v32(){vfunc_called(this, "_ZN7S7662C83v32Ev");}
void  S7662C8 ::v33(){vfunc_called(this, "_ZN7S7662C83v33Ev");}
void  S7662C8 ::v34(){vfunc_called(this, "_ZN7S7662C83v34Ev");}
S7662C8 ::S7662C8(){ note_ctor("S7662C8", this);} // tgen

static void Test_S7662C8()
{
  extern Class_Descriptor cd_S7662C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7662C8, buf);
    S7662C8 *dp, &lv = *(dp=new (buf) S7662C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7662C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7662C8)");
    check_base_class_offset(lv, (S7662C6*)(S7662C5*), ABISELECT(112,60), "S7662C8");
    check_base_class_offset(lv, (S7662C5*), ABISELECT(88,44), "S7662C8");
    check_field_offset(lv, s7662c8f0, ABISELECT(8,4), "S7662C8.s7662c8f0");
    test_class_info(&lv, &cd_S7662C8);
    dp->~S7662C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7662C8(Test_S7662C8, "S7662C8", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S7662C8C1Ev();
extern void _ZN7S7662C8D2Ev();
Name_Map name_map_S7662C8[] = {
  NSPAIR(_ZN7S7662C8C1Ev),
  NSPAIR(_ZN7S7662C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7662C6;
extern VTBL_ENTRY _ZTI7S7662C6[];
extern  VTBL_ENTRY _ZTV7S7662C6[];
extern Class_Descriptor cd_S7662C5;
extern VTBL_ENTRY _ZTI7S7662C5[];
extern  VTBL_ENTRY _ZTV7S7662C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C5[];
static Base_Class bases_S7662C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7662C6,    ABISELECT(112,60), //bcp->offset
    35, //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
    1, //immediately_derived
  0, 1},
  {&cd_S7662C5,    ABISELECT(88,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //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 _ZTI7S7662C8[];
extern void _ZN7S7662C8D1Ev();
extern void _ZN7S7662C8D0Ev();
extern void _ZN7S7662C83v26Ev();
extern void _ZN7S7662C83v27Ev();
extern void _ZN7S7662C83v28Ev();
extern void _ZN7S7662C83v29Ev();
extern void _ZN7S7662C83v30Ev();
extern void _ZN7S7662C83v31Ev();
extern void _ZN7S7662C83v32Ev();
extern void _ZN7S7662C83v33Ev();
extern void _ZN7S7662C83v34Ev();
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S7662C8D1Ev,_ZThn44_N7S7662C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S7662C8D0Ev,_ZThn44_N7S7662C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7662C8D1Ev,_ZThn60_N7S7662C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev)();
extern void ABISELECT(_ZThn112_N7S7662C8D0Ev,_ZThn60_N7S7662C8D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY vtc_S7662C8[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&_ZN7S7662C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v34Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7662C8[];
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void _ZN7S7662C5D1Ev();
extern void _ZN7S7662C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C5__7S7662C8[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C6__7S7662C5__7S7662C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
static  VTT_ENTRY vtt_S7662C8[] = {
  {&(_ZTV7S7662C8[4]),  4,48},
  {&(_ZTV7S7662C8[26]),  26,48},
  {&(_ZTV7S7662C8[42]),  42,48},
  {&(_tg__ZTV7S7662C5__7S7662C8[3]),  3,12},
  {&(_tg__ZTV7S7662C6__7S7662C5__7S7662C8[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7662C8[];
extern  VTBL_ENTRY _ZTV7S7662C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C8[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7662C8D0Ev,_ZThn60_N7S7662C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7662C8D1Ev,_ZThn60_N7S7662C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7662C8D0Ev,_ZThn44_N7S7662C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7662C8D1Ev,_ZThn44_N7S7662C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7662C8 = {  "S7662C8", // class name
  bases_S7662C8, 2,
  &(vtc_S7662C8[0]), // expected_vtbl_contents
  &(vtt_S7662C8[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S7662C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7662C8),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7662C8),5, //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  S7662C4  : virtual S7662C3 , virtual S7662C2 , virtual S7662C5 , S7662C7 , S7662C8 {
  int s7662c4f0;
  virtual  ~S7662C4(); // _ZN7S7662C4D2Ev
  virtual void  v35(); // _ZN7S7662C43v35Ev
  virtual void  v36(); // _ZN7S7662C43v36Ev
  virtual void  v37(); // _ZN7S7662C43v37Ev
  virtual void  v38(); // _ZN7S7662C43v38Ev
  virtual void  v39(); // _ZN7S7662C43v39Ev
  virtual void  v40(); // _ZN7S7662C43v40Ev
  virtual void  v41(); // _ZN7S7662C43v41Ev
  S7662C4(); // tgen
};
//SIG(-1 S7662C4) C1{ VBC2{ v8 v9 v10 v11} VBC3{ VBC2 v12 v13 v14} VBC4{ VBC5{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC6{ BC2 vd v26} BC7{ VBC4 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC8{ vd m Fp[9]}} vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S7662C4 ::~S7662C4(){ note_dtor("S7662C4", this);}
void  S7662C4 ::v35(){vfunc_called(this, "_ZN7S7662C43v35Ev");}
void  S7662C4 ::v36(){vfunc_called(this, "_ZN7S7662C43v36Ev");}
void  S7662C4 ::v37(){vfunc_called(this, "_ZN7S7662C43v37Ev");}
void  S7662C4 ::v38(){vfunc_called(this, "_ZN7S7662C43v38Ev");}
void  S7662C4 ::v39(){vfunc_called(this, "_ZN7S7662C43v39Ev");}
void  S7662C4 ::v40(){vfunc_called(this, "_ZN7S7662C43v40Ev");}
void  S7662C4 ::v41(){vfunc_called(this, "_ZN7S7662C43v41Ev");}
S7662C4 ::S7662C4(){ note_ctor("S7662C4", this);} // tgen

static void Test_S7662C4()
{
  extern Class_Descriptor cd_S7662C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S7662C4, buf);
    S7662C4 *dp, &lv = *(dp=new (buf) S7662C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S7662C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7662C4)");
    /*is_ambiguous_... S7662C4::S7662C3 */ AMB_check_base_class_offset(lv, (S7662C3*), ABISELECT(104,52), "S7662C4");
    check_base_class_offset(lv, (S7662C3*)(S7662C2*), ABISELECT(104,52), "S7662C4");
    check_base_class_offset(lv, (S7662C2*), ABISELECT(104,52), "S7662C4");
    check_base_class_offset(lv, (S7662C6*)(S7662C5*), ABISELECT(136,72), "S7662C4");
    check_base_class_offset(lv, (S7662C5*), ABISELECT(112,56), "S7662C4");
    check_base_class_offset(lv, (S7662C5*)(S7662C8*), ABISELECT(112,56), "S7662C4");
    check_base_class_offset(lv, (S7662C3*)(S7662C7*), 0, "S7662C4");
    check_base_class_offset(lv, (S7662C7*), 0, "S7662C4");
    check_base_class_offset(lv, (S7662C8*), ABISELECT(8,4), "S7662C4");
    check_field_offset(lv, s7662c4f0, ABISELECT(96,48), "S7662C4.s7662c4f0");
    test_class_info(&lv, &cd_S7662C4);
    dp->~S7662C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7662C4(Test_S7662C4, "S7662C4", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN7S7662C4C1Ev();
extern void _ZN7S7662C4D2Ev();
Name_Map name_map_S7662C4[] = {
  NSPAIR(_ZN7S7662C4C1Ev),
  NSPAIR(_ZN7S7662C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7662C3;
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
extern Class_Descriptor cd_S7662C2;
extern VTBL_ENTRY _ZTI7S7662C2[];
extern  VTBL_ENTRY _ZTV7S7662C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C2[];
extern Class_Descriptor cd_S7662C6;
extern VTBL_ENTRY _ZTI7S7662C6[];
extern  VTBL_ENTRY _ZTV7S7662C6[];
extern Class_Descriptor cd_S7662C5;
extern VTBL_ENTRY _ZTI7S7662C5[];
extern  VTBL_ENTRY _ZTV7S7662C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C5[];
extern Class_Descriptor cd_S7662C3;
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
extern Class_Descriptor cd_S7662C7;
extern VTBL_ENTRY _ZTI7S7662C7[];
extern  VTBL_ENTRY _ZTV7S7662C7[];
extern Class_Descriptor cd_S7662C8;
extern VTBL_ENTRY _ZTI7S7662C8[];
extern  VTBL_ENTRY _ZTV7S7662C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C8[];
static Base_Class bases_S7662C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7662C3,    ABISELECT(104,52), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7662C2,    ABISELECT(104,52), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7662C6,    ABISELECT(136,72), //bcp->offset
    72, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7662C5,    ABISELECT(112,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7662C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7662C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7662C8,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI7S7662C4[];
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C4D1Ev();
extern void _ZN7S7662C4D0Ev();
extern void _ZN7S7662C73v25Ev();
extern void _ZN7S7662C43v35Ev();
extern void _ZN7S7662C43v36Ev();
extern void _ZN7S7662C43v37Ev();
extern void _ZN7S7662C43v38Ev();
extern void _ZN7S7662C43v39Ev();
extern void _ZN7S7662C43v40Ev();
extern void _ZN7S7662C43v41Ev();
extern void ABISELECT(_ZThn8_N7S7662C4D1Ev,_ZThn4_N7S7662C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7662C4D0Ev,_ZThn4_N7S7662C4D0Ev)();
extern void _ZN7S7662C83v26Ev();
extern void _ZN7S7662C83v27Ev();
extern void _ZN7S7662C83v28Ev();
extern void _ZN7S7662C83v29Ev();
extern void _ZN7S7662C83v30Ev();
extern void _ZN7S7662C83v31Ev();
extern void _ZN7S7662C83v32Ev();
extern void _ZN7S7662C83v33Ev();
extern void _ZN7S7662C83v34Ev();
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7662C4D1Ev,_ZTv0_n44_N7S7662C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7662C4D1Ev,_ZThn56_N7S7662C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7662C4D0Ev,_ZTv0_n44_N7S7662C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7662C4D0Ev,_ZThn56_N7S7662C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C4D1Ev,_ZTv0_n12_N7S7662C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7662C4D1Ev,_ZThn72_N7S7662C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C4D0Ev,_ZTv0_n12_N7S7662C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7662C4D0Ev,_ZThn72_N7S7662C4D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY vtc_S7662C4[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C73v25Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v41Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7662C4D1Ev,_ZThn4_N7S7662C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7662C4D0Ev,_ZThn4_N7S7662C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C4D1Ev,_ZTv0_n44_N7S7662C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C4D0Ev,_ZTv0_n44_N7S7662C4D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C4D1Ev,_ZTv0_n12_N7S7662C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C4D0Ev,_ZTv0_n12_N7S7662C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7662C4[];
extern void _ZN7S7662C8D1Ev();
extern void _ZN7S7662C8D0Ev();
extern void _ZN7S7662C83v26Ev();
extern void _ZN7S7662C83v27Ev();
extern void _ZN7S7662C83v28Ev();
extern void _ZN7S7662C83v29Ev();
extern void _ZN7S7662C83v30Ev();
extern void _ZN7S7662C83v31Ev();
extern void _ZN7S7662C83v32Ev();
extern void _ZN7S7662C83v33Ev();
extern void _ZN7S7662C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C8__7S7662C4[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&_ZN7S7662C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v34Ev,
};
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev)();
extern void ABISELECT(_ZThn104_N7S7662C8D1Ev,_ZThn52_N7S7662C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev)();
extern void ABISELECT(_ZThn104_N7S7662C8D0Ev,_ZThn52_N7S7662C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7662C5__7S7662C8__7S7662C4[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S7662C8D1Ev,_ZThn68_N7S7662C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S7662C8D0Ev,_ZThn68_N7S7662C8D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C6__7S7662C8__7S7662C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C2__7S7662C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C2[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
};
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void _ZN7S7662C5D1Ev();
extern void _ZN7S7662C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C5__7S7662C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C6__7S7662C5__7S7662C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
static  VTT_ENTRY vtt_S7662C4[] = {
  {&(_ZTV7S7662C4[6]),  6,85},
  {&(_tg__ZTV7S7662C8__7S7662C4[4]),  4,15},
  {&(_tg__ZTV7S7662C5__7S7662C8__7S7662C4[11]),  11,20},
  {&(_tg__ZTV7S7662C6__7S7662C8__7S7662C4[7]),  7,13},
  {&(_ZTV7S7662C4[45]),  45,85},
  {&(_ZTV7S7662C4[45]),  45,85},
  {&(_ZTV7S7662C4[63]),  63,85},
  {&(_ZTV7S7662C4[79]),  79,85},
  {&(_ZTV7S7662C4[24]),  24,85},
  {&(_tg__ZTV7S7662C2__7S7662C4[7]),  7,14},
  {&(_tg__ZTV7S7662C2__7S7662C4[7]),  7,14},
  {&(_tg__ZTV7S7662C5__7S7662C4[3]),  3,12},
  {&(_tg__ZTV7S7662C6__7S7662C5__7S7662C4[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7662C4[];
extern  VTBL_ENTRY _ZTV7S7662C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C4[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7662C8D0Ev,_ZThn68_N7S7662C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7662C8D1Ev,_ZThn68_N7S7662C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7662C8D0Ev,_ZThn52_N7S7662C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7662C8D1Ev,_ZThn52_N7S7662C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C4D0Ev,_ZTv0_n12_N7S7662C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7662C4D0Ev,_ZThn72_N7S7662C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C4D1Ev,_ZTv0_n12_N7S7662C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7662C4D1Ev,_ZThn72_N7S7662C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C4D0Ev,_ZTv0_n44_N7S7662C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7662C4D0Ev,_ZThn56_N7S7662C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C4D1Ev,_ZTv0_n44_N7S7662C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7662C4D1Ev,_ZThn56_N7S7662C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7662C4 = {  "S7662C4", // class name
  bases_S7662C4, 7,
  &(vtc_S7662C4[0]), // expected_vtbl_contents
  &(vtt_S7662C4[0]), // expected_vtt_contents
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI7S7662C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7662C4),85, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7662C4),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7662C1  : S7662C2 , S7662C4 {
  ::S7662C6 s7662c1f0;
  int s7662c1f1[2];
  __tsi64 s7662c1f2;
  virtual void  v1(); // _ZN7S7662C12v1Ev
  virtual void  v2(); // _ZN7S7662C12v2Ev
  virtual void  v3(); // _ZN7S7662C12v3Ev
  virtual void  v4(); // _ZN7S7662C12v4Ev
  virtual void  v5(); // _ZN7S7662C12v5Ev
  virtual void  v6(); // _ZN7S7662C12v6Ev
  ~S7662C1(); // tgen
  S7662C1(); // tgen
};
//SIG(1 S7662C1) C1{ BC2{ VBC3{ v7 v8 v9 v10} v11 v12 v13} BC4{ VBC3 VBC2 VBC5{ VBC6{ vd v14 v15 v16 v17 Fi} v18 v19 v20 v21 v22 v23 v24 FL Fi} BC7{ BC3 vd v25} BC8{ VBC5 vd v26 v27 v28 v29 v30 v31 v32 v33 v34 FC9{ vd m Fp[9]}} vd v35 v36 v37 v38 v39 v40 v41 Fi} v1 v2 v3 v4 v5 v6 FC6 Fi[2] FL}


void  S7662C1 ::v1(){vfunc_called(this, "_ZN7S7662C12v1Ev");}
void  S7662C1 ::v2(){vfunc_called(this, "_ZN7S7662C12v2Ev");}
void  S7662C1 ::v3(){vfunc_called(this, "_ZN7S7662C12v3Ev");}
void  S7662C1 ::v4(){vfunc_called(this, "_ZN7S7662C12v4Ev");}
void  S7662C1 ::v5(){vfunc_called(this, "_ZN7S7662C12v5Ev");}
void  S7662C1 ::v6(){vfunc_called(this, "_ZN7S7662C12v6Ev");}
S7662C1 ::~S7662C1(){ note_dtor("S7662C1", this);} // tgen
S7662C1 ::S7662C1(){ note_ctor("S7662C1", this);} // tgen

static void Test_S7662C1()
{
  extern Class_Descriptor cd_S7662C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,28)];
    init_test(&cd_S7662C1, buf);
    S7662C1 *dp, &lv = *(dp=new (buf) S7662C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,108), "sizeof(S7662C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7662C1)");
    /*is_ambiguous_... S7662C1::S7662C2 */ AMB_check_base_class_offset(lv, (S7662C3*)(S7662C2*), 0, "S7662C1");
    /*is_ambiguous_... S7662C4::S7662C3 */ AMB_check_base_class_offset(lv, (S7662C3*)(S7662C4*), 0, "S7662C1");
    /*is_ambiguous_... S7662C1::S7662C2 */ AMB_check_base_class_offset(lv, (S7662C3*)(S7662C2*), 0, "S7662C1");
    /*is_ambiguous_... S7662C1::S7662C2 */ AMB_check_base_class_offset(lv, (S7662C2*), 0, "S7662C1");
    check_base_class_offset(lv, (S7662C2*)(S7662C4*), ABISELECT(144,80), "S7662C1");
    check_base_class_offset(lv, (S7662C6*)(S7662C5*), ABISELECT(176,100), "S7662C1");
    check_base_class_offset(lv, (S7662C5*)(S7662C4*), ABISELECT(152,84), "S7662C1");
    check_base_class_offset(lv, (S7662C5*)(S7662C8*)(S7662C4*), ABISELECT(152,84), "S7662C1");
    check_base_class_offset(lv, (S7662C3*)(S7662C7*)(S7662C4*), ABISELECT(8,4), "S7662C1");
    check_base_class_offset(lv, (S7662C7*)(S7662C4*), ABISELECT(8,4), "S7662C1");
    check_base_class_offset(lv, (S7662C8*)(S7662C4*), ABISELECT(16,8), "S7662C1");
    check_base_class_offset(lv, (S7662C4*), ABISELECT(8,4), "S7662C1");
    check_field_offset(lv, s7662c1f0, ABISELECT(112,56), "S7662C1.s7662c1f0");
    check_field_offset(lv, s7662c1f1, ABISELECT(128,64), "S7662C1.s7662c1f1");
    check_field_offset(lv, s7662c1f2, ABISELECT(136,72), "S7662C1.s7662c1f2");
    test_class_info(&lv, &cd_S7662C1);
    dp->~S7662C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7662C1(Test_S7662C1, "S7662C1", ABISELECT(192,108));

#else // __cplusplus

extern void _ZN7S7662C1C1Ev();
extern void _ZN7S7662C1D1Ev();
Name_Map name_map_S7662C1[] = {
  NSPAIR(_ZN7S7662C1C1Ev),
  NSPAIR(_ZN7S7662C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7662C3;
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
extern Class_Descriptor cd_S7662C2;
extern VTBL_ENTRY _ZTI7S7662C2[];
extern  VTBL_ENTRY _ZTV7S7662C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C2[];
extern Class_Descriptor cd_S7662C2;
extern VTBL_ENTRY _ZTI7S7662C2[];
extern  VTBL_ENTRY _ZTV7S7662C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C2[];
extern Class_Descriptor cd_S7662C6;
extern VTBL_ENTRY _ZTI7S7662C6[];
extern  VTBL_ENTRY _ZTV7S7662C6[];
extern Class_Descriptor cd_S7662C5;
extern VTBL_ENTRY _ZTI7S7662C5[];
extern  VTBL_ENTRY _ZTV7S7662C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C5[];
extern Class_Descriptor cd_S7662C3;
extern VTBL_ENTRY _ZTI7S7662C3[];
extern  VTBL_ENTRY _ZTV7S7662C3[];
extern Class_Descriptor cd_S7662C7;
extern VTBL_ENTRY _ZTI7S7662C7[];
extern  VTBL_ENTRY _ZTV7S7662C7[];
extern Class_Descriptor cd_S7662C8;
extern VTBL_ENTRY _ZTI7S7662C8[];
extern  VTBL_ENTRY _ZTV7S7662C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C8[];
extern Class_Descriptor cd_S7662C4;
extern VTBL_ENTRY _ZTI7S7662C4[];
extern  VTBL_ENTRY _ZTV7S7662C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C4[];
static Base_Class bases_S7662C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7662C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7662C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7662C2,    ABISELECT(144,80), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7662C6,    ABISELECT(176,100), //bcp->offset
    97, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7662C5,    ABISELECT(152,84), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7662C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7662C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7662C8,    ABISELECT(16,8), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7662C4,    ABISELECT(8,4), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7662C1[];
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
extern void _ZN7S7662C12v1Ev();
extern void _ZN7S7662C12v2Ev();
extern void _ZN7S7662C12v3Ev();
extern void _ZN7S7662C12v4Ev();
extern void _ZN7S7662C12v5Ev();
extern void _ZN7S7662C12v6Ev();
extern void _ZN7S7662C1D1Ev();
extern void _ZN7S7662C1D0Ev();
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void ABISELECT(_ZThn8_N7S7662C1D1Ev,_ZThn4_N7S7662C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7662C1D0Ev,_ZThn4_N7S7662C1D0Ev)();
extern void _ZN7S7662C73v25Ev();
extern void _ZN7S7662C43v35Ev();
extern void _ZN7S7662C43v36Ev();
extern void _ZN7S7662C43v37Ev();
extern void _ZN7S7662C43v38Ev();
extern void _ZN7S7662C43v39Ev();
extern void _ZN7S7662C43v40Ev();
extern void _ZN7S7662C43v41Ev();
extern void ABISELECT(_ZThn16_N7S7662C1D1Ev,_ZThn8_N7S7662C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7662C1D0Ev,_ZThn8_N7S7662C1D0Ev)();
extern void _ZN7S7662C83v26Ev();
extern void _ZN7S7662C83v27Ev();
extern void _ZN7S7662C83v28Ev();
extern void _ZN7S7662C83v29Ev();
extern void _ZN7S7662C83v30Ev();
extern void _ZN7S7662C83v31Ev();
extern void _ZN7S7662C83v32Ev();
extern void _ZN7S7662C83v33Ev();
extern void _ZN7S7662C83v34Ev();
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7662C1D1Ev,_ZTv0_n44_N7S7662C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S7662C1D1Ev,_ZThn84_N7S7662C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7662C1D0Ev,_ZTv0_n44_N7S7662C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S7662C1D0Ev,_ZThn84_N7S7662C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C1D1Ev,_ZTv0_n12_N7S7662C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7662C1D1Ev,_ZThn100_N7S7662C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C1D0Ev,_ZTv0_n12_N7S7662C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7662C1D0Ev,_ZThn100_N7S7662C1D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY vtc_S7662C1[] = {
  ABISELECT(176,100),
  ABISELECT(152,84),
  ABISELECT(144,80),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C1[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7662C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7662C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7662C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7662C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7662C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7662C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7662C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C1D0Ev,
  ABISELECT(168,96),
  ABISELECT(144,80),
  ABISELECT(136,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7662C1[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7662C1D1Ev,_ZThn4_N7S7662C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7662C1D0Ev,_ZThn4_N7S7662C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C73v25Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v41Ev,
  ABISELECT(160,92),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7662C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7662C1D1Ev,_ZThn8_N7S7662C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7662C1D0Ev,_ZThn8_N7S7662C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v34Ev,
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7662C1[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
  ABISELECT(-152,-84),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7662C1[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C1D1Ev,_ZTv0_n44_N7S7662C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C1D0Ev,_ZTv0_n44_N7S7662C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7662C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C1D1Ev,_ZTv0_n12_N7S7662C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C1D0Ev,_ZTv0_n12_N7S7662C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7662C1[];
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C2__A__7S7662C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C2[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
};
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C4D1Ev();
extern void _ZN7S7662C4D0Ev();
extern void _ZN7S7662C73v25Ev();
extern void _ZN7S7662C43v35Ev();
extern void _ZN7S7662C43v36Ev();
extern void _ZN7S7662C43v37Ev();
extern void _ZN7S7662C43v38Ev();
extern void _ZN7S7662C43v39Ev();
extern void _ZN7S7662C43v40Ev();
extern void _ZN7S7662C43v41Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C4__7S7662C1[] = {
  ABISELECT(168,96),
  ABISELECT(144,80),
  ABISELECT(136,76),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C73v25Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7662C43v41Ev,
};
extern void _ZN7S7662C8D1Ev();
extern void _ZN7S7662C8D0Ev();
extern void _ZN7S7662C83v26Ev();
extern void _ZN7S7662C83v27Ev();
extern void _ZN7S7662C83v28Ev();
extern void _ZN7S7662C83v29Ev();
extern void _ZN7S7662C83v30Ev();
extern void _ZN7S7662C83v31Ev();
extern void _ZN7S7662C83v32Ev();
extern void _ZN7S7662C83v33Ev();
extern void _ZN7S7662C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C87S7662C4__7S7662C1[] = {
  ABISELECT(160,92),
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&_ZN7S7662C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v34Ev,
};
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev)();
extern void ABISELECT(_ZThn136_N7S7662C8D1Ev,_ZThn76_N7S7662C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev)();
extern void ABISELECT(_ZThn136_N7S7662C8D0Ev,_ZThn76_N7S7662C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7662C5__7S7662C87S7662C4__7S7662C1[] = {
  ABISELECT(-136,-76),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S7662C8D1Ev,_ZThn92_N7S7662C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S7662C8D0Ev,_ZThn92_N7S7662C8D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C6__7S7662C87S7662C4__7S7662C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7662C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C3__7S7662C4__7S7662C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
};
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C2__7S7662C4__7S7662C1[] = {
  0,
  0,
  0,
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
};
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7662C4D1Ev,_ZTv0_n44_N7S7662C4D1Ev)();
extern void ABISELECT(_ZThn144_N7S7662C4D1Ev,_ZThn80_N7S7662C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7662C4D0Ev,_ZTv0_n44_N7S7662C4D0Ev)();
extern void ABISELECT(_ZThn144_N7S7662C4D0Ev,_ZThn80_N7S7662C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7662C5__7S7662C4__7S7662C1[] = {
  ABISELECT(-144,-80),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C4D1Ev,_ZTv0_n44_N7S7662C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7662C4D0Ev,_ZTv0_n44_N7S7662C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7662C4D1Ev,_ZTv0_n12_N7S7662C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7662C4D1Ev,_ZThn96_N7S7662C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C4D0Ev,_ZTv0_n12_N7S7662C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7662C4D0Ev,_ZThn96_N7S7662C4D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C6__7S7662C4__7S7662C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C4D1Ev,_ZTv0_n12_N7S7662C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C4D0Ev,_ZTv0_n12_N7S7662C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
extern void ABISELECT(_ZThn8_N7S7662C4D1Ev,_ZThn4_N7S7662C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7662C4D0Ev,_ZThn4_N7S7662C4D0Ev)();
extern void _ZN7S7662C83v26Ev();
extern void _ZN7S7662C83v27Ev();
extern void _ZN7S7662C83v28Ev();
extern void _ZN7S7662C83v29Ev();
extern void _ZN7S7662C83v30Ev();
extern void _ZN7S7662C83v31Ev();
extern void _ZN7S7662C83v32Ev();
extern void _ZN7S7662C83v33Ev();
extern void _ZN7S7662C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C8__7S7662C4__7S7662C1[] = {
  ABISELECT(160,92),
  ABISELECT(136,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7662C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7662C4D1Ev,_ZThn4_N7S7662C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7662C4D0Ev,_ZThn4_N7S7662C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7662C83v34Ev,
};
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
extern void _ZN7S7662C23v11Ev();
extern void _ZN7S7662C23v12Ev();
extern void _ZN7S7662C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C2__A1__7S7662C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C2[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7662C23v13Ev,
};
extern void _ZN7S7662C32v7Ev();
extern void _ZN7S7662C32v8Ev();
extern void _ZN7S7662C32v9Ev();
extern void _ZN7S7662C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C3__7S7662C2__A1__7S7662C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7662C2[0]),
  (VTBL_ENTRY)&_ZN7S7662C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7662C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7662C33v10Ev,
};
extern void _ZN7S7662C53v18Ev();
extern void _ZN7S7662C53v19Ev();
extern void _ZN7S7662C53v20Ev();
extern void _ZN7S7662C53v21Ev();
extern void _ZN7S7662C53v22Ev();
extern void _ZN7S7662C53v23Ev();
extern void _ZN7S7662C53v24Ev();
extern void _ZN7S7662C5D1Ev();
extern void _ZN7S7662C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C5__7S7662C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&_ZN7S7662C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7662C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7662C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev)() __attribute__((weak));
extern void _ZN7S7662C63v14Ev();
extern void _ZN7S7662C63v15Ev();
extern void _ZN7S7662C63v16Ev();
extern void _ZN7S7662C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7662C6__7S7662C5__7S7662C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7662C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7662C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7662C63v17Ev,
};
static  VTT_ENTRY vtt_S7662C1[] = {
  {&(_ZTV7S7662C1[10]),  10,110},
  {&(_tg__ZTV7S7662C2__A__7S7662C1[7]),  7,14},
  {&(_tg__ZTV7S7662C2__A__7S7662C1[7]),  7,14},
  {&(_tg__ZTV7S7662C4__7S7662C1[6]),  6,20},
  {&(_tg__ZTV7S7662C87S7662C4__7S7662C1[4]),  4,15},
  {&(_tg__ZTV7S7662C5__7S7662C87S7662C4__7S7662C1[11]),  11,20},
  {&(_tg__ZTV7S7662C6__7S7662C87S7662C4__7S7662C1[7]),  7,13},
  {&(_tg__ZTV7S7662C3__7S7662C4__7S7662C1[6]),  6,10},
  {&(_tg__ZTV7S7662C2__7S7662C4__7S7662C1[10]),  10,17},
  {&(_tg__ZTV7S7662C5__7S7662C4__7S7662C1[11]),  11,20},
  {&(_tg__ZTV7S7662C6__7S7662C4__7S7662C1[7]),  7,13},
  {&(_tg__ZTV7S7662C8__7S7662C4__7S7662C1[4]),  4,15},
  {&(_ZTV7S7662C1[10]),  10,110},
  {&(_ZTV7S7662C1[31]),  31,110},
  {&(_ZTV7S7662C1[70]),  70,110},
  {&(_ZTV7S7662C1[88]),  88,110},
  {&(_ZTV7S7662C1[104]),  104,110},
  {&(_ZTV7S7662C1[49]),  49,110},
  {&(_tg__ZTV7S7662C2__A1__7S7662C1[7]),  7,14},
  {&(_tg__ZTV7S7662C3__7S7662C2__A1__7S7662C1[6]),  6,10},
  {&(_tg__ZTV7S7662C5__7S7662C1[3]),  3,12},
  {&(_tg__ZTV7S7662C6__7S7662C5__7S7662C1[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7662C1[];
extern  VTBL_ENTRY _ZTV7S7662C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7662C1[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D0Ev,_ZTv0_n12_N7S7662C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D0Ev,_ZThn16_N7S7662C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C5D1Ev,_ZTv0_n12_N7S7662C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7662C5D1Ev,_ZThn16_N7S7662C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C4D0Ev,_ZTv0_n12_N7S7662C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7662C4D0Ev,_ZThn96_N7S7662C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C4D1Ev,_ZTv0_n12_N7S7662C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7662C4D1Ev,_ZThn96_N7S7662C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C4D0Ev,_ZTv0_n44_N7S7662C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7662C4D0Ev,_ZThn80_N7S7662C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C4D1Ev,_ZTv0_n44_N7S7662C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7662C4D1Ev,_ZThn80_N7S7662C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C8D0Ev,_ZTv0_n12_N7S7662C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7662C8D0Ev,_ZThn92_N7S7662C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C8D1Ev,_ZTv0_n12_N7S7662C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7662C8D1Ev,_ZThn92_N7S7662C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C8D0Ev,_ZTv0_n44_N7S7662C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7662C8D0Ev,_ZThn76_N7S7662C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C8D1Ev,_ZTv0_n44_N7S7662C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7662C8D1Ev,_ZThn76_N7S7662C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C1D0Ev,_ZTv0_n12_N7S7662C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7662C1D0Ev,_ZThn100_N7S7662C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7662C1D1Ev,_ZTv0_n12_N7S7662C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7662C1D1Ev,_ZThn100_N7S7662C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C1D0Ev,_ZTv0_n44_N7S7662C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7662C1D0Ev,_ZThn84_N7S7662C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7662C1D1Ev,_ZTv0_n44_N7S7662C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7662C1D1Ev,_ZThn84_N7S7662C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7662C1 = {  "S7662C1", // class name
  bases_S7662C1, 9,
  &(vtc_S7662C1[0]), // expected_vtbl_contents
  &(vtt_S7662C1[0]), // expected_vtt_contents
  ABISELECT(192,108), // object size
  NSPAIRA(_ZTI7S7662C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7662C1),110, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7662C1),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7661C3  {
  virtual void  v7(); // _ZN7S7661C32v7Ev
  virtual void  v8(); // _ZN7S7661C32v8Ev
  virtual void  v9(); // _ZN7S7661C32v9Ev
  virtual void  v10(); // _ZN7S7661C33v10Ev
  ~S7661C3(); // tgen
  S7661C3(); // tgen
};
//SIG(-1 S7661C3) C1{ v1 v2 v3 v4}


void  S7661C3 ::v7(){vfunc_called(this, "_ZN7S7661C32v7Ev");}
void  S7661C3 ::v8(){vfunc_called(this, "_ZN7S7661C32v8Ev");}
void  S7661C3 ::v9(){vfunc_called(this, "_ZN7S7661C32v9Ev");}
void  S7661C3 ::v10(){vfunc_called(this, "_ZN7S7661C33v10Ev");}
S7661C3 ::~S7661C3(){ note_dtor("S7661C3", this);} // tgen
S7661C3 ::S7661C3(){ note_ctor("S7661C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7661C3C1Ev();
extern void _ZN7S7661C3D1Ev();
Name_Map name_map_S7661C3[] = {
  NSPAIR(_ZN7S7661C3C1Ev),
  NSPAIR(_ZN7S7661C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7661C3[];
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
static  VTBL_ENTRY vtc_S7661C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C3[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
Class_Descriptor cd_S7661C3 = {  "S7661C3", // class name
  0,0,//no base classes
  &(vtc_S7661C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7661C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7661C3),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  S7661C2  : virtual S7661C3 {
  virtual void  v11(); // _ZN7S7661C23v11Ev
  virtual void  v12(); // _ZN7S7661C23v12Ev
  virtual void  v13(); // _ZN7S7661C23v13Ev
  ~S7661C2(); // tgen
  S7661C2(); // tgen
};
//SIG(-1 S7661C2) C1{ VBC2{ v4 v5 v6 v7} v1 v2 v3}


void  S7661C2 ::v11(){vfunc_called(this, "_ZN7S7661C23v11Ev");}
void  S7661C2 ::v12(){vfunc_called(this, "_ZN7S7661C23v12Ev");}
void  S7661C2 ::v13(){vfunc_called(this, "_ZN7S7661C23v13Ev");}
S7661C2 ::~S7661C2(){ note_dtor("S7661C2", this);} // tgen
S7661C2 ::S7661C2(){ note_ctor("S7661C2", this);} // tgen

static void Test_S7661C2()
{
  extern Class_Descriptor cd_S7661C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7661C2, buf);
    S7661C2 *dp, &lv = *(dp=new (buf) S7661C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7661C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7661C2)");
    check_base_class_offset(lv, (S7661C3*), 0, "S7661C2");
    test_class_info(&lv, &cd_S7661C2);
    dp->~S7661C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7661C2(Test_S7661C2, "S7661C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7661C2C1Ev();
extern void _ZN7S7661C2D1Ev();
Name_Map name_map_S7661C2[] = {
  NSPAIR(_ZN7S7661C2C1Ev),
  NSPAIR(_ZN7S7661C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7661C3;
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
static Base_Class bases_S7661C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7661C3,    0, //bcp->offset
    -1, //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 _ZTI7S7661C2[];
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
static  VTBL_ENTRY vtc_S7661C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C2[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
};
extern VTBL_ENTRY _ZTV7S7661C2[];
static  VTT_ENTRY vtt_S7661C2[] = {
  {&(_ZTV7S7661C2[7]),  7,14},
  {&(_ZTV7S7661C2[7]),  7,14},
};
extern VTBL_ENTRY _ZTI7S7661C2[];
extern  VTBL_ENTRY _ZTV7S7661C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C2[];
Class_Descriptor cd_S7661C2 = {  "S7661C2", // class name
  bases_S7661C2, 1,
  &(vtc_S7661C2[0]), // expected_vtbl_contents
  &(vtt_S7661C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7661C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7661C2),14, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7661C2),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  S7661C6  {
  int s7661c6f0;
  virtual  ~S7661C6(); // _ZN7S7661C6D1Ev
  virtual void  v14(); // _ZN7S7661C63v14Ev
  virtual void  v15(); // _ZN7S7661C63v15Ev
  virtual void  v16(); // _ZN7S7661C63v16Ev
  virtual void  v17(); // _ZN7S7661C63v17Ev
  S7661C6(); // tgen
};
//SIG(-1 S7661C6) C1{ vd v1 v2 v3 v4 Fi}


 S7661C6 ::~S7661C6(){ note_dtor("S7661C6", this);}
void  S7661C6 ::v14(){vfunc_called(this, "_ZN7S7661C63v14Ev");}
void  S7661C6 ::v15(){vfunc_called(this, "_ZN7S7661C63v15Ev");}
void  S7661C6 ::v16(){vfunc_called(this, "_ZN7S7661C63v16Ev");}
void  S7661C6 ::v17(){vfunc_called(this, "_ZN7S7661C63v17Ev");}
S7661C6 ::S7661C6(){ note_ctor("S7661C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7661C6C1Ev();
extern void _ZN7S7661C6D1Ev();
Name_Map name_map_S7661C6[] = {
  NSPAIR(_ZN7S7661C6C1Ev),
  NSPAIR(_ZN7S7661C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7661C6[];
extern void _ZN7S7661C6D1Ev();
extern void _ZN7S7661C6D0Ev();
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY vtc_S7661C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C6[0]),
  (VTBL_ENTRY)&_ZN7S7661C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern VTBL_ENTRY _ZTI7S7661C6[];
extern  VTBL_ENTRY _ZTV7S7661C6[];
Class_Descriptor cd_S7661C6 = {  "S7661C6", // class name
  0,0,//no base classes
  &(vtc_S7661C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7661C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7661C6),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  S7661C5  : virtual S7661C6 {
  __tsi64 s7661c5f0;
  int s7661c5f1;
  virtual void  v18(); // _ZN7S7661C53v18Ev
  virtual void  v19(); // _ZN7S7661C53v19Ev
  virtual void  v20(); // _ZN7S7661C53v20Ev
  virtual void  v21(); // _ZN7S7661C53v21Ev
  virtual void  v22(); // _ZN7S7661C53v22Ev
  virtual void  v23(); // _ZN7S7661C53v23Ev
  virtual void  v24(); // _ZN7S7661C53v24Ev
  ~S7661C5(); // tgen
  S7661C5(); // tgen
};
//SIG(-1 S7661C5) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S7661C5 ::v18(){vfunc_called(this, "_ZN7S7661C53v18Ev");}
void  S7661C5 ::v19(){vfunc_called(this, "_ZN7S7661C53v19Ev");}
void  S7661C5 ::v20(){vfunc_called(this, "_ZN7S7661C53v20Ev");}
void  S7661C5 ::v21(){vfunc_called(this, "_ZN7S7661C53v21Ev");}
void  S7661C5 ::v22(){vfunc_called(this, "_ZN7S7661C53v22Ev");}
void  S7661C5 ::v23(){vfunc_called(this, "_ZN7S7661C53v23Ev");}
void  S7661C5 ::v24(){vfunc_called(this, "_ZN7S7661C53v24Ev");}
S7661C5 ::~S7661C5(){ note_dtor("S7661C5", this);} // tgen
S7661C5 ::S7661C5(){ note_ctor("S7661C5", this);} // tgen

static void Test_S7661C5()
{
  extern Class_Descriptor cd_S7661C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7661C5, buf);
    S7661C5 *dp, &lv = *(dp=new (buf) S7661C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7661C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7661C5)");
    check_base_class_offset(lv, (S7661C6*), ABISELECT(24,16), "S7661C5");
    check_field_offset(lv, s7661c5f0, ABISELECT(8,4), "S7661C5.s7661c5f0");
    check_field_offset(lv, s7661c5f1, ABISELECT(16,12), "S7661C5.s7661c5f1");
    test_class_info(&lv, &cd_S7661C5);
    dp->~S7661C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7661C5(Test_S7661C5, "S7661C5", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7661C5C1Ev();
extern void _ZN7S7661C5D1Ev();
Name_Map name_map_S7661C5[] = {
  NSPAIR(_ZN7S7661C5C1Ev),
  NSPAIR(_ZN7S7661C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7661C6;
extern VTBL_ENTRY _ZTI7S7661C6[];
extern  VTBL_ENTRY _ZTV7S7661C6[];
static Base_Class bases_S7661C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7661C6,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI7S7661C5[];
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void _ZN7S7661C5D1Ev();
extern void _ZN7S7661C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY vtc_S7661C5[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7661C5[];
static  VTT_ENTRY vtt_S7661C5[] = {
  {&(_ZTV7S7661C5[3]),  3,25},
  {&(_ZTV7S7661C5[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S7661C5[];
extern  VTBL_ENTRY _ZTV7S7661C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C5[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7661C5 = {  "S7661C5", // class name
  bases_S7661C5, 1,
  &(vtc_S7661C5[0]), // expected_vtbl_contents
  &(vtt_S7661C5[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7661C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7661C5),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7661C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7661C7  : S7661C3 {
  virtual  ~S7661C7(); // _ZN7S7661C7D1Ev
  virtual void  v25(); // _ZN7S7661C73v25Ev
  S7661C7(); // tgen
};
//SIG(-1 S7661C7) C1{ BC2{ v2 v3 v4 v5} vd v1}


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

static void Test_S7661C7()
{
  extern Class_Descriptor cd_S7661C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7661C7, buf);
    S7661C7 *dp, &lv = *(dp=new (buf) S7661C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7661C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7661C7)");
    check_base_class_offset(lv, (S7661C3*), 0, "S7661C7");
    test_class_info(&lv, &cd_S7661C7);
    dp->~S7661C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7661C7(Test_S7661C7, "S7661C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7661C7C1Ev();
extern void _ZN7S7661C7D1Ev();
Name_Map name_map_S7661C7[] = {
  NSPAIR(_ZN7S7661C7C1Ev),
  NSPAIR(_ZN7S7661C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7661C3;
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
static Base_Class bases_S7661C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7661C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7661C7[];
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C7D1Ev();
extern void _ZN7S7661C7D0Ev();
extern void _ZN7S7661C73v25Ev();
static  VTBL_ENTRY vtc_S7661C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C7[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C73v25Ev,
};
extern VTBL_ENTRY _ZTI7S7661C7[];
extern  VTBL_ENTRY _ZTV7S7661C7[];
Class_Descriptor cd_S7661C7 = {  "S7661C7", // class name
  bases_S7661C7, 1,
  &(vtc_S7661C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7661C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7661C7),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7661C8  : virtual S7661C5 {
  ::S7688C10 s7661c8f0;
  virtual  ~S7661C8(); // _ZN7S7661C8D2Ev
  virtual void  v26(); // _ZN7S7661C83v26Ev
  virtual void  v27(); // _ZN7S7661C83v27Ev
  virtual void  v28(); // _ZN7S7661C83v28Ev
  virtual void  v29(); // _ZN7S7661C83v29Ev
  virtual void  v30(); // _ZN7S7661C83v30Ev
  virtual void  v31(); // _ZN7S7661C83v31Ev
  virtual void  v32(); // _ZN7S7661C83v32Ev
  virtual void  v33(); // _ZN7S7661C83v33Ev
  virtual void  v34(); // _ZN7S7661C83v34Ev
  S7661C8(); // tgen
};
//SIG(-1 S7661C8) C1{ VBC2{ VBC3{ vd v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 FL Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ vd m Fp[9]}}


 S7661C8 ::~S7661C8(){ note_dtor("S7661C8", this);}
void  S7661C8 ::v26(){vfunc_called(this, "_ZN7S7661C83v26Ev");}
void  S7661C8 ::v27(){vfunc_called(this, "_ZN7S7661C83v27Ev");}
void  S7661C8 ::v28(){vfunc_called(this, "_ZN7S7661C83v28Ev");}
void  S7661C8 ::v29(){vfunc_called(this, "_ZN7S7661C83v29Ev");}
void  S7661C8 ::v30(){vfunc_called(this, "_ZN7S7661C83v30Ev");}
void  S7661C8 ::v31(){vfunc_called(this, "_ZN7S7661C83v31Ev");}
void  S7661C8 ::v32(){vfunc_called(this, "_ZN7S7661C83v32Ev");}
void  S7661C8 ::v33(){vfunc_called(this, "_ZN7S7661C83v33Ev");}
void  S7661C8 ::v34(){vfunc_called(this, "_ZN7S7661C83v34Ev");}
S7661C8 ::S7661C8(){ note_ctor("S7661C8", this);} // tgen

static void Test_S7661C8()
{
  extern Class_Descriptor cd_S7661C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7661C8, buf);
    S7661C8 *dp, &lv = *(dp=new (buf) S7661C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7661C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7661C8)");
    check_base_class_offset(lv, (S7661C6*)(S7661C5*), ABISELECT(112,60), "S7661C8");
    check_base_class_offset(lv, (S7661C5*), ABISELECT(88,44), "S7661C8");
    check_field_offset(lv, s7661c8f0, ABISELECT(8,4), "S7661C8.s7661c8f0");
    test_class_info(&lv, &cd_S7661C8);
    dp->~S7661C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7661C8(Test_S7661C8, "S7661C8", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S7661C8C1Ev();
extern void _ZN7S7661C8D2Ev();
Name_Map name_map_S7661C8[] = {
  NSPAIR(_ZN7S7661C8C1Ev),
  NSPAIR(_ZN7S7661C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7661C6;
extern VTBL_ENTRY _ZTI7S7661C6[];
extern  VTBL_ENTRY _ZTV7S7661C6[];
extern Class_Descriptor cd_S7661C5;
extern VTBL_ENTRY _ZTI7S7661C5[];
extern  VTBL_ENTRY _ZTV7S7661C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C5[];
static Base_Class bases_S7661C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7661C6,    ABISELECT(112,60), //bcp->offset
    35, //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
    1, //immediately_derived
  0, 1},
  {&cd_S7661C5,    ABISELECT(88,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //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 _ZTI7S7661C8[];
extern void _ZN7S7661C8D1Ev();
extern void _ZN7S7661C8D0Ev();
extern void _ZN7S7661C83v26Ev();
extern void _ZN7S7661C83v27Ev();
extern void _ZN7S7661C83v28Ev();
extern void _ZN7S7661C83v29Ev();
extern void _ZN7S7661C83v30Ev();
extern void _ZN7S7661C83v31Ev();
extern void _ZN7S7661C83v32Ev();
extern void _ZN7S7661C83v33Ev();
extern void _ZN7S7661C83v34Ev();
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S7661C8D1Ev,_ZThn44_N7S7661C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S7661C8D0Ev,_ZThn44_N7S7661C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7661C8D1Ev,_ZThn60_N7S7661C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev)();
extern void ABISELECT(_ZThn112_N7S7661C8D0Ev,_ZThn60_N7S7661C8D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY vtc_S7661C8[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&_ZN7S7661C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v34Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7661C8[];
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void _ZN7S7661C5D1Ev();
extern void _ZN7S7661C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C5__7S7661C8[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C6__7S7661C5__7S7661C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
static  VTT_ENTRY vtt_S7661C8[] = {
  {&(_ZTV7S7661C8[4]),  4,48},
  {&(_ZTV7S7661C8[26]),  26,48},
  {&(_ZTV7S7661C8[42]),  42,48},
  {&(_tg__ZTV7S7661C5__7S7661C8[3]),  3,12},
  {&(_tg__ZTV7S7661C6__7S7661C5__7S7661C8[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7661C8[];
extern  VTBL_ENTRY _ZTV7S7661C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C8[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7661C8D0Ev,_ZThn60_N7S7661C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7661C8D1Ev,_ZThn60_N7S7661C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7661C8D0Ev,_ZThn44_N7S7661C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7661C8D1Ev,_ZThn44_N7S7661C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7661C8 = {  "S7661C8", // class name
  bases_S7661C8, 2,
  &(vtc_S7661C8[0]), // expected_vtbl_contents
  &(vtt_S7661C8[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S7661C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7661C8),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7661C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7661C4  : virtual S7661C3 , virtual S7661C2 , virtual S7661C5 , S7661C7 , S7661C8 {
  int s7661c4f0;
  virtual  ~S7661C4(); // _ZN7S7661C4D2Ev
  virtual void  v35(); // _ZN7S7661C43v35Ev
  virtual void  v36(); // _ZN7S7661C43v36Ev
  virtual void  v37(); // _ZN7S7661C43v37Ev
  virtual void  v38(); // _ZN7S7661C43v38Ev
  virtual void  v39(); // _ZN7S7661C43v39Ev
  virtual void  v40(); // _ZN7S7661C43v40Ev
  virtual void  v41(); // _ZN7S7661C43v41Ev
  S7661C4(); // tgen
};
//SIG(-1 S7661C4) C1{ VBC2{ v8 v9 v10 v11} VBC3{ VBC2 v12 v13 v14} VBC4{ VBC5{ vd v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 v24 v25 FL Fi} BC6{ BC2 vd v26} BC7{ VBC4 vd v27 v28 v29 v30 v31 v32 v33 v34 v35 FC8{ vd m Fp[9]}} vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S7661C4 ::~S7661C4(){ note_dtor("S7661C4", this);}
void  S7661C4 ::v35(){vfunc_called(this, "_ZN7S7661C43v35Ev");}
void  S7661C4 ::v36(){vfunc_called(this, "_ZN7S7661C43v36Ev");}
void  S7661C4 ::v37(){vfunc_called(this, "_ZN7S7661C43v37Ev");}
void  S7661C4 ::v38(){vfunc_called(this, "_ZN7S7661C43v38Ev");}
void  S7661C4 ::v39(){vfunc_called(this, "_ZN7S7661C43v39Ev");}
void  S7661C4 ::v40(){vfunc_called(this, "_ZN7S7661C43v40Ev");}
void  S7661C4 ::v41(){vfunc_called(this, "_ZN7S7661C43v41Ev");}
S7661C4 ::S7661C4(){ note_ctor("S7661C4", this);} // tgen

static void Test_S7661C4()
{
  extern Class_Descriptor cd_S7661C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S7661C4, buf);
    S7661C4 *dp, &lv = *(dp=new (buf) S7661C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S7661C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7661C4)");
    /*is_ambiguous_... S7661C4::S7661C3 */ AMB_check_base_class_offset(lv, (S7661C3*), ABISELECT(104,52), "S7661C4");
    check_base_class_offset(lv, (S7661C3*)(S7661C2*), ABISELECT(104,52), "S7661C4");
    check_base_class_offset(lv, (S7661C2*), ABISELECT(104,52), "S7661C4");
    check_base_class_offset(lv, (S7661C6*)(S7661C5*), ABISELECT(136,72), "S7661C4");
    check_base_class_offset(lv, (S7661C5*), ABISELECT(112,56), "S7661C4");
    check_base_class_offset(lv, (S7661C5*)(S7661C8*), ABISELECT(112,56), "S7661C4");
    check_base_class_offset(lv, (S7661C3*)(S7661C7*), 0, "S7661C4");
    check_base_class_offset(lv, (S7661C7*), 0, "S7661C4");
    check_base_class_offset(lv, (S7661C8*), ABISELECT(8,4), "S7661C4");
    check_field_offset(lv, s7661c4f0, ABISELECT(96,48), "S7661C4.s7661c4f0");
    test_class_info(&lv, &cd_S7661C4);
    dp->~S7661C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7661C4(Test_S7661C4, "S7661C4", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN7S7661C4C1Ev();
extern void _ZN7S7661C4D2Ev();
Name_Map name_map_S7661C4[] = {
  NSPAIR(_ZN7S7661C4C1Ev),
  NSPAIR(_ZN7S7661C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7661C3;
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
extern Class_Descriptor cd_S7661C2;
extern VTBL_ENTRY _ZTI7S7661C2[];
extern  VTBL_ENTRY _ZTV7S7661C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C2[];
extern Class_Descriptor cd_S7661C6;
extern VTBL_ENTRY _ZTI7S7661C6[];
extern  VTBL_ENTRY _ZTV7S7661C6[];
extern Class_Descriptor cd_S7661C5;
extern VTBL_ENTRY _ZTI7S7661C5[];
extern  VTBL_ENTRY _ZTV7S7661C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C5[];
extern Class_Descriptor cd_S7661C3;
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
extern Class_Descriptor cd_S7661C7;
extern VTBL_ENTRY _ZTI7S7661C7[];
extern  VTBL_ENTRY _ZTV7S7661C7[];
extern Class_Descriptor cd_S7661C8;
extern VTBL_ENTRY _ZTI7S7661C8[];
extern  VTBL_ENTRY _ZTV7S7661C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C8[];
static Base_Class bases_S7661C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7661C3,    ABISELECT(104,52), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7661C2,    ABISELECT(104,52), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7661C6,    ABISELECT(136,72), //bcp->offset
    72, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7661C5,    ABISELECT(112,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7661C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7661C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7661C8,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //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 _ZTI7S7661C4[];
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C4D1Ev();
extern void _ZN7S7661C4D0Ev();
extern void _ZN7S7661C73v25Ev();
extern void _ZN7S7661C43v35Ev();
extern void _ZN7S7661C43v36Ev();
extern void _ZN7S7661C43v37Ev();
extern void _ZN7S7661C43v38Ev();
extern void _ZN7S7661C43v39Ev();
extern void _ZN7S7661C43v40Ev();
extern void _ZN7S7661C43v41Ev();
extern void ABISELECT(_ZThn8_N7S7661C4D1Ev,_ZThn4_N7S7661C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7661C4D0Ev,_ZThn4_N7S7661C4D0Ev)();
extern void _ZN7S7661C83v26Ev();
extern void _ZN7S7661C83v27Ev();
extern void _ZN7S7661C83v28Ev();
extern void _ZN7S7661C83v29Ev();
extern void _ZN7S7661C83v30Ev();
extern void _ZN7S7661C83v31Ev();
extern void _ZN7S7661C83v32Ev();
extern void _ZN7S7661C83v33Ev();
extern void _ZN7S7661C83v34Ev();
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7661C4D1Ev,_ZTv0_n44_N7S7661C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S7661C4D1Ev,_ZThn56_N7S7661C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7661C4D0Ev,_ZTv0_n44_N7S7661C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S7661C4D0Ev,_ZThn56_N7S7661C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C4D1Ev,_ZTv0_n12_N7S7661C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7661C4D1Ev,_ZThn72_N7S7661C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C4D0Ev,_ZTv0_n12_N7S7661C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7661C4D0Ev,_ZThn72_N7S7661C4D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY vtc_S7661C4[] = {
  ABISELECT(136,72),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C73v25Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v41Ev,
  ABISELECT(128,68),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7661C4D1Ev,_ZThn4_N7S7661C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7661C4D0Ev,_ZThn4_N7S7661C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v34Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C4D1Ev,_ZTv0_n44_N7S7661C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C4D0Ev,_ZTv0_n44_N7S7661C4D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C4D1Ev,_ZTv0_n12_N7S7661C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C4D0Ev,_ZTv0_n12_N7S7661C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7661C4[];
extern void _ZN7S7661C8D1Ev();
extern void _ZN7S7661C8D0Ev();
extern void _ZN7S7661C83v26Ev();
extern void _ZN7S7661C83v27Ev();
extern void _ZN7S7661C83v28Ev();
extern void _ZN7S7661C83v29Ev();
extern void _ZN7S7661C83v30Ev();
extern void _ZN7S7661C83v31Ev();
extern void _ZN7S7661C83v32Ev();
extern void _ZN7S7661C83v33Ev();
extern void _ZN7S7661C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C8__7S7661C4[] = {
  ABISELECT(128,68),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&_ZN7S7661C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v34Ev,
};
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev)();
extern void ABISELECT(_ZThn104_N7S7661C8D1Ev,_ZThn52_N7S7661C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev)();
extern void ABISELECT(_ZThn104_N7S7661C8D0Ev,_ZThn52_N7S7661C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7661C5__7S7661C8__7S7661C4[] = {
  ABISELECT(-104,-52),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S7661C8D1Ev,_ZThn68_N7S7661C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S7661C8D0Ev,_ZThn68_N7S7661C8D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C6__7S7661C8__7S7661C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C2__7S7661C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C2[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
};
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void _ZN7S7661C5D1Ev();
extern void _ZN7S7661C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C5__7S7661C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C6__7S7661C5__7S7661C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
static  VTT_ENTRY vtt_S7661C4[] = {
  {&(_ZTV7S7661C4[6]),  6,85},
  {&(_tg__ZTV7S7661C8__7S7661C4[4]),  4,15},
  {&(_tg__ZTV7S7661C5__7S7661C8__7S7661C4[11]),  11,20},
  {&(_tg__ZTV7S7661C6__7S7661C8__7S7661C4[7]),  7,13},
  {&(_ZTV7S7661C4[45]),  45,85},
  {&(_ZTV7S7661C4[45]),  45,85},
  {&(_ZTV7S7661C4[63]),  63,85},
  {&(_ZTV7S7661C4[79]),  79,85},
  {&(_ZTV7S7661C4[24]),  24,85},
  {&(_tg__ZTV7S7661C2__7S7661C4[7]),  7,14},
  {&(_tg__ZTV7S7661C2__7S7661C4[7]),  7,14},
  {&(_tg__ZTV7S7661C5__7S7661C4[3]),  3,12},
  {&(_tg__ZTV7S7661C6__7S7661C5__7S7661C4[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7661C4[];
extern  VTBL_ENTRY _ZTV7S7661C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C4[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7661C8D0Ev,_ZThn68_N7S7661C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7661C8D1Ev,_ZThn68_N7S7661C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7661C8D0Ev,_ZThn52_N7S7661C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7661C8D1Ev,_ZThn52_N7S7661C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C4D0Ev,_ZTv0_n12_N7S7661C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7661C4D0Ev,_ZThn72_N7S7661C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C4D1Ev,_ZTv0_n12_N7S7661C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7661C4D1Ev,_ZThn72_N7S7661C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C4D0Ev,_ZTv0_n44_N7S7661C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7661C4D0Ev,_ZThn56_N7S7661C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C4D1Ev,_ZTv0_n44_N7S7661C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7661C4D1Ev,_ZThn56_N7S7661C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7661C4 = {  "S7661C4", // class name
  bases_S7661C4, 7,
  &(vtc_S7661C4[0]), // expected_vtbl_contents
  &(vtt_S7661C4[0]), // expected_vtt_contents
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI7S7661C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7661C4),85, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7661C4),13, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7661C1  : S7661C2 , S7661C4 {
  ::S7661C6 s7661c1f0;
  int s7661c1f1[2];
  long s7661c1f2;
  virtual void  v1(); // _ZN7S7661C12v1Ev
  virtual void  v2(); // _ZN7S7661C12v2Ev
  virtual void  v3(); // _ZN7S7661C12v3Ev
  virtual void  v4(); // _ZN7S7661C12v4Ev
  virtual void  v5(); // _ZN7S7661C12v5Ev
  virtual void  v6(); // _ZN7S7661C12v6Ev
  ~S7661C1(); // tgen
  S7661C1(); // tgen
};
//SIG(1 S7661C1) C1{ BC2{ VBC3{ v7 v8 v9 v10} v11 v12 v13} BC4{ VBC3 VBC2 VBC5{ VBC6{ vd v14 v15 v16 v17 Fi} v18 v19 v20 v21 v22 v23 v24 FL Fi} BC7{ BC3 vd v25} BC8{ VBC5 vd v26 v27 v28 v29 v30 v31 v32 v33 v34 FC9{ vd m Fp[9]}} vd v35 v36 v37 v38 v39 v40 v41 Fi} v1 v2 v3 v4 v5 v6 FC6 Fi[2] Fl}


void  S7661C1 ::v1(){vfunc_called(this, "_ZN7S7661C12v1Ev");}
void  S7661C1 ::v2(){vfunc_called(this, "_ZN7S7661C12v2Ev");}
void  S7661C1 ::v3(){vfunc_called(this, "_ZN7S7661C12v3Ev");}
void  S7661C1 ::v4(){vfunc_called(this, "_ZN7S7661C12v4Ev");}
void  S7661C1 ::v5(){vfunc_called(this, "_ZN7S7661C12v5Ev");}
void  S7661C1 ::v6(){vfunc_called(this, "_ZN7S7661C12v6Ev");}
S7661C1 ::~S7661C1(){ note_dtor("S7661C1", this);} // tgen
S7661C1 ::S7661C1(){ note_ctor("S7661C1", this);} // tgen

static void Test_S7661C1()
{
  extern Class_Descriptor cd_S7661C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,27)];
    init_test(&cd_S7661C1, buf);
    S7661C1 *dp, &lv = *(dp=new (buf) S7661C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S7661C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7661C1)");
    /*is_ambiguous_... S7661C1::S7661C2 */ AMB_check_base_class_offset(lv, (S7661C3*)(S7661C2*), 0, "S7661C1");
    /*is_ambiguous_... S7661C4::S7661C3 */ AMB_check_base_class_offset(lv, (S7661C3*)(S7661C4*), 0, "S7661C1");
    /*is_ambiguous_... S7661C1::S7661C2 */ AMB_check_base_class_offset(lv, (S7661C3*)(S7661C2*), 0, "S7661C1");
    /*is_ambiguous_... S7661C1::S7661C2 */ AMB_check_base_class_offset(lv, (S7661C2*), 0, "S7661C1");
    check_base_class_offset(lv, (S7661C2*)(S7661C4*), ABISELECT(144,76), "S7661C1");
    check_base_class_offset(lv, (S7661C6*)(S7661C5*), ABISELECT(176,96), "S7661C1");
    check_base_class_offset(lv, (S7661C5*)(S7661C4*), ABISELECT(152,80), "S7661C1");
    check_base_class_offset(lv, (S7661C5*)(S7661C8*)(S7661C4*), ABISELECT(152,80), "S7661C1");
    check_base_class_offset(lv, (S7661C3*)(S7661C7*)(S7661C4*), ABISELECT(8,4), "S7661C1");
    check_base_class_offset(lv, (S7661C7*)(S7661C4*), ABISELECT(8,4), "S7661C1");
    check_base_class_offset(lv, (S7661C8*)(S7661C4*), ABISELECT(16,8), "S7661C1");
    check_base_class_offset(lv, (S7661C4*), ABISELECT(8,4), "S7661C1");
    check_field_offset(lv, s7661c1f0, ABISELECT(112,56), "S7661C1.s7661c1f0");
    check_field_offset(lv, s7661c1f1, ABISELECT(128,64), "S7661C1.s7661c1f1");
    check_field_offset(lv, s7661c1f2, ABISELECT(136,72), "S7661C1.s7661c1f2");
    test_class_info(&lv, &cd_S7661C1);
    dp->~S7661C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7661C1(Test_S7661C1, "S7661C1", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN7S7661C1C1Ev();
extern void _ZN7S7661C1D1Ev();
Name_Map name_map_S7661C1[] = {
  NSPAIR(_ZN7S7661C1C1Ev),
  NSPAIR(_ZN7S7661C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7661C3;
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
extern Class_Descriptor cd_S7661C2;
extern VTBL_ENTRY _ZTI7S7661C2[];
extern  VTBL_ENTRY _ZTV7S7661C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C2[];
extern Class_Descriptor cd_S7661C2;
extern VTBL_ENTRY _ZTI7S7661C2[];
extern  VTBL_ENTRY _ZTV7S7661C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C2[];
extern Class_Descriptor cd_S7661C6;
extern VTBL_ENTRY _ZTI7S7661C6[];
extern  VTBL_ENTRY _ZTV7S7661C6[];
extern Class_Descriptor cd_S7661C5;
extern VTBL_ENTRY _ZTI7S7661C5[];
extern  VTBL_ENTRY _ZTV7S7661C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C5[];
extern Class_Descriptor cd_S7661C3;
extern VTBL_ENTRY _ZTI7S7661C3[];
extern  VTBL_ENTRY _ZTV7S7661C3[];
extern Class_Descriptor cd_S7661C7;
extern VTBL_ENTRY _ZTI7S7661C7[];
extern  VTBL_ENTRY _ZTV7S7661C7[];
extern Class_Descriptor cd_S7661C8;
extern VTBL_ENTRY _ZTI7S7661C8[];
extern  VTBL_ENTRY _ZTV7S7661C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C8[];
extern Class_Descriptor cd_S7661C4;
extern VTBL_ENTRY _ZTI7S7661C4[];
extern  VTBL_ENTRY _ZTV7S7661C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C4[];
static Base_Class bases_S7661C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7661C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7661C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7661C2,    ABISELECT(144,76), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7661C6,    ABISELECT(176,96), //bcp->offset
    97, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7661C5,    ABISELECT(152,80), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7661C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7661C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7661C8,    ABISELECT(16,8), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7661C4,    ABISELECT(8,4), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7661C1[];
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
extern void _ZN7S7661C12v1Ev();
extern void _ZN7S7661C12v2Ev();
extern void _ZN7S7661C12v3Ev();
extern void _ZN7S7661C12v4Ev();
extern void _ZN7S7661C12v5Ev();
extern void _ZN7S7661C12v6Ev();
extern void _ZN7S7661C1D1Ev();
extern void _ZN7S7661C1D0Ev();
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void ABISELECT(_ZThn8_N7S7661C1D1Ev,_ZThn4_N7S7661C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7661C1D0Ev,_ZThn4_N7S7661C1D0Ev)();
extern void _ZN7S7661C73v25Ev();
extern void _ZN7S7661C43v35Ev();
extern void _ZN7S7661C43v36Ev();
extern void _ZN7S7661C43v37Ev();
extern void _ZN7S7661C43v38Ev();
extern void _ZN7S7661C43v39Ev();
extern void _ZN7S7661C43v40Ev();
extern void _ZN7S7661C43v41Ev();
extern void ABISELECT(_ZThn16_N7S7661C1D1Ev,_ZThn8_N7S7661C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7661C1D0Ev,_ZThn8_N7S7661C1D0Ev)();
extern void _ZN7S7661C83v26Ev();
extern void _ZN7S7661C83v27Ev();
extern void _ZN7S7661C83v28Ev();
extern void _ZN7S7661C83v29Ev();
extern void _ZN7S7661C83v30Ev();
extern void _ZN7S7661C83v31Ev();
extern void _ZN7S7661C83v32Ev();
extern void _ZN7S7661C83v33Ev();
extern void _ZN7S7661C83v34Ev();
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7661C1D1Ev,_ZTv0_n44_N7S7661C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S7661C1D1Ev,_ZThn80_N7S7661C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7661C1D0Ev,_ZTv0_n44_N7S7661C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S7661C1D0Ev,_ZThn80_N7S7661C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C1D1Ev,_ZTv0_n12_N7S7661C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7661C1D1Ev,_ZThn96_N7S7661C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C1D0Ev,_ZTv0_n12_N7S7661C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7661C1D0Ev,_ZThn96_N7S7661C1D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY vtc_S7661C1[] = {
  ABISELECT(176,96),
  ABISELECT(152,80),
  ABISELECT(144,76),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C1[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7661C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7661C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7661C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7661C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7661C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7661C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7661C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C1D0Ev,
  ABISELECT(168,92),
  ABISELECT(144,76),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7661C1[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7661C1D1Ev,_ZThn4_N7S7661C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7661C1D0Ev,_ZThn4_N7S7661C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C73v25Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v41Ev,
  ABISELECT(160,88),
  ABISELECT(136,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7661C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7661C1D1Ev,_ZThn8_N7S7661C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7661C1D0Ev,_ZThn8_N7S7661C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v34Ev,
  0,
  0,
  0,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S7661C1[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
  ABISELECT(-152,-80),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S7661C1[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C1D1Ev,_ZTv0_n44_N7S7661C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C1D0Ev,_ZTv0_n44_N7S7661C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S7661C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C1D1Ev,_ZTv0_n12_N7S7661C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C1D0Ev,_ZTv0_n12_N7S7661C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7661C1[];
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C2__A__7S7661C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C2[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
};
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C4D1Ev();
extern void _ZN7S7661C4D0Ev();
extern void _ZN7S7661C73v25Ev();
extern void _ZN7S7661C43v35Ev();
extern void _ZN7S7661C43v36Ev();
extern void _ZN7S7661C43v37Ev();
extern void _ZN7S7661C43v38Ev();
extern void _ZN7S7661C43v39Ev();
extern void _ZN7S7661C43v40Ev();
extern void _ZN7S7661C43v41Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C4__7S7661C1[] = {
  ABISELECT(168,92),
  ABISELECT(144,76),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C73v25Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v37Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v38Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v39Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v40Ev,
  (VTBL_ENTRY)&_ZN7S7661C43v41Ev,
};
extern void _ZN7S7661C8D1Ev();
extern void _ZN7S7661C8D0Ev();
extern void _ZN7S7661C83v26Ev();
extern void _ZN7S7661C83v27Ev();
extern void _ZN7S7661C83v28Ev();
extern void _ZN7S7661C83v29Ev();
extern void _ZN7S7661C83v30Ev();
extern void _ZN7S7661C83v31Ev();
extern void _ZN7S7661C83v32Ev();
extern void _ZN7S7661C83v33Ev();
extern void _ZN7S7661C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C87S7661C4__7S7661C1[] = {
  ABISELECT(160,88),
  ABISELECT(136,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&_ZN7S7661C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v34Ev,
};
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev)();
extern void ABISELECT(_ZThn136_N7S7661C8D1Ev,_ZThn72_N7S7661C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev)();
extern void ABISELECT(_ZThn136_N7S7661C8D0Ev,_ZThn72_N7S7661C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7661C5__7S7661C87S7661C4__7S7661C1[] = {
  ABISELECT(-136,-72),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S7661C8D1Ev,_ZThn88_N7S7661C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S7661C8D0Ev,_ZThn88_N7S7661C8D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C6__7S7661C87S7661C4__7S7661C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7661C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C3__7S7661C4__7S7661C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
};
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C2__7S7661C4__7S7661C1[] = {
  0,
  0,
  0,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
};
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void ABISELECT(_ZTv0_n88_N7S7661C4D1Ev,_ZTv0_n44_N7S7661C4D1Ev)();
extern void ABISELECT(_ZThn144_N7S7661C4D1Ev,_ZThn76_N7S7661C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7661C4D0Ev,_ZTv0_n44_N7S7661C4D0Ev)();
extern void ABISELECT(_ZThn144_N7S7661C4D0Ev,_ZThn76_N7S7661C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7661C5__7S7661C4__7S7661C1[] = {
  ABISELECT(-144,-76),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C4D1Ev,_ZTv0_n44_N7S7661C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7661C4D0Ev,_ZTv0_n44_N7S7661C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7661C4D1Ev,_ZTv0_n12_N7S7661C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7661C4D1Ev,_ZThn92_N7S7661C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C4D0Ev,_ZTv0_n12_N7S7661C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7661C4D0Ev,_ZThn92_N7S7661C4D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C6__7S7661C4__7S7661C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C4D1Ev,_ZTv0_n12_N7S7661C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C4D0Ev,_ZTv0_n12_N7S7661C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
extern void ABISELECT(_ZThn8_N7S7661C4D1Ev,_ZThn4_N7S7661C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7661C4D0Ev,_ZThn4_N7S7661C4D0Ev)();
extern void _ZN7S7661C83v26Ev();
extern void _ZN7S7661C83v27Ev();
extern void _ZN7S7661C83v28Ev();
extern void _ZN7S7661C83v29Ev();
extern void _ZN7S7661C83v30Ev();
extern void _ZN7S7661C83v31Ev();
extern void _ZN7S7661C83v32Ev();
extern void _ZN7S7661C83v33Ev();
extern void _ZN7S7661C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C8__7S7661C4__7S7661C1[] = {
  ABISELECT(160,88),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7661C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7661C4D1Ev,_ZThn4_N7S7661C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7661C4D0Ev,_ZThn4_N7S7661C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7661C83v34Ev,
};
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
extern void _ZN7S7661C23v11Ev();
extern void _ZN7S7661C23v12Ev();
extern void _ZN7S7661C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C2__A1__7S7661C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C2[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7661C23v13Ev,
};
extern void _ZN7S7661C32v7Ev();
extern void _ZN7S7661C32v8Ev();
extern void _ZN7S7661C32v9Ev();
extern void _ZN7S7661C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C3__7S7661C2__A1__7S7661C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7661C2[0]),
  (VTBL_ENTRY)&_ZN7S7661C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7661C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7661C33v10Ev,
};
extern void _ZN7S7661C53v18Ev();
extern void _ZN7S7661C53v19Ev();
extern void _ZN7S7661C53v20Ev();
extern void _ZN7S7661C53v21Ev();
extern void _ZN7S7661C53v22Ev();
extern void _ZN7S7661C53v23Ev();
extern void _ZN7S7661C53v24Ev();
extern void _ZN7S7661C5D1Ev();
extern void _ZN7S7661C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C5__7S7661C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&_ZN7S7661C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7661C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7661C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev)() __attribute__((weak));
extern void _ZN7S7661C63v14Ev();
extern void _ZN7S7661C63v15Ev();
extern void _ZN7S7661C63v16Ev();
extern void _ZN7S7661C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7661C6__7S7661C5__7S7661C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7661C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7661C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7661C63v17Ev,
};
static  VTT_ENTRY vtt_S7661C1[] = {
  {&(_ZTV7S7661C1[10]),  10,110},
  {&(_tg__ZTV7S7661C2__A__7S7661C1[7]),  7,14},
  {&(_tg__ZTV7S7661C2__A__7S7661C1[7]),  7,14},
  {&(_tg__ZTV7S7661C4__7S7661C1[6]),  6,20},
  {&(_tg__ZTV7S7661C87S7661C4__7S7661C1[4]),  4,15},
  {&(_tg__ZTV7S7661C5__7S7661C87S7661C4__7S7661C1[11]),  11,20},
  {&(_tg__ZTV7S7661C6__7S7661C87S7661C4__7S7661C1[7]),  7,13},
  {&(_tg__ZTV7S7661C3__7S7661C4__7S7661C1[6]),  6,10},
  {&(_tg__ZTV7S7661C2__7S7661C4__7S7661C1[10]),  10,17},
  {&(_tg__ZTV7S7661C5__7S7661C4__7S7661C1[11]),  11,20},
  {&(_tg__ZTV7S7661C6__7S7661C4__7S7661C1[7]),  7,13},
  {&(_tg__ZTV7S7661C8__7S7661C4__7S7661C1[4]),  4,15},
  {&(_ZTV7S7661C1[10]),  10,110},
  {&(_ZTV7S7661C1[31]),  31,110},
  {&(_ZTV7S7661C1[70]),  70,110},
  {&(_ZTV7S7661C1[88]),  88,110},
  {&(_ZTV7S7661C1[104]),  104,110},
  {&(_ZTV7S7661C1[49]),  49,110},
  {&(_tg__ZTV7S7661C2__A1__7S7661C1[7]),  7,14},
  {&(_tg__ZTV7S7661C3__7S7661C2__A1__7S7661C1[6]),  6,10},
  {&(_tg__ZTV7S7661C5__7S7661C1[3]),  3,12},
  {&(_tg__ZTV7S7661C6__7S7661C5__7S7661C1[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S7661C1[];
extern  VTBL_ENTRY _ZTV7S7661C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7661C1[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D0Ev,_ZTv0_n12_N7S7661C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D0Ev,_ZThn16_N7S7661C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C5D1Ev,_ZTv0_n12_N7S7661C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7661C5D1Ev,_ZThn16_N7S7661C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C4D0Ev,_ZTv0_n12_N7S7661C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7661C4D0Ev,_ZThn92_N7S7661C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C4D1Ev,_ZTv0_n12_N7S7661C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7661C4D1Ev,_ZThn92_N7S7661C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C4D0Ev,_ZTv0_n44_N7S7661C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7661C4D0Ev,_ZThn76_N7S7661C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C4D1Ev,_ZTv0_n44_N7S7661C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7661C4D1Ev,_ZThn76_N7S7661C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C8D0Ev,_ZTv0_n12_N7S7661C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7661C8D0Ev,_ZThn88_N7S7661C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C8D1Ev,_ZTv0_n12_N7S7661C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7661C8D1Ev,_ZThn88_N7S7661C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C8D0Ev,_ZTv0_n44_N7S7661C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7661C8D0Ev,_ZThn72_N7S7661C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C8D1Ev,_ZTv0_n44_N7S7661C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7661C8D1Ev,_ZThn72_N7S7661C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C1D0Ev,_ZTv0_n12_N7S7661C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7661C1D0Ev,_ZThn96_N7S7661C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7661C1D1Ev,_ZTv0_n12_N7S7661C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7661C1D1Ev,_ZThn96_N7S7661C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C1D0Ev,_ZTv0_n44_N7S7661C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7661C1D0Ev,_ZThn80_N7S7661C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7661C1D1Ev,_ZTv0_n44_N7S7661C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7661C1D1Ev,_ZThn80_N7S7661C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7661C1 = {  "S7661C1", // class name
  bases_S7661C1, 9,
  &(vtc_S7661C1[0]), // expected_vtbl_contents
  &(vtt_S7661C1[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI7S7661C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7661C1),110, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7661C1),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4524C3  {
  ::S4520C4_nt s4524c3f0;
  unsigned int s4524c3f1:1;
  virtual  ~S4524C3(); // _ZN7S4524C3D1Ev
  virtual void  v2(); // _ZN7S4524C32v2Ev
  virtual void  v3(); // _ZN7S4524C32v3Ev
  virtual void  v4(); // _ZN7S4524C32v4Ev
  virtual void  v5(); // _ZN7S4524C32v5Ev
  virtual void  v6(); // _ZN7S4524C32v6Ev
  virtual void  v7(); // _ZN7S4524C32v7Ev
  virtual void  v8(); // _ZN7S4524C32v8Ev
  S4524C3(); // tgen
};
//SIG(-1 S4524C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S4524C3 ::~S4524C3(){ note_dtor("S4524C3", this);}
void  S4524C3 ::v2(){vfunc_called(this, "_ZN7S4524C32v2Ev");}
void  S4524C3 ::v3(){vfunc_called(this, "_ZN7S4524C32v3Ev");}
void  S4524C3 ::v4(){vfunc_called(this, "_ZN7S4524C32v4Ev");}
void  S4524C3 ::v5(){vfunc_called(this, "_ZN7S4524C32v5Ev");}
void  S4524C3 ::v6(){vfunc_called(this, "_ZN7S4524C32v6Ev");}
void  S4524C3 ::v7(){vfunc_called(this, "_ZN7S4524C32v7Ev");}
void  S4524C3 ::v8(){vfunc_called(this, "_ZN7S4524C32v8Ev");}
S4524C3 ::S4524C3(){ note_ctor("S4524C3", this);} // tgen

static void Test_S4524C3()
{
  extern Class_Descriptor cd_S4524C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S4524C3, buf);
    S4524C3 *dp, &lv = *(dp=new (buf) S4524C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S4524C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4524C3)");
    check_field_offset(lv, s4524c3f0, ABISELECT(8,4), "S4524C3.s4524c3f0");
    set_bf_and_test(lv, s4524c3f1, ABISELECT(32,16), 0, 1, 1, "S4524C3");
    test_class_info(&lv, &cd_S4524C3);
    dp->~S4524C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4524C3(Test_S4524C3, "S4524C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S4524C3C1Ev();
extern void _ZN7S4524C3D1Ev();
Name_Map name_map_S4524C3[] = {
  NSPAIR(_ZN7S4524C3C1Ev),
  NSPAIR(_ZN7S4524C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4524C3[];
extern void _ZN7S4524C3D1Ev();
extern void _ZN7S4524C3D0Ev();
extern void _ZN7S4524C32v2Ev();
extern void _ZN7S4524C32v3Ev();
extern void _ZN7S4524C32v4Ev();
extern void _ZN7S4524C32v5Ev();
extern void _ZN7S4524C32v6Ev();
extern void _ZN7S4524C32v7Ev();
extern void _ZN7S4524C32v8Ev();
static  VTBL_ENTRY vtc_S4524C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4524C3[0]),
  (VTBL_ENTRY)&_ZN7S4524C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4524C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S4524C3[];
extern  VTBL_ENTRY _ZTV7S4524C3[];
Class_Descriptor cd_S4524C3 = {  "S4524C3", // class name
  0,0,//no base classes
  &(vtc_S4524C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S4524C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4524C3),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  S4524C5  {
  virtual void  v9(); // _ZN7S4524C52v9Ev
  ~S4524C5(); // tgen
  S4524C5(); // tgen
};
//SIG(-1 S4524C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S4524C5C1Ev();
extern void _ZN7S4524C5D1Ev();
Name_Map name_map_S4524C5[] = {
  NSPAIR(_ZN7S4524C5C1Ev),
  NSPAIR(_ZN7S4524C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4524C5[];
extern void _ZN7S4524C52v9Ev();
static  VTBL_ENTRY vtc_S4524C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4524C5[0]),
  (VTBL_ENTRY)&_ZN7S4524C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4524C5[];
extern  VTBL_ENTRY _ZTV7S4524C5[];
Class_Descriptor cd_S4524C5 = {  "S4524C5", // class name
  0,0,//no base classes
  &(vtc_S4524C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4524C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4524C5),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  S4524C2  : S4524C3 , S4524C5 {
  ::S4520C6_nt s4524c2f0;
  ::S4520C9_nt s4524c2f1;
  ::S4224C43_nt s4524c2f2;
  ::S2650C18 s4524c2f3;
  void *s4524c2f4;
  ::S15502C13_nt s4524c2f5;
  int s4524c2f6;
  void *s4524c2f7;
  int s4524c2f8[2];
  virtual  ~S4524C2(); // _ZN7S4524C2D1Ev
  virtual void  v10(); // _ZN7S4524C23v10Ev
  virtual void  v11(); // _ZN7S4524C23v11Ev
  virtual void  v12(); // _ZN7S4524C23v12Ev
  virtual void  v13(); // _ZN7S4524C23v13Ev
  virtual void  v14(); // _ZN7S4524C23v14Ev
  S4524C2(); // tgen
};
//SIG(-1 S4524C2) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 FC3{ m Fp[3]} Fi:1} BC4{ v13} vd v1 v2 v3 v4 v5 FC5{ m FC6{ BC7{ m Fp Fi[2]}} Fi} FC8{ Fi:1 Fi:3} FC9{ m Fp} FC10{ m Fp} Fp FC11{ m Fi[4]} Fi Fp Fi[2]}


 S4524C2 ::~S4524C2(){ note_dtor("S4524C2", this);}
void  S4524C2 ::v10(){vfunc_called(this, "_ZN7S4524C23v10Ev");}
void  S4524C2 ::v11(){vfunc_called(this, "_ZN7S4524C23v11Ev");}
void  S4524C2 ::v12(){vfunc_called(this, "_ZN7S4524C23v12Ev");}
void  S4524C2 ::v13(){vfunc_called(this, "_ZN7S4524C23v13Ev");}
void  S4524C2 ::v14(){vfunc_called(this, "_ZN7S4524C23v14Ev");}
S4524C2 ::S4524C2(){ note_ctor("S4524C2", this);} // tgen

static void Test_S4524C2()
{
  extern Class_Descriptor cd_S4524C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S4524C2, buf);
    S4524C2 *dp, &lv = *(dp=new (buf) S4524C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S4524C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4524C2)");
    check_base_class_offset(lv, (S4524C3*), 0, "S4524C2");
    check_base_class_offset(lv, (S4524C5*), ABISELECT(40,20), "S4524C2");
    check_field_offset(lv, s4524c2f0, ABISELECT(48,24), "S4524C2.s4524c2f0");
    check_field_offset(lv, s4524c2f1, ABISELECT(72,40), "S4524C2.s4524c2f1");
    check_field_offset(lv, s4524c2f2, ABISELECT(80,44), "S4524C2.s4524c2f2");
    check_field_offset(lv, s4524c2f3, ABISELECT(88,48), "S4524C2.s4524c2f3");
    check_field_offset(lv, s4524c2f4, ABISELECT(96,52), "S4524C2.s4524c2f4");
    check_field_offset(lv, s4524c2f5, ABISELECT(104,56), "S4524C2.s4524c2f5");
    check_field_offset(lv, s4524c2f6, ABISELECT(120,72), "S4524C2.s4524c2f6");
    check_field_offset(lv, s4524c2f7, ABISELECT(128,76), "S4524C2.s4524c2f7");
    check_field_offset(lv, s4524c2f8, ABISELECT(136,80), "S4524C2.s4524c2f8");
    test_class_info(&lv, &cd_S4524C2);
    dp->~S4524C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4524C2(Test_S4524C2, "S4524C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S4524C2C1Ev();
extern void _ZN7S4524C2D1Ev();
Name_Map name_map_S4524C2[] = {
  NSPAIR(_ZN7S4524C2C1Ev),
  NSPAIR(_ZN7S4524C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4524C3;
extern VTBL_ENTRY _ZTI7S4524C3[];
extern  VTBL_ENTRY _ZTV7S4524C3[];
extern Class_Descriptor cd_S4524C5;
extern VTBL_ENTRY _ZTI7S4524C5[];
extern  VTBL_ENTRY _ZTV7S4524C5[];
static Base_Class bases_S4524C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4524C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4524C5,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4524C2[];
extern void _ZN7S4524C2D1Ev();
extern void _ZN7S4524C2D0Ev();
extern void _ZN7S4524C32v2Ev();
extern void _ZN7S4524C32v3Ev();
extern void _ZN7S4524C32v4Ev();
extern void _ZN7S4524C32v5Ev();
extern void _ZN7S4524C32v6Ev();
extern void _ZN7S4524C32v7Ev();
extern void _ZN7S4524C32v8Ev();
extern void _ZN7S4524C23v10Ev();
extern void _ZN7S4524C23v11Ev();
extern void _ZN7S4524C23v12Ev();
extern void _ZN7S4524C23v13Ev();
extern void _ZN7S4524C23v14Ev();
extern void _ZN7S4524C52v9Ev();
static  VTBL_ENTRY vtc_S4524C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4524C2[0]),
  (VTBL_ENTRY)&_ZN7S4524C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4524C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4524C2[0]),
  (VTBL_ENTRY)&_ZN7S4524C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4524C2[];
extern  VTBL_ENTRY _ZTV7S4524C2[];
Class_Descriptor cd_S4524C2 = {  "S4524C2", // class name
  bases_S4524C2, 2,
  &(vtc_S4524C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S4524C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4524C2),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  S4524C1  : S4524C2 , S4224C37 {
  ::S4520C15_nt s4524c1f0;
  ::S4520C16 s4524c1f1;
  ::S4224C27 s4524c1f2;
  virtual void  v1(); // _ZN7S4524C12v1Ev
  ~S4524C1(); // tgen
  S4524C1(); // tgen
};
//SIG(1 S4524C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[3]} Fi:1} BC5{ v9} vd v10 v11 v12 v13 v14 FC6{ m FC7{ BC8{ m Fp Fi[2]}} Fi} FC9{ Fi:1 Fi:3} FC10{ m Fp} FC11{ m Fp} Fp FC12{ m Fi[4]} Fi Fp Fi[2]} BC13{ m} v1 FC14{ m Fp[2]} FC15{ m FC16{ m Fs[3]} FC16 FC16 FC16 FC16 FC16} FC17{ m}}


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

static void Test_S4524C1()
{
  extern Class_Descriptor cd_S4524C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,35)];
    init_test(&cd_S4524C1, buf);
    S4524C1 *dp, &lv = *(dp=new (buf) S4524C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,136), "sizeof(S4524C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4524C1)");
    check_base_class_offset(lv, (S4524C3*)(S4524C2*), 0, "S4524C1");
    check_base_class_offset(lv, (S4524C5*)(S4524C2*), ABISELECT(40,20), "S4524C1");
    check_base_class_offset(lv, (S4524C2*), 0, "S4524C1");
    check_base_class_offset(lv, (S4224C37*), 0, "S4524C1");
    check_field_offset(lv, s4524c1f0, ABISELECT(144,88), "S4524C1.s4524c1f0");
    check_field_offset(lv, s4524c1f1, ABISELECT(160,96), "S4524C1.s4524c1f1");
    check_field_offset(lv, s4524c1f2, ABISELECT(196,132), "S4524C1.s4524c1f2");
    test_class_info(&lv, &cd_S4524C1);
    dp->~S4524C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4524C1(Test_S4524C1, "S4524C1", ABISELECT(200,136));

#else // __cplusplus

extern void _ZN7S4524C1C1Ev();
extern void _ZN7S4524C1D1Ev();
Name_Map name_map_S4524C1[] = {
  NSPAIR(_ZN7S4524C1C1Ev),
  NSPAIR(_ZN7S4524C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4524C3;
extern VTBL_ENTRY _ZTI7S4524C3[];
extern  VTBL_ENTRY _ZTV7S4524C3[];
extern Class_Descriptor cd_S4524C5;
extern VTBL_ENTRY _ZTI7S4524C5[];
extern  VTBL_ENTRY _ZTV7S4524C5[];
extern Class_Descriptor cd_S4524C2;
extern VTBL_ENTRY _ZTI7S4524C2[];
extern  VTBL_ENTRY _ZTV7S4524C2[];
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
static Base_Class bases_S4524C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4524C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4524C5,    ABISELECT(40,20), //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_S4524C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4524C1[];
extern void _ZN7S4524C1D1Ev();
extern void _ZN7S4524C1D0Ev();
extern void _ZN7S4524C32v2Ev();
extern void _ZN7S4524C32v3Ev();
extern void _ZN7S4524C32v4Ev();
extern void _ZN7S4524C32v5Ev();
extern void _ZN7S4524C32v6Ev();
extern void _ZN7S4524C32v7Ev();
extern void _ZN7S4524C32v8Ev();
extern void _ZN7S4524C23v10Ev();
extern void _ZN7S4524C23v11Ev();
extern void _ZN7S4524C23v12Ev();
extern void _ZN7S4524C23v13Ev();
extern void _ZN7S4524C23v14Ev();
extern void _ZN7S4524C12v1Ev();
extern void _ZN7S4524C52v9Ev();
static  VTBL_ENTRY vtc_S4524C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4524C1[0]),
  (VTBL_ENTRY)&_ZN7S4524C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4524C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4524C32v8Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4524C23v14Ev,
  (VTBL_ENTRY)&_ZN7S4524C12v1Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4524C1[0]),
  (VTBL_ENTRY)&_ZN7S4524C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4524C1[];
extern  VTBL_ENTRY _ZTV7S4524C1[];
Class_Descriptor cd_S4524C1 = {  "S4524C1", // class name
  bases_S4524C1, 4,
  &(vtc_S4524C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,136), // object size
  NSPAIRA(_ZTI7S4524C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4524C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8585C2  {
  ::S4224C18_nt s8585c2f0;
  ::S4224C18_nt s8585c2f1;
  ::S4224C18_nt s8585c2f2;
  ::S4224C18_nt s8585c2f3;
  ::S4224C18_nt s8585c2f4;
  void *s8585c2f5[5];
  char s8585c2f6[2];
  void *s8585c2f7[2];
  int s8585c2f8;
  virtual  ~S8585C2(); // _ZN7S8585C2D1Ev
  virtual void  v13(); // _ZN7S8585C23v13Ev
  virtual void  v14(); // _ZN7S8585C23v14Ev
  virtual void  v15(); // _ZN7S8585C23v15Ev
  virtual void  v16(); // _ZN7S8585C23v16Ev
  virtual void  v17(); // _ZN7S8585C23v17Ev
  virtual void  v18(); // _ZN7S8585C23v18Ev
  virtual void  v19(); // _ZN7S8585C23v19Ev
  virtual void  v20(); // _ZN7S8585C23v20Ev
  virtual void  v21(); // _ZN7S8585C23v21Ev
  virtual void  v22(); // _ZN7S8585C23v22Ev
  virtual void  v23(); // _ZN7S8585C23v23Ev
  virtual void  v24(); // _ZN7S8585C23v24Ev
  virtual void  v25(); // _ZN7S8585C23v25Ev
  virtual void  v26(); // _ZN7S8585C23v26Ev
  virtual void  v27(); // _ZN7S8585C23v27Ev
  virtual void  v28(); // _ZN7S8585C23v28Ev
  virtual void  v29(); // _ZN7S8585C23v29Ev
  virtual void  v30(); // _ZN7S8585C23v30Ev
  virtual void  v31(); // _ZN7S8585C23v31Ev
  virtual void  v32(); // _ZN7S8585C23v32Ev
  virtual void  v33(); // _ZN7S8585C23v33Ev
  virtual void  v34(); // _ZN7S8585C23v34Ev
  virtual void  v35(); // _ZN7S8585C23v35Ev
  virtual void  v36(); // _ZN7S8585C23v36Ev
  virtual void  v37(); // _ZN7S8585C23v37Ev
  virtual void  v38(); // _ZN7S8585C23v38Ev
  virtual void  v39(); // _ZN7S8585C23v39Ev
  S8585C2(); // tgen
};
//SIG(-1 S8585C2) 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 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC2 FC2 FC2 Fp[5] Fc[2] Fp[2] Fi}


 S8585C2 ::~S8585C2(){ note_dtor("S8585C2", this);}
void  S8585C2 ::v13(){vfunc_called(this, "_ZN7S8585C23v13Ev");}
void  S8585C2 ::v14(){vfunc_called(this, "_ZN7S8585C23v14Ev");}
void  S8585C2 ::v15(){vfunc_called(this, "_ZN7S8585C23v15Ev");}
void  S8585C2 ::v16(){vfunc_called(this, "_ZN7S8585C23v16Ev");}
void  S8585C2 ::v17(){vfunc_called(this, "_ZN7S8585C23v17Ev");}
void  S8585C2 ::v18(){vfunc_called(this, "_ZN7S8585C23v18Ev");}
void  S8585C2 ::v19(){vfunc_called(this, "_ZN7S8585C23v19Ev");}
void  S8585C2 ::v20(){vfunc_called(this, "_ZN7S8585C23v20Ev");}
void  S8585C2 ::v21(){vfunc_called(this, "_ZN7S8585C23v21Ev");}
void  S8585C2 ::v22(){vfunc_called(this, "_ZN7S8585C23v22Ev");}
void  S8585C2 ::v23(){vfunc_called(this, "_ZN7S8585C23v23Ev");}
void  S8585C2 ::v24(){vfunc_called(this, "_ZN7S8585C23v24Ev");}
void  S8585C2 ::v25(){vfunc_called(this, "_ZN7S8585C23v25Ev");}
void  S8585C2 ::v26(){vfunc_called(this, "_ZN7S8585C23v26Ev");}
void  S8585C2 ::v27(){vfunc_called(this, "_ZN7S8585C23v27Ev");}
void  S8585C2 ::v28(){vfunc_called(this, "_ZN7S8585C23v28Ev");}
void  S8585C2 ::v29(){vfunc_called(this, "_ZN7S8585C23v29Ev");}
void  S8585C2 ::v30(){vfunc_called(this, "_ZN7S8585C23v30Ev");}
void  S8585C2 ::v31(){vfunc_called(this, "_ZN7S8585C23v31Ev");}
void  S8585C2 ::v32(){vfunc_called(this, "_ZN7S8585C23v32Ev");}
void  S8585C2 ::v33(){vfunc_called(this, "_ZN7S8585C23v33Ev");}
void  S8585C2 ::v34(){vfunc_called(this, "_ZN7S8585C23v34Ev");}
void  S8585C2 ::v35(){vfunc_called(this, "_ZN7S8585C23v35Ev");}
void  S8585C2 ::v36(){vfunc_called(this, "_ZN7S8585C23v36Ev");}
void  S8585C2 ::v37(){vfunc_called(this, "_ZN7S8585C23v37Ev");}
void  S8585C2 ::v38(){vfunc_called(this, "_ZN7S8585C23v38Ev");}
void  S8585C2 ::v39(){vfunc_called(this, "_ZN7S8585C23v39Ev");}
S8585C2 ::S8585C2(){ note_ctor("S8585C2", this);} // tgen

static void Test_S8585C2()
{
  extern Class_Descriptor cd_S8585C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S8585C2, buf);
    S8585C2 *dp, &lv = *(dp=new (buf) S8585C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S8585C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8585C2)");
    check_field_offset(lv, s8585c2f0, ABISELECT(8,4), "S8585C2.s8585c2f0");
    check_field_offset(lv, s8585c2f1, ABISELECT(32,20), "S8585C2.s8585c2f1");
    check_field_offset(lv, s8585c2f2, ABISELECT(56,36), "S8585C2.s8585c2f2");
    check_field_offset(lv, s8585c2f3, ABISELECT(80,52), "S8585C2.s8585c2f3");
    check_field_offset(lv, s8585c2f4, ABISELECT(104,68), "S8585C2.s8585c2f4");
    check_field_offset(lv, s8585c2f5, ABISELECT(128,84), "S8585C2.s8585c2f5");
    check_field_offset(lv, s8585c2f6, ABISELECT(168,104), "S8585C2.s8585c2f6");
    check_field_offset(lv, s8585c2f7, ABISELECT(176,108), "S8585C2.s8585c2f7");
    check_field_offset(lv, s8585c2f8, ABISELECT(192,116), "S8585C2.s8585c2f8");
    test_class_info(&lv, &cd_S8585C2);
    dp->~S8585C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8585C2(Test_S8585C2, "S8585C2", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN7S8585C2C1Ev();
extern void _ZN7S8585C2D1Ev();
Name_Map name_map_S8585C2[] = {
  NSPAIR(_ZN7S8585C2C1Ev),
  NSPAIR(_ZN7S8585C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8585C2[];
extern void _ZN7S8585C2D1Ev();
extern void _ZN7S8585C2D0Ev();
extern void _ZN7S8585C23v13Ev();
extern void _ZN7S8585C23v14Ev();
extern void _ZN7S8585C23v15Ev();
extern void _ZN7S8585C23v16Ev();
extern void _ZN7S8585C23v17Ev();
extern void _ZN7S8585C23v18Ev();
extern void _ZN7S8585C23v19Ev();
extern void _ZN7S8585C23v20Ev();
extern void _ZN7S8585C23v21Ev();
extern void _ZN7S8585C23v22Ev();
extern void _ZN7S8585C23v23Ev();
extern void _ZN7S8585C23v24Ev();
extern void _ZN7S8585C23v25Ev();
extern void _ZN7S8585C23v26Ev();
extern void _ZN7S8585C23v27Ev();
extern void _ZN7S8585C23v28Ev();
extern void _ZN7S8585C23v29Ev();
extern void _ZN7S8585C23v30Ev();
extern void _ZN7S8585C23v31Ev();
extern void _ZN7S8585C23v32Ev();
extern void _ZN7S8585C23v33Ev();
extern void _ZN7S8585C23v34Ev();
extern void _ZN7S8585C23v35Ev();
extern void _ZN7S8585C23v36Ev();
extern void _ZN7S8585C23v37Ev();
extern void _ZN7S8585C23v38Ev();
extern void _ZN7S8585C23v39Ev();
static  VTBL_ENTRY vtc_S8585C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8585C2[0]),
  (VTBL_ENTRY)&_ZN7S8585C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8585C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v35Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v36Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v37Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v38Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v39Ev,
};
extern VTBL_ENTRY _ZTI7S8585C2[];
extern  VTBL_ENTRY _ZTV7S8585C2[];
Class_Descriptor cd_S8585C2 = {  "S8585C2", // class name
  0,0,//no base classes
  &(vtc_S8585C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI7S8585C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8585C2),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8585C1  : S8585C2 {
  ::S4224C36 s8585c1f0;
  virtual  ~S8585C1(); // _ZN7S8585C1D1Ev
  virtual void  v1(); // _ZN7S8585C12v1Ev
  virtual void  v2(); // _ZN7S8585C12v2Ev
  virtual void  v3(); // _ZN7S8585C12v3Ev
  virtual void  v4(); // _ZN7S8585C12v4Ev
  virtual void  v5(); // _ZN7S8585C12v5Ev
  virtual void  v6(); // _ZN7S8585C12v6Ev
  virtual void  v7(); // _ZN7S8585C12v7Ev
  virtual void  v8(); // _ZN7S8585C12v8Ev
  virtual void  v9(); // _ZN7S8585C12v9Ev
  virtual void  v10(); // _ZN7S8585C13v10Ev
  virtual void  v11(); // _ZN7S8585C13v11Ev
  virtual void  v12(); // _ZN7S8585C13v12Ev
  S8585C1(); // tgen
};
//SIG(1 S8585C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} FC3 FC3 FC3 FC3 Fp[5] Fc[2] Fp[2] Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC6{ m Fp Fi[2] FC7{ m}}}


 S8585C1 ::~S8585C1(){ note_dtor("S8585C1", this);}
void  S8585C1 ::v1(){vfunc_called(this, "_ZN7S8585C12v1Ev");}
void  S8585C1 ::v2(){vfunc_called(this, "_ZN7S8585C12v2Ev");}
void  S8585C1 ::v3(){vfunc_called(this, "_ZN7S8585C12v3Ev");}
void  S8585C1 ::v4(){vfunc_called(this, "_ZN7S8585C12v4Ev");}
void  S8585C1 ::v5(){vfunc_called(this, "_ZN7S8585C12v5Ev");}
void  S8585C1 ::v6(){vfunc_called(this, "_ZN7S8585C12v6Ev");}
void  S8585C1 ::v7(){vfunc_called(this, "_ZN7S8585C12v7Ev");}
void  S8585C1 ::v8(){vfunc_called(this, "_ZN7S8585C12v8Ev");}
void  S8585C1 ::v9(){vfunc_called(this, "_ZN7S8585C12v9Ev");}
void  S8585C1 ::v10(){vfunc_called(this, "_ZN7S8585C13v10Ev");}
void  S8585C1 ::v11(){vfunc_called(this, "_ZN7S8585C13v11Ev");}
void  S8585C1 ::v12(){vfunc_called(this, "_ZN7S8585C13v12Ev");}
S8585C1 ::S8585C1(){ note_ctor("S8585C1", this);} // tgen

static void Test_S8585C1()
{
  extern Class_Descriptor cd_S8585C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,35)];
    init_test(&cd_S8585C1, buf);
    S8585C1 *dp, &lv = *(dp=new (buf) S8585C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,136), "sizeof(S8585C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8585C1)");
    check_base_class_offset(lv, (S8585C2*), 0, "S8585C1");
    check_field_offset(lv, s8585c1f0, ABISELECT(200,120), "S8585C1.s8585c1f0");
    test_class_info(&lv, &cd_S8585C1);
    dp->~S8585C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8585C1(Test_S8585C1, "S8585C1", ABISELECT(224,136));

#else // __cplusplus

extern void _ZN7S8585C1C1Ev();
extern void _ZN7S8585C1D1Ev();
Name_Map name_map_S8585C1[] = {
  NSPAIR(_ZN7S8585C1C1Ev),
  NSPAIR(_ZN7S8585C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8585C2;
extern VTBL_ENTRY _ZTI7S8585C2[];
extern  VTBL_ENTRY _ZTV7S8585C2[];
static Base_Class bases_S8585C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8585C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8585C1[];
extern void _ZN7S8585C1D1Ev();
extern void _ZN7S8585C1D0Ev();
extern void _ZN7S8585C23v13Ev();
extern void _ZN7S8585C23v14Ev();
extern void _ZN7S8585C23v15Ev();
extern void _ZN7S8585C23v16Ev();
extern void _ZN7S8585C23v17Ev();
extern void _ZN7S8585C23v18Ev();
extern void _ZN7S8585C23v19Ev();
extern void _ZN7S8585C23v20Ev();
extern void _ZN7S8585C23v21Ev();
extern void _ZN7S8585C23v22Ev();
extern void _ZN7S8585C23v23Ev();
extern void _ZN7S8585C23v24Ev();
extern void _ZN7S8585C23v25Ev();
extern void _ZN7S8585C23v26Ev();
extern void _ZN7S8585C23v27Ev();
extern void _ZN7S8585C23v28Ev();
extern void _ZN7S8585C23v29Ev();
extern void _ZN7S8585C23v30Ev();
extern void _ZN7S8585C23v31Ev();
extern void _ZN7S8585C23v32Ev();
extern void _ZN7S8585C23v33Ev();
extern void _ZN7S8585C23v34Ev();
extern void _ZN7S8585C23v35Ev();
extern void _ZN7S8585C23v36Ev();
extern void _ZN7S8585C23v37Ev();
extern void _ZN7S8585C23v38Ev();
extern void _ZN7S8585C23v39Ev();
extern void _ZN7S8585C12v1Ev();
extern void _ZN7S8585C12v2Ev();
extern void _ZN7S8585C12v3Ev();
extern void _ZN7S8585C12v4Ev();
extern void _ZN7S8585C12v5Ev();
extern void _ZN7S8585C12v6Ev();
extern void _ZN7S8585C12v7Ev();
extern void _ZN7S8585C12v8Ev();
extern void _ZN7S8585C12v9Ev();
extern void _ZN7S8585C13v10Ev();
extern void _ZN7S8585C13v11Ev();
extern void _ZN7S8585C13v12Ev();
static  VTBL_ENTRY vtc_S8585C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8585C1[0]),
  (VTBL_ENTRY)&_ZN7S8585C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8585C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v35Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v36Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v37Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v38Ev,
  (VTBL_ENTRY)&_ZN7S8585C23v39Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8585C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8585C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8585C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8585C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8585C1[];
extern  VTBL_ENTRY _ZTV7S8585C1[];
Class_Descriptor cd_S8585C1 = {  "S8585C1", // class name
  bases_S8585C1, 1,
  &(vtc_S8585C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,136), // object size
  NSPAIRA(_ZTI7S8585C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8585C1),43, //virtual function table var
  2, // 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  S20813C3  {
  long s20813c3f0[10];
  long double s20813c3f1;
  char s20813c3f2[2];
  long double s20813c3f3;
  void *s20813c3f4;
  __tsi64 s20813c3f5;
  char s20813c3f6;
  virtual void  v2(); // _ZN8S20813C32v2Ev
  virtual void  v3(); // _ZN8S20813C32v3Ev
  ~S20813C3(); // tgen
  S20813C3(); // tgen
};
//SIG(-1 S20813C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S20813C3 ::v2(){vfunc_called(this, "_ZN8S20813C32v2Ev");}
void  S20813C3 ::v3(){vfunc_called(this, "_ZN8S20813C32v3Ev");}
S20813C3 ::~S20813C3(){ note_dtor("S20813C3", this);} // tgen
S20813C3 ::S20813C3(){ note_ctor("S20813C3", this);} // tgen

static void Test_S20813C3()
{
  extern Class_Descriptor cd_S20813C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S20813C3, buf);
    S20813C3 *dp, &lv = *(dp=new (buf) S20813C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S20813C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C3)");
    check_field_offset(lv, s20813c3f0, ABISELECT(8,4), "S20813C3.s20813c3f0");
    check_field_offset(lv, s20813c3f1, ABISELECT(96,44), "S20813C3.s20813c3f1");
    check_field_offset(lv, s20813c3f2, ABISELECT(112,56), "S20813C3.s20813c3f2");
    check_field_offset(lv, s20813c3f3, ABISELECT(128,60), "S20813C3.s20813c3f3");
    check_field_offset(lv, s20813c3f4, ABISELECT(144,72), "S20813C3.s20813c3f4");
    check_field_offset(lv, s20813c3f5, ABISELECT(152,76), "S20813C3.s20813c3f5");
    check_field_offset(lv, s20813c3f6, ABISELECT(160,84), "S20813C3.s20813c3f6");
    test_class_info(&lv, &cd_S20813C3);
    dp->~S20813C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C3(Test_S20813C3, "S20813C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S20813C3C1Ev();
extern void _ZN8S20813C3D1Ev();
Name_Map name_map_S20813C3[] = {
  NSPAIR(_ZN8S20813C3C1Ev),
  NSPAIR(_ZN8S20813C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20813C3[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY vtc_S20813C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C3[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
Class_Descriptor cd_S20813C3 = {  "S20813C3", // class name
  0,0,//no base classes
  &(vtc_S20813C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S20813C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20813C3),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  S20813C2  : virtual S20813C3 {
  void *s20813c2f0;
  ::S20813C3 s20813c2f1;
  virtual  ~S20813C2(); // _ZN8S20813C2D2Ev
  S20813C2(); // tgen
};
//SIG(-1 S20813C2) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S20813C2()
{
  extern Class_Descriptor cd_S20813C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S20813C2, buf);
    S20813C2 *dp, &lv = *(dp=new (buf) S20813C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S20813C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C2)");
    check_base_class_offset(lv, (S20813C3*), ABISELECT(192,96), "S20813C2");
    check_field_offset(lv, s20813c2f0, ABISELECT(8,4), "S20813C2.s20813c2f0");
    check_field_offset(lv, s20813c2f1, ABISELECT(16,8), "S20813C2.s20813c2f1");
    test_class_info(&lv, &cd_S20813C2);
    dp->~S20813C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C2(Test_S20813C2, "S20813C2", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S20813C2C1Ev();
extern void _ZN8S20813C2D2Ev();
Name_Map name_map_S20813C2[] = {
  NSPAIR(_ZN8S20813C2C1Ev),
  NSPAIR(_ZN8S20813C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
static Base_Class bases_S20813C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20813C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20813C2[];
extern void _ZN8S20813C2D1Ev();
extern void _ZN8S20813C2D0Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY vtc_S20813C2[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C2D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20813C2[];
static  VTT_ENTRY vtt_S20813C2[] = {
  {&(_ZTV8S20813C2[3]),  3,11},
  {&(_ZTV8S20813C2[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S20813C2[];
extern  VTBL_ENTRY _ZTV8S20813C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C2[];
Class_Descriptor cd_S20813C2 = {  "S20813C2", // class name
  bases_S20813C2, 1,
  &(vtc_S20813C2[0]), // expected_vtbl_contents
  &(vtt_S20813C2[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S20813C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20813C2),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20813C2),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  S20813C6  : virtual S20813C3 {
  void *s20813c6f0;
  short s20813c6f1;
  ~S20813C6(); // tgen
  S20813C6(); // tgen
};
//SIG(-1 S20813C6) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S20813C6()
{
  extern Class_Descriptor cd_S20813C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S20813C6, buf);
    S20813C6 *dp, &lv = *(dp=new (buf) S20813C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S20813C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C6)");
    check_base_class_offset(lv, (S20813C3*), ABISELECT(32,12), "S20813C6");
    check_field_offset(lv, s20813c6f0, ABISELECT(8,4), "S20813C6.s20813c6f0");
    check_field_offset(lv, s20813c6f1, ABISELECT(16,8), "S20813C6.s20813c6f1");
    test_class_info(&lv, &cd_S20813C6);
    dp->~S20813C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C6(Test_S20813C6, "S20813C6", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S20813C6C1Ev();
extern void _ZN8S20813C6D1Ev();
Name_Map name_map_S20813C6[] = {
  NSPAIR(_ZN8S20813C6C1Ev),
  NSPAIR(_ZN8S20813C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
static Base_Class bases_S20813C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20813C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S20813C6[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY vtc_S20813C6[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20813C6[];
static  VTT_ENTRY vtt_S20813C6[] = {
  {&(_ZTV8S20813C6[3]),  3,9},
  {&(_ZTV8S20813C6[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
Class_Descriptor cd_S20813C6 = {  "S20813C6", // class name
  bases_S20813C6, 1,
  &(vtc_S20813C6[0]), // expected_vtbl_contents
  &(vtt_S20813C6[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S20813C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20813C6),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20813C6),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  S20813C7  : S20813C3 {
  ::S20813C3 s20813c7f0;
  ::S20813C2 s20813c7f1;
  ::S20813C3 s20813c7f2;
  virtual void  v4(); // _ZN8S20813C72v4Ev
  ~S20813C7(); // tgen
  S20813C7(); // tgen
};
//SIG(-1 S20813C7) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S20813C7()
{
  extern Class_Descriptor cd_S20813C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S20813C7, buf);
    S20813C7 *dp, &lv = *(dp=new (buf) S20813C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S20813C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C7)");
    check_base_class_offset(lv, (S20813C3*), 0, "S20813C7");
    check_field_offset(lv, s20813c7f0, ABISELECT(176,88), "S20813C7.s20813c7f0");
    check_field_offset(lv, s20813c7f1, ABISELECT(352,176), "S20813C7.s20813c7f1");
    check_field_offset(lv, s20813c7f2, ABISELECT(720,360), "S20813C7.s20813c7f2");
    test_class_info(&lv, &cd_S20813C7);
    dp->~S20813C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C7(Test_S20813C7, "S20813C7", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S20813C7C1Ev();
extern void _ZN8S20813C7D1Ev();
Name_Map name_map_S20813C7[] = {
  NSPAIR(_ZN8S20813C7C1Ev),
  NSPAIR(_ZN8S20813C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
static Base_Class bases_S20813C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20813C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20813C7[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY vtc_S20813C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C7[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
Class_Descriptor cd_S20813C7 = {  "S20813C7", // class name
  bases_S20813C7, 1,
  &(vtc_S20813C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S20813C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20813C7),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  S20813C5  : virtual S20813C6 , virtual S20813C2 , S20813C3 , virtual S20813C7 {
  ::S20813C7 s20813c5f0;
  void *s20813c5f1;
  long s20813c5f2[8];
  __tsi64 s20813c5f3[2];
  char s20813c5f4;
  ::S20813C7 s20813c5f5[7];
  virtual  ~S20813C5(); // _ZN8S20813C5D2Ev
  S20813C5(); // tgen
};
//SIG(-1 S20813C5) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S20813C5()
{
  extern Class_Descriptor cd_S20813C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S20813C5, buf);
    S20813C5 *dp, &lv = *(dp=new (buf) S20813C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S20813C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C5)");
    check_base_class_offset(lv, (S20813C3*)(S20813C6*), ABISELECT(7472,3740), "S20813C5");
    check_base_class_offset(lv, (S20813C3*)(S20813C2*), ABISELECT(7472,3740), "S20813C5");
    check_base_class_offset(lv, (S20813C6*), ABISELECT(7440,3728), "S20813C5");
    check_base_class_offset(lv, (S20813C2*), ABISELECT(7648,3828), "S20813C5");
    /*is_ambiguous_... S20813C5::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*), 0, "S20813C5");
    check_base_class_offset(lv, (S20813C3*)(S20813C7*), ABISELECT(7840,3924), "S20813C5");
    check_base_class_offset(lv, (S20813C7*), ABISELECT(7840,3924), "S20813C5");
    check_field_offset(lv, s20813c5f0, ABISELECT(176,88), "S20813C5.s20813c5f0");
    check_field_offset(lv, s20813c5f1, ABISELECT(1072,536), "S20813C5.s20813c5f1");
    check_field_offset(lv, s20813c5f2, ABISELECT(1080,540), "S20813C5.s20813c5f2");
    check_field_offset(lv, s20813c5f3, ABISELECT(1144,572), "S20813C5.s20813c5f3");
    check_field_offset(lv, s20813c5f4, ABISELECT(1160,588), "S20813C5.s20813c5f4");
    check_field_offset(lv, s20813c5f5, ABISELECT(1168,592), "S20813C5.s20813c5f5");
    test_class_info(&lv, &cd_S20813C5);
    dp->~S20813C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C5(Test_S20813C5, "S20813C5", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S20813C5C1Ev();
extern void _ZN8S20813C5D2Ev();
Name_Map name_map_S20813C5[] = {
  NSPAIR(_ZN8S20813C5C1Ev),
  NSPAIR(_ZN8S20813C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
extern Class_Descriptor cd_S20813C2;
extern VTBL_ENTRY _ZTI8S20813C2[];
extern  VTBL_ENTRY _ZTV8S20813C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C2[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
static Base_Class bases_S20813C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20813C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20813C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S20813C2,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20813C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20813C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20813C7,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20813C5[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C5D1Ev();
extern void _ZN8S20813C5D0Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev)();
extern void ABISELECT(_ZThn7648_N8S20813C5D1Ev,_ZThn3828_N8S20813C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev)();
extern void ABISELECT(_ZThn7648_N8S20813C5D0Ev,_ZThn3828_N8S20813C5D0Ev)() __attribute__((weak));
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY vtc_S20813C5[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C5D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
extern VTBL_ENTRY _ZTV8S20813C5[];
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C6__8S20813C5[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void _ZN8S20813C2D1Ev();
extern void _ZN8S20813C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C2__8S20813C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C2D0Ev,
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C2__8S20813C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
static  VTT_ENTRY vtt_S20813C5[] = {
  {&(_ZTV8S20813C5[6]),  6,33},
  {&(_ZTV8S20813C5[13]),  13,33},
  {&(_ZTV8S20813C5[17]),  17,33},
  {&(_ZTV8S20813C5[23]),  23,33},
  {&(_ZTV8S20813C5[30]),  30,33},
  {&(_tg__ZTV8S20813C6__8S20813C5[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C6__8S20813C5[4]),  4,6},
  {&(_tg__ZTV8S20813C2__8S20813C5[3]),  3,5},
  {&(_tg__ZTV8S20813C3__8S20813C2__8S20813C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20813C5[];
extern  VTBL_ENTRY _ZTV8S20813C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C5[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20813C5D0Ev,_ZThn3828_N8S20813C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20813C5D1Ev,_ZThn3828_N8S20813C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20813C5 = {  "S20813C5", // class name
  bases_S20813C5, 6,
  &(vtc_S20813C5[0]), // expected_vtbl_contents
  &(vtt_S20813C5[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S20813C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20813C5),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20813C5),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20813C4  : virtual S20813C3 , virtual S20813C2 , S20813C5 , S20813C6 , S20813C7 {
  void *s20813c4f0;
  char s20813c4f1;
  ~S20813C4(); // tgen
  S20813C4(); // tgen
};
//SIG(-1 S20813C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S20813C4()
{
  extern Class_Descriptor cd_S20813C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S20813C4, buf);
    S20813C4 *dp, &lv = *(dp=new (buf) S20813C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S20813C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C4)");
    /*is_ambiguous_... S20813C4::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*), ABISELECT(8384,4196), "S20813C4");
    check_base_class_offset(lv, (S20813C3*)(S20813C2*), ABISELECT(8384,4196), "S20813C4");
    /*is_ambiguous_... S20813C4::S20813C6 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C6*), ABISELECT(8384,4196), "S20813C4");
    /*is_ambiguous_... S20813C4::S20813C6 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C6*), ABISELECT(8384,4196), "S20813C4");
    check_base_class_offset(lv, (S20813C2*), ABISELECT(8560,4284), "S20813C4");
    check_base_class_offset(lv, (S20813C2*)(S20813C5*), ABISELECT(8560,4284), "S20813C4");
    check_base_class_offset(lv, (S20813C6*)(S20813C5*), ABISELECT(8752,4380), "S20813C4");
    /*is_ambiguous_... S20813C5::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C5*), 0, "S20813C4");
    /*is_ambiguous_... S20813C4::S20813C7 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C7*), ABISELECT(8784,4392), "S20813C4");
    check_base_class_offset(lv, (S20813C7*)(S20813C5*), ABISELECT(8784,4392), "S20813C4");
    check_base_class_offset(lv, (S20813C5*), 0, "S20813C4");
    /*is_ambiguous_... S20813C4::S20813C6 */ AMB_check_base_class_offset(lv, (S20813C6*), ABISELECT(7440,3728), "S20813C4");
    /*is_ambiguous_... S20813C4::S20813C7 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C7*), ABISELECT(7472,3740), "S20813C4");
    /*is_ambiguous_... S20813C4::S20813C7 */ AMB_check_base_class_offset(lv, (S20813C7*), ABISELECT(7472,3740), "S20813C4");
    check_field_offset(lv, s20813c4f0, ABISELECT(8368,4188), "S20813C4.s20813c4f0");
    check_field_offset(lv, s20813c4f1, ABISELECT(8376,4192), "S20813C4.s20813c4f1");
    test_class_info(&lv, &cd_S20813C4);
    dp->~S20813C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C4(Test_S20813C4, "S20813C4", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN8S20813C4C1Ev();
extern void _ZN8S20813C4D1Ev();
Name_Map name_map_S20813C4[] = {
  NSPAIR(_ZN8S20813C4C1Ev),
  NSPAIR(_ZN8S20813C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C2;
extern VTBL_ENTRY _ZTI8S20813C2[];
extern  VTBL_ENTRY _ZTV8S20813C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C2[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
extern Class_Descriptor cd_S20813C5;
extern VTBL_ENTRY _ZTI8S20813C5[];
extern  VTBL_ENTRY _ZTV8S20813C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C5[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
static Base_Class bases_S20813C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20813C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20813C2,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20813C6,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20813C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20813C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20813C7,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20813C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20813C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20813C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20813C7,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20813C4[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C4D1Ev();
extern void _ZN8S20813C4D0Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S20813C4D1Ev,_ZTv0_n16_N8S20813C4D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20813C4D1Ev,_ZThn4284_N8S20813C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20813C4D0Ev,_ZTv0_n16_N8S20813C4D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20813C4D0Ev,_ZThn4284_N8S20813C4D0Ev)() __attribute__((weak));
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY vtc_S20813C4[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C4D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C4D1Ev,_ZTv0_n16_N8S20813C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C4D0Ev,_ZTv0_n16_N8S20813C4D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
extern VTBL_ENTRY _ZTV8S20813C4[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C5D1Ev();
extern void _ZN8S20813C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C5__8S20813C4[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C5__8S20813C4[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C5__8S20813C4[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20813C5D1Ev,_ZThn4284_N8S20813C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20813C5D0Ev,_ZThn4284_N8S20813C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20813C2__8S20813C5__8S20813C4[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C7__8S20813C5__8S20813C4[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__A__8S20813C4[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C6__A__8S20813C4[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void _ZN8S20813C2D1Ev();
extern void _ZN8S20813C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C2__8S20813C4[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C2D0Ev,
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C2__8S20813C4[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C4[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C6__8S20813C4[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
static  VTT_ENTRY vtt_S20813C4[] = {
  {&(_ZTV8S20813C4[6]),  6,41},
  {&(_tg__ZTV8S20813C5__8S20813C4[6]),  6,10},
  {&(_tg__ZTV8S20813C6__8S20813C5__8S20813C4[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C5__8S20813C4[4]),  4,6},
  {&(_tg__ZTV8S20813C2__8S20813C5__8S20813C4[4]),  4,6},
  {&(_tg__ZTV8S20813C7__8S20813C5__8S20813C4[5]),  5,8},
  {&(_tg__ZTV8S20813C6__A__8S20813C4[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C6__A__8S20813C4[4]),  4,6},
  {&(_ZTV8S20813C4[22]),  22,41},
  {&(_ZTV8S20813C4[28]),  28,41},
  {&(_ZTV8S20813C4[33]),  33,41},
  {&(_ZTV8S20813C4[38]),  38,41},
  {&(_ZTV8S20813C4[13]),  13,41},
  {&(_tg__ZTV8S20813C2__8S20813C4[3]),  3,5},
  {&(_tg__ZTV8S20813C3__8S20813C2__8S20813C4[4]),  4,6},
  {&(_tg__ZTV8S20813C6__8S20813C4[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C6__8S20813C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20813C4[];
extern  VTBL_ENTRY _ZTV8S20813C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C4[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20813C5D0Ev,_ZThn4284_N8S20813C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20813C5D1Ev,_ZThn4284_N8S20813C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C4D0Ev,_ZTv0_n16_N8S20813C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20813C4D0Ev,_ZThn4284_N8S20813C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C4D1Ev,_ZTv0_n16_N8S20813C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20813C4D1Ev,_ZThn4284_N8S20813C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20813C4 = {  "S20813C4", // class name
  bases_S20813C4, 10,
  &(vtc_S20813C4[0]), // expected_vtbl_contents
  &(vtt_S20813C4[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI8S20813C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20813C4),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20813C4),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20813C8  : virtual S4224C43_nt , S20813C7 , S20813C3 , S20813C6 {
  short s20813c8f0;
  ::S20813C7 s20813c8f1;
  void *s20813c8f2[2];
  __tsi64 s20813c8f3;
  ::S20813C5 s20813c8f4[5];
  int s20813c8f5;
  virtual void  v5(); // _ZN8S20813C82v5Ev
  ~S20813C8(); // tgen
  S20813C8(); // tgen
};
//SIG(-1 S20813C8) C1{ VBC2{ m Fp} BC3{ BC4{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v4 FC4 FC5{ VBC4 vd Fp FC4} FC4} BC4 BC6{ VBC4 Fp Fs} v1 Fs FC3 Fp[2] FL FC7{ VBC6 VBC5 BC4 VBC3 vd FC3 Fp Fl[8] FL[2] Fc FC3[7]}[5] Fi}


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

static void Test_S20813C8()
{
  extern Class_Descriptor cd_S20813C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2869,5743)];
    init_test(&cd_S20813C8, buf);
    S20813C8 *dp, &lv = *(dp=new (buf) S20813C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(45888,22968), "sizeof(S20813C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C8)");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(45704,22876), "S20813C8");
    check_base_class_offset(lv, (S20813C3*)(S20813C7*), 0, "S20813C8");
    check_base_class_offset(lv, (S20813C7*), 0, "S20813C8");
    /*is_ambiguous_... S20813C8::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*), ABISELECT(896,448), "S20813C8");
    check_base_class_offset(lv, (S20813C3*)(S20813C6*), ABISELECT(45712,22880), "S20813C8");
    check_base_class_offset(lv, (S20813C6*), ABISELECT(1064,536), "S20813C8");
    check_field_offset(lv, s20813c8f0, ABISELECT(1082,546), "S20813C8.s20813c8f0");
    check_field_offset(lv, s20813c8f1, ABISELECT(1088,548), "S20813C8.s20813c8f1");
    check_field_offset(lv, s20813c8f2, ABISELECT(1984,996), "S20813C8.s20813c8f2");
    check_field_offset(lv, s20813c8f3, ABISELECT(2000,1004), "S20813C8.s20813c8f3");
    check_field_offset(lv, s20813c8f4, ABISELECT(2016,1012), "S20813C8.s20813c8f4");
    check_field_offset(lv, s20813c8f5, ABISELECT(45696,22872), "S20813C8.s20813c8f5");
    test_class_info(&lv, &cd_S20813C8);
    dp->~S20813C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C8(Test_S20813C8, "S20813C8", ABISELECT(45888,22968));

#else // __cplusplus

extern void _ZN8S20813C8C1Ev();
extern void _ZN8S20813C8D1Ev();
Name_Map name_map_S20813C8[] = {
  NSPAIR(_ZN8S20813C8C1Ev),
  NSPAIR(_ZN8S20813C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
static Base_Class bases_S20813C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C43_nt,    ABISELECT(45704,22876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20813C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20813C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20813C3,    ABISELECT(896,448), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20813C3,    ABISELECT(45712,22880), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20813C6,    ABISELECT(1064,536), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20813C8[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
extern void _ZN8S20813C82v5Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY vtc_S20813C8[] = {
  ABISELECT(45712,22880),
  ABISELECT(45704,22876),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20813C82v5Ev,
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  ABISELECT(44648,22344),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
  0,
  0,
  ABISELECT(-45712,-22880),
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20813C8[];
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C8[] = {
  ABISELECT(44648,22344),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C6__8S20813C8[] = {
  0,
  0,
  ABISELECT(-44648,-22344),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
static  VTT_ENTRY vtt_S20813C8[] = {
  {&(_ZTV8S20813C8[4]),  4,21},
  {&(_tg__ZTV8S20813C6__8S20813C8[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C6__8S20813C8[4]),  4,6},
  {&(_ZTV8S20813C8[15]),  15,21},
  {&(_ZTV8S20813C8[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S20813C8[];
extern  VTBL_ENTRY _ZTV8S20813C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C8[];
Class_Descriptor cd_S20813C8 = {  "S20813C8", // class name
  bases_S20813C8, 6,
  &(vtc_S20813C8[0]), // expected_vtbl_contents
  &(vtt_S20813C8[0]), // expected_vtt_contents
  ABISELECT(45888,22968), // object size
  NSPAIRA(_ZTI8S20813C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20813C8),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20813C8),5, //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  S20813C1  : virtual S20813C2 , virtual S20813C4 , S20813C8 {
  int s20813c1f0[2];
  int s20813c1f1:32;
  int s20813c1f2;
  ::S20813C7 s20813c1f3;
  virtual void  v1(); // _ZN8S20813C12v1Ev
  ~S20813C1(); // tgen
  S20813C1(); // tgen
};
//SIG(1 S20813C1) C1{ VBC2{ VBC3{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC3} VBC4{ VBC3 VBC2 BC5{ VBC6{ VBC3 Fp Fs} VBC2 BC3 VBC7{ BC3 v4 FC3 FC2 FC3} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} BC8{ VBC9{ m Fp} BC7 BC3 BC6 v5 Fs FC7 Fp[2] FL FC5[5] Fi} v1 Fi[2] Fi:32 Fi FC7}


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

static void Test_S20813C1()
{
  extern Class_Descriptor cd_S20813C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3521,7047)];
    init_test(&cd_S20813C1, buf);
    S20813C1 *dp, &lv = *(dp=new (buf) S20813C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56320,28184), "sizeof(S20813C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20813C1)");
    check_base_class_offset(lv, (S20813C3*)(S20813C2*), ABISELECT(46816,23436), "S20813C1");
    /*is_ambiguous_... S20813C4::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C4*), ABISELECT(46816,23436), "S20813C1");
    /*is_ambiguous_... S20813C1::S20813C6 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C6*), ABISELECT(46816,23436), "S20813C1");
    /*is_ambiguous_... S20813C4::S20813C6 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C6*)(S20813C4*), ABISELECT(46816,23436), "S20813C1");
    check_base_class_offset(lv, (S20813C3*)(S20813C6*)(S20813C8*), ABISELECT(46816,23436), "S20813C1");
    check_base_class_offset(lv, (S20813C2*), ABISELECT(46624,23340), "S20813C1");
    check_base_class_offset(lv, (S20813C2*)(S20813C4*), ABISELECT(46624,23340), "S20813C1");
    check_base_class_offset(lv, (S20813C2*)(S20813C5*)(S20813C4*), ABISELECT(46624,23340), "S20813C1");
    check_base_class_offset(lv, (S20813C6*)(S20813C5*)(S20813C4*), ABISELECT(55376,27720), "S20813C1");
    /*is_ambiguous_... S20813C5::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C5*)(S20813C4*), ABISELECT(46992,23524), "S20813C1");
    /*is_ambiguous_... S20813C1::S20813C7 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C7*), ABISELECT(55408,27732), "S20813C1");
    check_base_class_offset(lv, (S20813C7*)(S20813C5*)(S20813C4*), ABISELECT(55408,27732), "S20813C1");
    check_base_class_offset(lv, (S20813C5*)(S20813C4*), ABISELECT(46992,23524), "S20813C1");
    /*is_ambiguous_... S20813C4::S20813C6 */ AMB_check_base_class_offset(lv, (S20813C6*)(S20813C4*), ABISELECT(54432,27252), "S20813C1");
    /*is_ambiguous_... S20813C4::S20813C7 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C7*)(S20813C4*), ABISELECT(54464,27264), "S20813C1");
    /*is_ambiguous_... S20813C4::S20813C7 */ AMB_check_base_class_offset(lv, (S20813C7*)(S20813C4*), ABISELECT(54464,27264), "S20813C1");
    check_base_class_offset(lv, (S20813C4*), ABISELECT(46992,23524), "S20813C1");
    check_base_class_offset(lv, (S4224C43_nt*)(S20813C8*), ABISELECT(56304,28180), "S20813C1");
    check_base_class_offset(lv, (S20813C3*)(S20813C7*)(S20813C8*), 0, "S20813C1");
    check_base_class_offset(lv, (S20813C7*)(S20813C8*), 0, "S20813C1");
    /*is_ambiguous_... S20813C8::S20813C3 */ AMB_check_base_class_offset(lv, (S20813C3*)(S20813C8*), ABISELECT(896,448), "S20813C1");
    check_base_class_offset(lv, (S20813C6*)(S20813C8*), ABISELECT(1064,536), "S20813C1");
    check_base_class_offset(lv, (S20813C8*), 0, "S20813C1");
    check_field_offset(lv, s20813c1f0, ABISELECT(45700,22876), "S20813C1.s20813c1f0");
    set_bf_and_test(lv, s20813c1f1, ABISELECT(45708,22884), 0, 32, 1, "S20813C1");
    set_bf_and_test(lv, s20813c1f1, ABISELECT(45708,22884), 0, 32, hide_sll(1LL<<31), "S20813C1");
    check_field_offset(lv, s20813c1f2, ABISELECT(45712,22888), "S20813C1.s20813c1f2");
    check_field_offset(lv, s20813c1f3, ABISELECT(45728,22892), "S20813C1.s20813c1f3");
    test_class_info(&lv, &cd_S20813C1);
    dp->~S20813C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20813C1(Test_S20813C1, "S20813C1", ABISELECT(56320,28184));

#else // __cplusplus

extern void _ZN8S20813C1C1Ev();
extern void _ZN8S20813C1D1Ev();
Name_Map name_map_S20813C1[] = {
  NSPAIR(_ZN8S20813C1C1Ev),
  NSPAIR(_ZN8S20813C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C2;
extern VTBL_ENTRY _ZTI8S20813C2[];
extern  VTBL_ENTRY _ZTV8S20813C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C2[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
extern Class_Descriptor cd_S20813C5;
extern VTBL_ENTRY _ZTI8S20813C5[];
extern  VTBL_ENTRY _ZTV8S20813C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C5[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
extern Class_Descriptor cd_S20813C4;
extern VTBL_ENTRY _ZTI8S20813C4[];
extern  VTBL_ENTRY _ZTV8S20813C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C4[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C7;
extern VTBL_ENTRY _ZTI8S20813C7[];
extern  VTBL_ENTRY _ZTV8S20813C7[];
extern Class_Descriptor cd_S20813C3;
extern VTBL_ENTRY _ZTI8S20813C3[];
extern  VTBL_ENTRY _ZTV8S20813C3[];
extern Class_Descriptor cd_S20813C6;
extern VTBL_ENTRY _ZTI8S20813C6[];
extern  VTBL_ENTRY _ZTV8S20813C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C6[];
extern Class_Descriptor cd_S20813C8;
extern VTBL_ENTRY _ZTI8S20813C8[];
extern  VTBL_ENTRY _ZTV8S20813C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C8[];
static Base_Class bases_S20813C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20813C3,    ABISELECT(46816,23436), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20813C2,    ABISELECT(46624,23340), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20813C6,    ABISELECT(55376,27720), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20813C3,    ABISELECT(46992,23524), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20813C3,    ABISELECT(55408,27732), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20813C7,    ABISELECT(55408,27732), //bcp->offset
    59, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20813C5,    ABISELECT(46992,23524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    10, //immediately_derived
  0, 0},
  {&cd_S20813C6,    ABISELECT(54432,27252), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20813C3,    ABISELECT(54464,27264), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20813C7,    ABISELECT(54464,27264), //bcp->offset
    51, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20813C4,    ABISELECT(46992,23524), //bcp->offset
    34, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4224C43_nt,    ABISELECT(56304,28180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20813C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20813C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20813C3,    ABISELECT(896,448), //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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20813C6,    ABISELECT(1064,536), //bcp->offset
    19, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20813C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20813C1[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
extern void _ZN8S20813C82v5Ev();
extern void _ZN8S20813C12v1Ev();
extern void _ZN8S20813C1D1Ev();
extern void _ZN8S20813C1D0Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S20813C1D1Ev,_ZTv0_n16_N8S20813C1D1Ev)();
extern void ABISELECT(_ZThn46624_N8S20813C1D1Ev,_ZThn23340_N8S20813C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20813C1D0Ev,_ZTv0_n16_N8S20813C1D0Ev)();
extern void ABISELECT(_ZThn46624_N8S20813C1D0Ev,_ZThn23340_N8S20813C1D0Ev)() __attribute__((weak));
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S20813C1D1Ev,_ZTv0_n36_N8S20813C1D1Ev)();
extern void ABISELECT(_ZThn46992_N8S20813C1D1Ev,_ZThn23524_N8S20813C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20813C1D0Ev,_ZTv0_n36_N8S20813C1D0Ev)();
extern void ABISELECT(_ZThn46992_N8S20813C1D0Ev,_ZThn23524_N8S20813C1D0Ev)() __attribute__((weak));
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY vtc_S20813C1[] = {
  ABISELECT(55408,27732),
  ABISELECT(55376,27720),
  ABISELECT(46992,23524),
  ABISELECT(46624,23340),
  ABISELECT(46816,23436),
  ABISELECT(56304,28180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20813C82v5Ev,
  (VTBL_ENTRY)&_ZN8S20813C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20813C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C1D0Ev,
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  ABISELECT(45752,22900),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  ABISELECT(-46624,-23340),
  ABISELECT(192,96),
  ABISELECT(-46624,-23340),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C1D1Ev,_ZTv0_n16_N8S20813C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C1D0Ev,_ZTv0_n16_N8S20813C1D0Ev),
  0,
  0,
  ABISELECT(-46816,-23436),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  ABISELECT(7472,3740),
  ABISELECT(-46992,-23524),
  0,
  0,
  ABISELECT(8416,4208),
  ABISELECT(-368,-184),
  ABISELECT(-176,-88),
  ABISELECT(8384,4196),
  ABISELECT(-46992,-23524),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20813C1D1Ev,_ZTv0_n36_N8S20813C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20813C1D0Ev,_ZTv0_n36_N8S20813C1D0Ev),
  ABISELECT(-7616,-3816),
  ABISELECT(-54432,-27252),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  ABISELECT(-54464,-27264),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-55376,-27720),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  0,
  0,
  0,
  ABISELECT(-55408,-27732),
  (VTBL_ENTRY)&(_ZTI8S20813C1[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
extern VTBL_ENTRY _ZTV8S20813C1[];
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
extern void _ZN8S20813C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C8__8S20813C1[] = {
  ABISELECT(46816,23436),
  ABISELECT(56304,28180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
  (VTBL_ENTRY)&_ZN8S20813C82v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C68S20813C8__A2__8S20813C1[] = {
  ABISELECT(45752,22900),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C68S20813C8__A2__8S20813C1[] = {
  0,
  0,
  ABISELECT(-45752,-22900),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C8__8S20813C1[] = {
  ABISELECT(45752,22900),
  ABISELECT(-1064,-536),
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__A2__8S20813C8__8S20813C1[] = {
  0,
  0,
  ABISELECT(-46816,-23436),
  (VTBL_ENTRY)&(_ZTI8S20813C8[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void _ZN8S20813C2D1Ev();
extern void _ZN8S20813C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C2__8S20813C1[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C2D0Ev,
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C2__8S20813C1[] = {
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20813C2[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C4D1Ev();
extern void _ZN8S20813C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C4__8S20813C1[] = {
  ABISELECT(8416,4208),
  ABISELECT(-368,-184),
  ABISELECT(-176,-88),
  ABISELECT(8384,4196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C4D0Ev,
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C5D1Ev();
extern void _ZN8S20813C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C58S20813C4__8S20813C1[] = {
  ABISELECT(8416,4208),
  ABISELECT(-368,-184),
  ABISELECT(-176,-88),
  ABISELECT(8384,4196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20813C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C58S20813C4__8S20813C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C58S20813C4__8S20813C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20813C2__8S20813C58S20813C4__8S20813C1[] = {
  ABISELECT(368,184),
  ABISELECT(192,96),
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C5D1Ev,_ZTv0_n16_N8S20813C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C5D0Ev,_ZTv0_n16_N8S20813C5D0Ev),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C7__8S20813C58S20813C4__8S20813C1[] = {
  0,
  0,
  0,
  ABISELECT(-8416,-4208),
  (VTBL_ENTRY)&(_ZTI8S20813C5[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C68S20813C4__A1__8S20813C1[] = {
  ABISELECT(-7616,-3816),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C68S20813C4__A1__8S20813C1[] = {
  0,
  0,
  ABISELECT(7616,3816),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C4__8S20813C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20813C4D1Ev,_ZTv0_n16_N8S20813C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20813C4D0Ev,_ZTv0_n16_N8S20813C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20813C2__8S20813C4__8S20813C1[] = {
  ABISELECT(368,184),
  ABISELECT(192,96),
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C4D1Ev,_ZTv0_n16_N8S20813C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20813C4D0Ev,_ZTv0_n16_N8S20813C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C4__8S20813C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
extern void _ZN8S20813C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C7__8S20813C4__8S20813C1[] = {
  0,
  0,
  0,
  ABISELECT(-8416,-4208),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20813C72v4Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__A__8S20813C4__8S20813C1[] = {
  ABISELECT(-7616,-3816),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20813C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20813C6__8S20813C1[] = {
  ABISELECT(-8560,-4284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
};
extern void _ZN8S20813C32v2Ev();
extern void _ZN8S20813C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20813C3__8S20813C6__8S20813C1[] = {
  0,
  0,
  ABISELECT(8560,4284),
  (VTBL_ENTRY)&(_ZTI8S20813C6[0]),
  (VTBL_ENTRY)&_ZN8S20813C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20813C32v3Ev,
};
static  VTT_ENTRY vtt_S20813C1[] = {
  {&(_ZTV8S20813C1[8]),  8,67},
  {&(_tg__ZTV8S20813C8__8S20813C1[4]),  4,8},
  {&(_tg__ZTV8S20813C68S20813C8__A2__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C68S20813C8__A2__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C6__8S20813C8__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C3__A2__8S20813C8__8S20813C1[4]),  4,6},
  {&(_ZTV8S20813C1[26]),  26,67},
  {&(_ZTV8S20813C1[32]),  32,67},
  {&(_ZTV8S20813C1[44]),  44,67},
  {&(_ZTV8S20813C1[59]),  59,67},
  {&(_ZTV8S20813C1[64]),  64,67},
  {&(_ZTV8S20813C1[51]),  51,67},
  {&(_ZTV8S20813C1[53]),  53,67},
  {&(_ZTV8S20813C1[22]),  22,67},
  {&(_tg__ZTV8S20813C2__8S20813C1[3]),  3,5},
  {&(_tg__ZTV8S20813C3__8S20813C2__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C4__8S20813C1[6]),  6,10},
  {&(_tg__ZTV8S20813C58S20813C4__8S20813C1[6]),  6,10},
  {&(_tg__ZTV8S20813C6__8S20813C58S20813C4__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C58S20813C4__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C2__8S20813C58S20813C4__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C7__8S20813C58S20813C4__8S20813C1[5]),  5,8},
  {&(_tg__ZTV8S20813C68S20813C4__A1__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C68S20813C4__A1__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C3__8S20813C4__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C2__8S20813C4__8S20813C1[4]),  4,6},
  {&(_tg__ZTV8S20813C6__8S20813C4__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C7__8S20813C4__8S20813C1[5]),  5,8},
  {&(_tg__ZTV8S20813C6__A__8S20813C4__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C6__8S20813C1[3]),  3,3},
  {&(_tg__ZTV8S20813C3__8S20813C6__8S20813C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20813C1[];
extern  VTBL_ENTRY _ZTV8S20813C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20813C1[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20813C1D0Ev,_ZTv0_n36_N8S20813C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn46992_N8S20813C1D0Ev,_ZThn23524_N8S20813C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20813C1D1Ev,_ZTv0_n36_N8S20813C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn46992_N8S20813C1D1Ev,_ZThn23524_N8S20813C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C1D0Ev,_ZTv0_n16_N8S20813C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn46624_N8S20813C1D0Ev,_ZThn23340_N8S20813C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20813C1D1Ev,_ZTv0_n16_N8S20813C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn46624_N8S20813C1D1Ev,_ZThn23340_N8S20813C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20813C1 = {  "S20813C1", // class name
  bases_S20813C1, 17,
  &(vtc_S20813C1[0]), // expected_vtbl_contents
  &(vtt_S20813C1[0]), // expected_vtt_contents
  ABISELECT(56320,28184), // object size
  NSPAIRA(_ZTI8S20813C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20813C1),67, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20813C1),31, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7309C4  {
  int s7309c4f0;
  virtual void  v2(); // _ZN7S7309C42v2Ev
  virtual void  v3(); // _ZN7S7309C42v3Ev
  virtual void  v4(); // _ZN7S7309C42v4Ev
  virtual void  v5(); // _ZN7S7309C42v5Ev
  virtual void  v6(); // _ZN7S7309C42v6Ev
  virtual void  v7(); // _ZN7S7309C42v7Ev
  virtual void  v8(); // _ZN7S7309C42v8Ev
  ~S7309C4(); // tgen
  S7309C4(); // tgen
};
//SIG(-1 S7309C4) C1{ v1 v2 v3 v4 v5 v6 v7 Fi}


void  S7309C4 ::v2(){vfunc_called(this, "_ZN7S7309C42v2Ev");}
void  S7309C4 ::v3(){vfunc_called(this, "_ZN7S7309C42v3Ev");}
void  S7309C4 ::v4(){vfunc_called(this, "_ZN7S7309C42v4Ev");}
void  S7309C4 ::v5(){vfunc_called(this, "_ZN7S7309C42v5Ev");}
void  S7309C4 ::v6(){vfunc_called(this, "_ZN7S7309C42v6Ev");}
void  S7309C4 ::v7(){vfunc_called(this, "_ZN7S7309C42v7Ev");}
void  S7309C4 ::v8(){vfunc_called(this, "_ZN7S7309C42v8Ev");}
S7309C4 ::~S7309C4(){ note_dtor("S7309C4", this);} // tgen
S7309C4 ::S7309C4(){ note_ctor("S7309C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7309C4C1Ev();
extern void _ZN7S7309C4D1Ev();
Name_Map name_map_S7309C4[] = {
  NSPAIR(_ZN7S7309C4C1Ev),
  NSPAIR(_ZN7S7309C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7309C4[];
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
static  VTBL_ENTRY vtc_S7309C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C4[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
};
extern VTBL_ENTRY _ZTI7S7309C4[];
extern  VTBL_ENTRY _ZTV7S7309C4[];
Class_Descriptor cd_S7309C4 = {  "S7309C4", // class name
  0,0,//no base classes
  &(vtc_S7309C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7309C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7309C4),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  S7309C6  {
  int s7309c6f0;
  virtual  ~S7309C6(); // _ZN7S7309C6D1Ev
  virtual void  v9(); // _ZN7S7309C62v9Ev
  virtual void  v10(); // _ZN7S7309C63v10Ev
  virtual void  v11(); // _ZN7S7309C63v11Ev
  virtual void  v12(); // _ZN7S7309C63v12Ev
  virtual void  v13(); // _ZN7S7309C63v13Ev
  virtual void  v14(); // _ZN7S7309C63v14Ev
  virtual void  v15(); // _ZN7S7309C63v15Ev
  S7309C6(); // tgen
};
//SIG(-1 S7309C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fi}


 S7309C6 ::~S7309C6(){ note_dtor("S7309C6", this);}
void  S7309C6 ::v9(){vfunc_called(this, "_ZN7S7309C62v9Ev");}
void  S7309C6 ::v10(){vfunc_called(this, "_ZN7S7309C63v10Ev");}
void  S7309C6 ::v11(){vfunc_called(this, "_ZN7S7309C63v11Ev");}
void  S7309C6 ::v12(){vfunc_called(this, "_ZN7S7309C63v12Ev");}
void  S7309C6 ::v13(){vfunc_called(this, "_ZN7S7309C63v13Ev");}
void  S7309C6 ::v14(){vfunc_called(this, "_ZN7S7309C63v14Ev");}
void  S7309C6 ::v15(){vfunc_called(this, "_ZN7S7309C63v15Ev");}
S7309C6 ::S7309C6(){ note_ctor("S7309C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7309C6C1Ev();
extern void _ZN7S7309C6D1Ev();
Name_Map name_map_S7309C6[] = {
  NSPAIR(_ZN7S7309C6C1Ev),
  NSPAIR(_ZN7S7309C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7309C6[];
extern void _ZN7S7309C6D1Ev();
extern void _ZN7S7309C6D0Ev();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY vtc_S7309C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C6[0]),
  (VTBL_ENTRY)&_ZN7S7309C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
Class_Descriptor cd_S7309C6 = {  "S7309C6", // class name
  0,0,//no base classes
  &(vtc_S7309C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7309C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7309C6),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  S7309C5  : S7309C6 {
  void *s7309c5f0;
  char s7309c5f1;
  virtual void  v16(); // _ZN7S7309C53v16Ev
  virtual void  v17(); // _ZN7S7309C53v17Ev
  virtual void  v18(); // _ZN7S7309C53v18Ev
  virtual void  v19(); // _ZN7S7309C53v19Ev
  virtual void  v20(); // _ZN7S7309C53v20Ev
  ~S7309C5(); // tgen
  S7309C5(); // tgen
};
//SIG(-1 S7309C5) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fi} v1 v2 v3 v4 v5 Fp Fc}


void  S7309C5 ::v16(){vfunc_called(this, "_ZN7S7309C53v16Ev");}
void  S7309C5 ::v17(){vfunc_called(this, "_ZN7S7309C53v17Ev");}
void  S7309C5 ::v18(){vfunc_called(this, "_ZN7S7309C53v18Ev");}
void  S7309C5 ::v19(){vfunc_called(this, "_ZN7S7309C53v19Ev");}
void  S7309C5 ::v20(){vfunc_called(this, "_ZN7S7309C53v20Ev");}
S7309C5 ::~S7309C5(){ note_dtor("S7309C5", this);} // tgen
S7309C5 ::S7309C5(){ note_ctor("S7309C5", this);} // tgen

static void Test_S7309C5()
{
  extern Class_Descriptor cd_S7309C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7309C5, buf);
    S7309C5 *dp, &lv = *(dp=new (buf) S7309C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7309C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7309C5)");
    check_base_class_offset(lv, (S7309C6*), 0, "S7309C5");
    check_field_offset(lv, s7309c5f0, ABISELECT(16,8), "S7309C5.s7309c5f0");
    check_field_offset(lv, s7309c5f1, ABISELECT(24,12), "S7309C5.s7309c5f1");
    test_class_info(&lv, &cd_S7309C5);
    dp->~S7309C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7309C5(Test_S7309C5, "S7309C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7309C5C1Ev();
extern void _ZN7S7309C5D1Ev();
Name_Map name_map_S7309C5[] = {
  NSPAIR(_ZN7S7309C5C1Ev),
  NSPAIR(_ZN7S7309C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
static Base_Class bases_S7309C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7309C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7309C5[];
extern void _ZN7S7309C5D1Ev();
extern void _ZN7S7309C5D0Ev();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
static  VTBL_ENTRY vtc_S7309C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C5[0]),
  (VTBL_ENTRY)&_ZN7S7309C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
};
extern VTBL_ENTRY _ZTI7S7309C5[];
extern  VTBL_ENTRY _ZTV7S7309C5[];
Class_Descriptor cd_S7309C5 = {  "S7309C5", // class name
  bases_S7309C5, 1,
  &(vtc_S7309C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7309C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7309C5),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7309C3  : S7309C4 , S7309C5 , virtual S7309C6 {
  int s7309c3f0:18;
  virtual void  v21(); // _ZN7S7309C33v21Ev
  virtual void  v22(); // _ZN7S7309C33v22Ev
  virtual void  v23(); // _ZN7S7309C33v23Ev
  virtual void  v24(); // _ZN7S7309C33v24Ev
  virtual void  v25(); // _ZN7S7309C33v25Ev
  virtual void  v26(); // _ZN7S7309C33v26Ev
  virtual void  v27(); // _ZN7S7309C33v27Ev
  virtual void  v28(); // _ZN7S7309C33v28Ev
  ~S7309C3(); // tgen
  S7309C3(); // tgen
};
//SIG(-1 S7309C3) C1{ BC2{ v9 v10 v11 v12 v13 v14 v15 Fi} BC3{ BC4{ vd v16 v17 v18 v19 v20 v21 v22 Fi} v23 v24 v25 v26 v27 Fp Fc} VBC4 v1 v2 v3 v4 v5 v6 v7 v8 Fi:18}


void  S7309C3 ::v21(){vfunc_called(this, "_ZN7S7309C33v21Ev");}
void  S7309C3 ::v22(){vfunc_called(this, "_ZN7S7309C33v22Ev");}
void  S7309C3 ::v23(){vfunc_called(this, "_ZN7S7309C33v23Ev");}
void  S7309C3 ::v24(){vfunc_called(this, "_ZN7S7309C33v24Ev");}
void  S7309C3 ::v25(){vfunc_called(this, "_ZN7S7309C33v25Ev");}
void  S7309C3 ::v26(){vfunc_called(this, "_ZN7S7309C33v26Ev");}
void  S7309C3 ::v27(){vfunc_called(this, "_ZN7S7309C33v27Ev");}
void  S7309C3 ::v28(){vfunc_called(this, "_ZN7S7309C33v28Ev");}
S7309C3 ::~S7309C3(){ note_dtor("S7309C3", this);} // tgen
S7309C3 ::S7309C3(){ note_ctor("S7309C3", this);} // tgen

static void Test_S7309C3()
{
  extern Class_Descriptor cd_S7309C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7309C3, buf);
    S7309C3 *dp, &lv = *(dp=new (buf) S7309C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7309C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7309C3)");
    check_base_class_offset(lv, (S7309C4*), 0, "S7309C3");
    check_base_class_offset(lv, (S7309C6*)(S7309C5*), ABISELECT(16,8), "S7309C3");
    check_base_class_offset(lv, (S7309C5*), ABISELECT(16,8), "S7309C3");
    /*is_ambiguous_... S7309C3::S7309C6 */ AMB_check_base_class_offset(lv, (S7309C6*), ABISELECT(48,24), "S7309C3");
    set_bf_and_test(lv, s7309c3f0, ABISELECT(41,21), 0, 18, 1, "S7309C3");
    set_bf_and_test(lv, s7309c3f0, ABISELECT(41,21), 0, 18, hide_sll(1LL<<17), "S7309C3");
    test_class_info(&lv, &cd_S7309C3);
    dp->~S7309C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7309C3(Test_S7309C3, "S7309C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7309C3C1Ev();
extern void _ZN7S7309C3D1Ev();
Name_Map name_map_S7309C3[] = {
  NSPAIR(_ZN7S7309C3C1Ev),
  NSPAIR(_ZN7S7309C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7309C4;
extern VTBL_ENTRY _ZTI7S7309C4[];
extern  VTBL_ENTRY _ZTV7S7309C4[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C5;
extern VTBL_ENTRY _ZTI7S7309C5[];
extern  VTBL_ENTRY _ZTV7S7309C5[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
static Base_Class bases_S7309C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7309C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7309C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7309C5,    ABISELECT(16,8), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7309C6,    ABISELECT(48,24), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7309C3[];
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void _ZN7S7309C3D1Ev();
extern void _ZN7S7309C3D0Ev();
extern void ABISELECT(_ZThn16_N7S7309C3D1Ev,_ZThn8_N7S7309C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7309C3D0Ev,_ZThn8_N7S7309C3D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY vtc_S7309C3[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7309C3D1Ev,_ZThn8_N7S7309C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7309C3D0Ev,_ZThn8_N7S7309C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
extern VTBL_ENTRY _ZTV7S7309C3[];
static  VTT_ENTRY vtt_S7309C3[] = {
  {&(_ZTV7S7309C3[3]),  3,55},
  {&(_ZTV7S7309C3[46]),  46,55},
};
extern VTBL_ENTRY _ZTI7S7309C3[];
extern  VTBL_ENTRY _ZTV7S7309C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C3[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7309C3 = {  "S7309C3", // class name
  bases_S7309C3, 4,
  &(vtc_S7309C3[0]), // expected_vtbl_contents
  &(vtt_S7309C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7309C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7309C3),55, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7309C3),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7309C7  {
  void *s7309c7f0;
  int s7309c7f1;
  virtual  ~S7309C7(); // _ZN7S7309C7D1Ev
  virtual void  v29(); // _ZN7S7309C73v29Ev
  virtual void  v30(); // _ZN7S7309C73v30Ev
  S7309C7(); // tgen
};
//SIG(-1 S7309C7) C1{ vd v1 v2 Fp Fi}


 S7309C7 ::~S7309C7(){ note_dtor("S7309C7", this);}
void  S7309C7 ::v29(){vfunc_called(this, "_ZN7S7309C73v29Ev");}
void  S7309C7 ::v30(){vfunc_called(this, "_ZN7S7309C73v30Ev");}
S7309C7 ::S7309C7(){ note_ctor("S7309C7", this);} // tgen

static void Test_S7309C7()
{
  extern Class_Descriptor cd_S7309C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7309C7, buf);
    S7309C7 *dp, &lv = *(dp=new (buf) S7309C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7309C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7309C7)");
    check_field_offset(lv, s7309c7f0, ABISELECT(8,4), "S7309C7.s7309c7f0");
    check_field_offset(lv, s7309c7f1, ABISELECT(16,8), "S7309C7.s7309c7f1");
    test_class_info(&lv, &cd_S7309C7);
    dp->~S7309C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7309C7(Test_S7309C7, "S7309C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7309C7C1Ev();
extern void _ZN7S7309C7D1Ev();
Name_Map name_map_S7309C7[] = {
  NSPAIR(_ZN7S7309C7C1Ev),
  NSPAIR(_ZN7S7309C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7309C7[];
extern void _ZN7S7309C7D1Ev();
extern void _ZN7S7309C7D0Ev();
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
static  VTBL_ENTRY vtc_S7309C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C7[0]),
  (VTBL_ENTRY)&_ZN7S7309C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
};
extern VTBL_ENTRY _ZTI7S7309C7[];
extern  VTBL_ENTRY _ZTV7S7309C7[];
Class_Descriptor cd_S7309C7 = {  "S7309C7", // class name
  0,0,//no base classes
  &(vtc_S7309C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7309C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7309C7),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  S7309C8  : virtual S7309C7 , virtual S7309C3 {
  void *s7309c8f0[49];
  virtual void  v31(); // _ZN7S7309C83v31Ev
  virtual void  v32(); // _ZN7S7309C83v32Ev
  ~S7309C8(); // tgen
  S7309C8(); // tgen
};
//SIG(-1 S7309C8) C1{ VBC2{ vd v3 v4 Fp Fi} VBC3{ BC4{ v5 v6 v7 v8 v9 v10 v11 Fi} BC5{ BC6{ vd v12 v13 v14 v15 v16 v17 v18 Fi} v19 v20 v21 v22 v23 Fp Fc} VBC6 v24 v25 v26 v27 v28 v29 v30 v31 Fi:18} v1 v2 Fp[49]}


void  S7309C8 ::v31(){vfunc_called(this, "_ZN7S7309C83v31Ev");}
void  S7309C8 ::v32(){vfunc_called(this, "_ZN7S7309C83v32Ev");}
S7309C8 ::~S7309C8(){ note_dtor("S7309C8", this);} // tgen
S7309C8 ::S7309C8(){ note_ctor("S7309C8", this);} // tgen

static void Test_S7309C8()
{
  extern Class_Descriptor cd_S7309C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[62];
    init_test(&cd_S7309C8, buf);
    S7309C8 *dp, &lv = *(dp=new (buf) S7309C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(488,244), "sizeof(S7309C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7309C8)");
    check_base_class_offset(lv, (S7309C7*), ABISELECT(400,200), "S7309C8");
    check_base_class_offset(lv, (S7309C4*)(S7309C3*), ABISELECT(424,212), "S7309C8");
    check_base_class_offset(lv, (S7309C6*)(S7309C5*)(S7309C3*), ABISELECT(440,220), "S7309C8");
    check_base_class_offset(lv, (S7309C5*)(S7309C3*), ABISELECT(440,220), "S7309C8");
    /*is_ambiguous_... S7309C3::S7309C6 */ AMB_check_base_class_offset(lv, (S7309C6*)(S7309C3*), ABISELECT(472,236), "S7309C8");
    check_base_class_offset(lv, (S7309C3*), ABISELECT(424,212), "S7309C8");
    check_field_offset(lv, s7309c8f0, ABISELECT(8,4), "S7309C8.s7309c8f0");
    test_class_info(&lv, &cd_S7309C8);
    dp->~S7309C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7309C8(Test_S7309C8, "S7309C8", ABISELECT(488,244));

#else // __cplusplus

extern void _ZN7S7309C8C1Ev();
extern void _ZN7S7309C8D1Ev();
Name_Map name_map_S7309C8[] = {
  NSPAIR(_ZN7S7309C8C1Ev),
  NSPAIR(_ZN7S7309C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7309C7;
extern VTBL_ENTRY _ZTI7S7309C7[];
extern  VTBL_ENTRY _ZTV7S7309C7[];
extern Class_Descriptor cd_S7309C4;
extern VTBL_ENTRY _ZTI7S7309C4[];
extern  VTBL_ENTRY _ZTV7S7309C4[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C5;
extern VTBL_ENTRY _ZTI7S7309C5[];
extern  VTBL_ENTRY _ZTV7S7309C5[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C3;
extern VTBL_ENTRY _ZTI7S7309C3[];
extern  VTBL_ENTRY _ZTV7S7309C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C3[];
static Base_Class bases_S7309C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7309C7,    ABISELECT(400,200), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7309C4,    ABISELECT(424,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7309C6,    ABISELECT(440,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
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7309C5,    ABISELECT(440,220), //bcp->offset
    66, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7309C6,    ABISELECT(472,236), //bcp->offset
    82, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7309C3,    ABISELECT(424,212), //bcp->offset
    18, //bcp->virtual_function_table_offset
    31, //num_negative_vtable_entries(t, bcp)
    3, //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 _ZTI7S7309C8[];
extern void _ZN7S7309C83v31Ev();
extern void _ZN7S7309C83v32Ev();
extern void _ZN7S7309C8D1Ev();
extern void _ZN7S7309C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn400_N7S7309C8D1Ev,_ZThn200_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn400_N7S7309C8D0Ev,_ZThn200_N7S7309C8D0Ev)() __attribute__((weak));
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn424_N7S7309C8D1Ev,_ZThn212_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn424_N7S7309C8D0Ev,_ZThn212_N7S7309C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n152_N7S7309C8D1Ev,_ZTvn8_n76_N7S7309C8D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7309C8D0Ev,_ZTvn8_n76_N7S7309C8D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn472_N7S7309C8D1Ev,_ZThn236_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn472_N7S7309C8D0Ev,_ZThn236_N7S7309C8D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY vtc_S7309C8[] = {
  ABISELECT(472,236),
  ABISELECT(424,212),
  ABISELECT(400,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&_ZN7S7309C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7309C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7309C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C8D0Ev,
  0,
  0,
  ABISELECT(-400,-200),
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-424,-212),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-424,-212),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev),
  ABISELECT(-440,-220),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C8D1Ev,_ZTvn8_n76_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C8D0Ev,_ZTvn8_n76_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-472,-236),
  ABISELECT(-472,-236),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
extern VTBL_ENTRY _ZTV7S7309C8[];
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void _ZN7S7309C3D1Ev();
extern void _ZN7S7309C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C3__7S7309C8[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C6__A1__7S7309C3__7S7309C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
static  VTT_ENTRY vtt_S7309C8[] = {
  {&(_ZTV7S7309C8[5]),  5,101},
  {&(_ZTV7S7309C8[14]),  14,101},
  {&(_ZTV7S7309C8[49]),  49,101},
  {&(_ZTV7S7309C8[68]),  68,101},
  {&(_ZTV7S7309C8[92]),  92,101},
  {&(_tg__ZTV7S7309C3__7S7309C8[3]),  3,20},
  {&(_tg__ZTV7S7309C6__A1__7S7309C3__7S7309C8[10]),  10,19},
};
extern VTBL_ENTRY _ZTI7S7309C8[];
extern  VTBL_ENTRY _ZTV7S7309C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C8[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7309C8D0Ev,_ZThn212_N7S7309C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7309C8D1Ev,_ZThn212_N7S7309C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S7309C8D0Ev,_ZThn236_N7S7309C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7309C8D0Ev,_ZThn200_N7S7309C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S7309C8D1Ev,_ZThn236_N7S7309C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7309C8D1Ev,_ZThn200_N7S7309C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7309C8 = {  "S7309C8", // class name
  bases_S7309C8, 6,
  &(vtc_S7309C8[0]), // expected_vtbl_contents
  &(vtt_S7309C8[0]), // expected_vtt_contents
  ABISELECT(488,244), // object size
  NSPAIRA(_ZTI7S7309C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7309C8),101, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7309C8),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7309C2  : virtual S7309C3 , virtual S7309C7 , S7309C8 {
  void *s7309c2f0[7];
  int s7309c2f1;
  ::S7309C4 s7309c2f2;
  virtual void  v33(); // _ZN7S7309C23v33Ev
  virtual void  v34(); // _ZN7S7309C23v34Ev
  virtual void  v35(); // _ZN7S7309C23v35Ev
  virtual void  v36(); // _ZN7S7309C23v36Ev
  virtual void  v37(); // _ZN7S7309C23v37Ev
  ~S7309C2(); // tgen
  S7309C2(); // tgen
};
//SIG(-1 S7309C2) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 v11 v12 Fi} BC4{ BC5{ vd v13 v14 v15 v16 v17 v18 v19 Fi} v20 v21 v22 v23 v24 Fp Fc} VBC5 v25 v26 v27 v28 v29 v30 v31 v32 Fi:18} VBC6{ vd v33 v34 Fp Fi} BC7{ VBC6 VBC2 v35 v36 Fp[49]} v1 v2 v3 v4 v5 Fp[7] Fi FC3}


void  S7309C2 ::v33(){vfunc_called(this, "_ZN7S7309C23v33Ev");}
void  S7309C2 ::v34(){vfunc_called(this, "_ZN7S7309C23v34Ev");}
void  S7309C2 ::v35(){vfunc_called(this, "_ZN7S7309C23v35Ev");}
void  S7309C2 ::v36(){vfunc_called(this, "_ZN7S7309C23v36Ev");}
void  S7309C2 ::v37(){vfunc_called(this, "_ZN7S7309C23v37Ev");}
S7309C2 ::~S7309C2(){ note_dtor("S7309C2", this);} // tgen
S7309C2 ::S7309C2(){ note_ctor("S7309C2", this);} // tgen

static void Test_S7309C2()
{
  extern Class_Descriptor cd_S7309C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[72];
    init_test(&cd_S7309C2, buf);
    S7309C2 *dp, &lv = *(dp=new (buf) S7309C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(568,284), "sizeof(S7309C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7309C2)");
    check_base_class_offset(lv, (S7309C4*)(S7309C3*), ABISELECT(480,240), "S7309C2");
    check_base_class_offset(lv, (S7309C6*)(S7309C5*)(S7309C3*), ABISELECT(496,248), "S7309C2");
    check_base_class_offset(lv, (S7309C5*)(S7309C3*), ABISELECT(496,248), "S7309C2");
    /*is_ambiguous_... S7309C3::S7309C6 */ AMB_check_base_class_offset(lv, (S7309C6*)(S7309C3*), ABISELECT(528,264), "S7309C2");
    check_base_class_offset(lv, (S7309C3*), ABISELECT(480,240), "S7309C2");
    check_base_class_offset(lv, (S7309C3*)(S7309C8*), ABISELECT(480,240), "S7309C2");
    check_base_class_offset(lv, (S7309C7*), ABISELECT(544,272), "S7309C2");
    check_base_class_offset(lv, (S7309C7*)(S7309C8*), ABISELECT(544,272), "S7309C2");
    check_base_class_offset(lv, (S7309C8*), 0, "S7309C2");
    check_field_offset(lv, s7309c2f0, ABISELECT(400,200), "S7309C2.s7309c2f0");
    check_field_offset(lv, s7309c2f1, ABISELECT(456,228), "S7309C2.s7309c2f1");
    check_field_offset(lv, s7309c2f2, ABISELECT(464,232), "S7309C2.s7309c2f2");
    test_class_info(&lv, &cd_S7309C2);
    dp->~S7309C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7309C2(Test_S7309C2, "S7309C2", ABISELECT(568,284));

#else // __cplusplus

extern void _ZN7S7309C2C1Ev();
extern void _ZN7S7309C2D1Ev();
Name_Map name_map_S7309C2[] = {
  NSPAIR(_ZN7S7309C2C1Ev),
  NSPAIR(_ZN7S7309C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7309C4;
extern VTBL_ENTRY _ZTI7S7309C4[];
extern  VTBL_ENTRY _ZTV7S7309C4[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C5;
extern VTBL_ENTRY _ZTI7S7309C5[];
extern  VTBL_ENTRY _ZTV7S7309C5[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C3;
extern VTBL_ENTRY _ZTI7S7309C3[];
extern  VTBL_ENTRY _ZTV7S7309C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C3[];
extern Class_Descriptor cd_S7309C7;
extern VTBL_ENTRY _ZTI7S7309C7[];
extern  VTBL_ENTRY _ZTV7S7309C7[];
extern Class_Descriptor cd_S7309C8;
extern VTBL_ENTRY _ZTI7S7309C8[];
extern  VTBL_ENTRY _ZTV7S7309C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C8[];
static Base_Class bases_S7309C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7309C4,    ABISELECT(480,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7309C6,    ABISELECT(496,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
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7309C5,    ABISELECT(496,248), //bcp->offset
    62, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7309C6,    ABISELECT(528,264), //bcp->offset
    78, //bcp->virtual_function_table_offset
    10, //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
    4, //immediately_derived
  0, 1},
  {&cd_S7309C3,    ABISELECT(480,240), //bcp->offset
    14, //bcp->virtual_function_table_offset
    31, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7309C7,    ABISELECT(544,272), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7309C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7309C2[];
extern void _ZN7S7309C83v31Ev();
extern void _ZN7S7309C83v32Ev();
extern void _ZN7S7309C2D1Ev();
extern void _ZN7S7309C2D0Ev();
extern void _ZN7S7309C23v33Ev();
extern void _ZN7S7309C23v34Ev();
extern void _ZN7S7309C23v35Ev();
extern void _ZN7S7309C23v36Ev();
extern void _ZN7S7309C23v37Ev();
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void ABISELECT(_ZTv0_n152_N7S7309C2D1Ev,_ZTv0_n76_N7S7309C2D1Ev)();
extern void ABISELECT(_ZThn480_N7S7309C2D1Ev,_ZThn240_N7S7309C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7309C2D0Ev,_ZTv0_n76_N7S7309C2D0Ev)();
extern void ABISELECT(_ZThn480_N7S7309C2D0Ev,_ZThn240_N7S7309C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n152_N7S7309C2D1Ev,_ZTvn8_n76_N7S7309C2D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7309C2D0Ev,_ZTvn8_n76_N7S7309C2D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev)();
extern void ABISELECT(_ZThn528_N7S7309C2D1Ev,_ZThn264_N7S7309C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev)();
extern void ABISELECT(_ZThn528_N7S7309C2D0Ev,_ZThn264_N7S7309C2D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev)();
extern void ABISELECT(_ZThn544_N7S7309C2D1Ev,_ZThn272_N7S7309C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev)();
extern void ABISELECT(_ZThn544_N7S7309C2D0Ev,_ZThn272_N7S7309C2D0Ev)() __attribute__((weak));
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
static  VTBL_ENTRY vtc_S7309C2[] = {
  ABISELECT(528,264),
  ABISELECT(480,240),
  ABISELECT(544,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&_ZN7S7309C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7309C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7309C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v33Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v34Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v37Ev,
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-480,-240),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-480,-240),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C2D1Ev,_ZTv0_n76_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C2D0Ev,_ZTv0_n76_N7S7309C2D0Ev),
  ABISELECT(-496,-248),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C2D1Ev,_ZTvn8_n76_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C2D0Ev,_ZTvn8_n76_N7S7309C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-528,-264),
  ABISELECT(-528,-264),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  0,
  0,
  ABISELECT(-544,-272),
  ABISELECT(-544,-272),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
};
extern VTBL_ENTRY _ZTV7S7309C2[];
extern void _ZN7S7309C83v31Ev();
extern void _ZN7S7309C83v32Ev();
extern void _ZN7S7309C8D1Ev();
extern void _ZN7S7309C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C8__7S7309C2[] = {
  ABISELECT(528,264),
  ABISELECT(480,240),
  ABISELECT(544,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&_ZN7S7309C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7309C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7309C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn544_N7S7309C8D1Ev,_ZThn272_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn544_N7S7309C8D0Ev,_ZThn272_N7S7309C8D0Ev)() __attribute__((weak));
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C7__7S7309C8__7S7309C2[] = {
  0,
  0,
  ABISELECT(-544,-272),
  ABISELECT(-544,-272),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
};
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn480_N7S7309C8D1Ev,_ZThn240_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn480_N7S7309C8D0Ev,_ZThn240_N7S7309C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7309C3__7S7309C8__7S7309C2[] = {
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-480,-240),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-480,-240),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n152_N7S7309C8D1Ev,_ZTvn8_n76_N7S7309C8D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7309C8D0Ev,_ZTvn8_n76_N7S7309C8D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C57S7309C3__7S7309C8__7S7309C2[] = {
  ABISELECT(-496,-248),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C8D1Ev,_ZTvn8_n76_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C8D0Ev,_ZTvn8_n76_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn528_N7S7309C8D1Ev,_ZThn264_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn528_N7S7309C8D0Ev,_ZThn264_N7S7309C8D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C6__A1__7S7309C8__7S7309C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-528,-264),
  ABISELECT(-528,-264),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void _ZN7S7309C3D1Ev();
extern void _ZN7S7309C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C3__7S7309C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C6__A1__7S7309C3__7S7309C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
static  VTT_ENTRY vtt_S7309C2[] = {
  {&(_ZTV7S7309C2[5]),  5,106},
  {&(_tg__ZTV7S7309C8__7S7309C2[5]),  5,9},
  {&(_tg__ZTV7S7309C7__7S7309C8__7S7309C2[5]),  5,9},
  {&(_tg__ZTV7S7309C3__7S7309C8__7S7309C2[31]),  31,48},
  {&(_tg__ZTV7S7309C57S7309C3__7S7309C8__7S7309C2[2]),  2,16},
  {&(_tg__ZTV7S7309C6__A1__7S7309C8__7S7309C2[10]),  10,19},
  {&(_ZTV7S7309C2[45]),  45,106},
  {&(_ZTV7S7309C2[64]),  64,106},
  {&(_ZTV7S7309C2[88]),  88,106},
  {&(_ZTV7S7309C2[102]),  102,106},
  {&(_tg__ZTV7S7309C3__7S7309C2[3]),  3,20},
  {&(_tg__ZTV7S7309C6__A1__7S7309C3__7S7309C2[10]),  10,19},
};
extern VTBL_ENTRY _ZTI7S7309C2[];
extern  VTBL_ENTRY _ZTV7S7309C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7309C8D0Ev,_ZThn240_N7S7309C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7309C8D1Ev,_ZThn240_N7S7309C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7309C8D0Ev,_ZThn264_N7S7309C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7309C8D0Ev,_ZThn272_N7S7309C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7309C8D1Ev,_ZThn264_N7S7309C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7309C8D1Ev,_ZThn272_N7S7309C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7309C2D0Ev,_ZThn272_N7S7309C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7309C2D0Ev,_ZThn264_N7S7309C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7309C2D1Ev,_ZThn272_N7S7309C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7309C2D1Ev,_ZThn264_N7S7309C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C2D0Ev,_ZTv0_n76_N7S7309C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7309C2D0Ev,_ZThn240_N7S7309C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C2D1Ev,_ZTv0_n76_N7S7309C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7309C2D1Ev,_ZThn240_N7S7309C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7309C2 = {  "S7309C2", // class name
  bases_S7309C2, 7,
  &(vtc_S7309C2[0]), // expected_vtbl_contents
  &(vtt_S7309C2[0]), // expected_vtt_contents
  ABISELECT(568,284), // object size
  NSPAIRA(_ZTI7S7309C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7309C2),106, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7309C2),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7309C1  : S7309C2 {
  int s7309c1f0;
  virtual  ~S7309C1(); // _ZN7S7309C1D2Ev
  virtual void  v1(); // _ZN7S7309C12v1Ev
  S7309C1(); // tgen
};
//SIG(1 S7309C1) C1{ BC2{ VBC3{ BC4{ v2 v3 v4 v5 v6 v7 v8 Fi} BC5{ BC6{ vd v9 v10 v11 v12 v13 v14 v15 Fi} v16 v17 v18 v19 v20 Fp Fc} VBC6 v21 v22 v23 v24 v25 v26 v27 v28 Fi:18} VBC7{ vd v29 v30 Fp Fi} BC8{ VBC7 VBC3 v31 v32 Fp[49]} v33 v34 v35 v36 v37 Fp[7] Fi FC4} vd v1 Fi}


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

static void Test_S7309C1()
{
  extern Class_Descriptor cd_S7309C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[73];
    init_test(&cd_S7309C1, buf);
    S7309C1 *dp, &lv = *(dp=new (buf) S7309C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,288), "sizeof(S7309C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7309C1)");
    check_base_class_offset(lv, (S7309C4*)(S7309C3*), ABISELECT(488,244), "S7309C1");
    check_base_class_offset(lv, (S7309C6*)(S7309C5*)(S7309C3*), ABISELECT(504,252), "S7309C1");
    check_base_class_offset(lv, (S7309C5*)(S7309C3*), ABISELECT(504,252), "S7309C1");
    /*is_ambiguous_... S7309C3::S7309C6 */ AMB_check_base_class_offset(lv, (S7309C6*)(S7309C3*), ABISELECT(536,268), "S7309C1");
    check_base_class_offset(lv, (S7309C3*)(S7309C2*), ABISELECT(488,244), "S7309C1");
    check_base_class_offset(lv, (S7309C3*)(S7309C8*)(S7309C2*), ABISELECT(488,244), "S7309C1");
    check_base_class_offset(lv, (S7309C7*)(S7309C2*), ABISELECT(552,276), "S7309C1");
    check_base_class_offset(lv, (S7309C7*)(S7309C8*)(S7309C2*), ABISELECT(552,276), "S7309C1");
    check_base_class_offset(lv, (S7309C8*)(S7309C2*), 0, "S7309C1");
    check_base_class_offset(lv, (S7309C2*), 0, "S7309C1");
    check_field_offset(lv, s7309c1f0, ABISELECT(480,240), "S7309C1.s7309c1f0");
    test_class_info(&lv, &cd_S7309C1);
    dp->~S7309C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7309C1(Test_S7309C1, "S7309C1", ABISELECT(576,288));

#else // __cplusplus

extern void _ZN7S7309C1C1Ev();
extern void _ZN7S7309C1D2Ev();
Name_Map name_map_S7309C1[] = {
  NSPAIR(_ZN7S7309C1C1Ev),
  NSPAIR(_ZN7S7309C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7309C4;
extern VTBL_ENTRY _ZTI7S7309C4[];
extern  VTBL_ENTRY _ZTV7S7309C4[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C5;
extern VTBL_ENTRY _ZTI7S7309C5[];
extern  VTBL_ENTRY _ZTV7S7309C5[];
extern Class_Descriptor cd_S7309C6;
extern VTBL_ENTRY _ZTI7S7309C6[];
extern  VTBL_ENTRY _ZTV7S7309C6[];
extern Class_Descriptor cd_S7309C3;
extern VTBL_ENTRY _ZTI7S7309C3[];
extern  VTBL_ENTRY _ZTV7S7309C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C3[];
extern Class_Descriptor cd_S7309C7;
extern VTBL_ENTRY _ZTI7S7309C7[];
extern  VTBL_ENTRY _ZTV7S7309C7[];
extern Class_Descriptor cd_S7309C8;
extern VTBL_ENTRY _ZTI7S7309C8[];
extern  VTBL_ENTRY _ZTV7S7309C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C8[];
extern Class_Descriptor cd_S7309C2;
extern VTBL_ENTRY _ZTI7S7309C2[];
extern  VTBL_ENTRY _ZTV7S7309C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C2[];
static Base_Class bases_S7309C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7309C4,    ABISELECT(488,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7309C6,    ABISELECT(504,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
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7309C5,    ABISELECT(504,252), //bcp->offset
    63, //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_S7309C6,    ABISELECT(536,268), //bcp->offset
    79, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7309C3,    ABISELECT(488,244), //bcp->offset
    15, //bcp->virtual_function_table_offset
    31, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7309C7,    ABISELECT(552,276), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7309C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7309C2,    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 _ZTI7S7309C1[];
extern void _ZN7S7309C83v31Ev();
extern void _ZN7S7309C83v32Ev();
extern void _ZN7S7309C1D1Ev();
extern void _ZN7S7309C1D0Ev();
extern void _ZN7S7309C23v33Ev();
extern void _ZN7S7309C23v34Ev();
extern void _ZN7S7309C23v35Ev();
extern void _ZN7S7309C23v36Ev();
extern void _ZN7S7309C23v37Ev();
extern void _ZN7S7309C12v1Ev();
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void ABISELECT(_ZTv0_n152_N7S7309C1D1Ev,_ZTv0_n76_N7S7309C1D1Ev)();
extern void ABISELECT(_ZThn488_N7S7309C1D1Ev,_ZThn244_N7S7309C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7309C1D0Ev,_ZTv0_n76_N7S7309C1D0Ev)();
extern void ABISELECT(_ZThn488_N7S7309C1D0Ev,_ZThn244_N7S7309C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n152_N7S7309C1D1Ev,_ZTvn8_n76_N7S7309C1D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7309C1D0Ev,_ZTvn8_n76_N7S7309C1D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C1D1Ev,_ZTv0_n12_N7S7309C1D1Ev)();
extern void ABISELECT(_ZThn536_N7S7309C1D1Ev,_ZThn268_N7S7309C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C1D0Ev,_ZTv0_n12_N7S7309C1D0Ev)();
extern void ABISELECT(_ZThn536_N7S7309C1D0Ev,_ZThn268_N7S7309C1D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void ABISELECT(_ZTv0_n24_N7S7309C1D1Ev,_ZTv0_n12_N7S7309C1D1Ev)();
extern void ABISELECT(_ZThn552_N7S7309C1D1Ev,_ZThn276_N7S7309C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C1D0Ev,_ZTv0_n12_N7S7309C1D0Ev)();
extern void ABISELECT(_ZThn552_N7S7309C1D0Ev,_ZThn276_N7S7309C1D0Ev)() __attribute__((weak));
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
static  VTBL_ENTRY vtc_S7309C1[] = {
  ABISELECT(536,268),
  ABISELECT(488,244),
  ABISELECT(552,276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C1[0]),
  (VTBL_ENTRY)&_ZN7S7309C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7309C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7309C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v33Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v34Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v37Ev,
  (VTBL_ENTRY)&_ZN7S7309C12v1Ev,
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-488,-244),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-488,-244),
  (VTBL_ENTRY)&(_ZTI7S7309C1[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C1D1Ev,_ZTv0_n76_N7S7309C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C1D0Ev,_ZTv0_n76_N7S7309C1D0Ev),
  ABISELECT(-504,-252),
  (VTBL_ENTRY)&(_ZTI7S7309C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C1D1Ev,_ZTvn8_n76_N7S7309C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C1D0Ev,_ZTvn8_n76_N7S7309C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-268),
  ABISELECT(-536,-268),
  (VTBL_ENTRY)&(_ZTI7S7309C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C1D1Ev,_ZTv0_n12_N7S7309C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C1D0Ev,_ZTv0_n12_N7S7309C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  0,
  0,
  ABISELECT(-552,-276),
  ABISELECT(-552,-276),
  (VTBL_ENTRY)&(_ZTI7S7309C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C1D1Ev,_ZTv0_n12_N7S7309C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C1D0Ev,_ZTv0_n12_N7S7309C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
};
extern VTBL_ENTRY _ZTV7S7309C1[];
extern void _ZN7S7309C83v31Ev();
extern void _ZN7S7309C83v32Ev();
extern void _ZN7S7309C2D1Ev();
extern void _ZN7S7309C2D0Ev();
extern void _ZN7S7309C23v33Ev();
extern void _ZN7S7309C23v34Ev();
extern void _ZN7S7309C23v35Ev();
extern void _ZN7S7309C23v36Ev();
extern void _ZN7S7309C23v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C2__7S7309C1[] = {
  ABISELECT(536,268),
  ABISELECT(488,244),
  ABISELECT(552,276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&_ZN7S7309C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7309C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7309C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v33Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v34Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7309C23v37Ev,
};
extern void _ZN7S7309C83v31Ev();
extern void _ZN7S7309C83v32Ev();
extern void _ZN7S7309C8D1Ev();
extern void _ZN7S7309C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C87S7309C2__7S7309C1[] = {
  ABISELECT(536,268),
  ABISELECT(488,244),
  ABISELECT(552,276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&_ZN7S7309C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7309C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7309C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn552_N7S7309C8D1Ev,_ZThn276_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn552_N7S7309C8D0Ev,_ZThn276_N7S7309C8D0Ev)() __attribute__((weak));
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C7__7S7309C87S7309C2__7S7309C1[] = {
  0,
  0,
  ABISELECT(-552,-276),
  ABISELECT(-552,-276),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
};
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn488_N7S7309C8D1Ev,_ZThn244_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn488_N7S7309C8D0Ev,_ZThn244_N7S7309C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7309C3__7S7309C87S7309C2__7S7309C1[] = {
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-488,-244),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-488,-244),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n152_N7S7309C8D1Ev,_ZTvn8_n76_N7S7309C8D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7309C8D0Ev,_ZTvn8_n76_N7S7309C8D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C57S7309C3__7S7309C87S7309C2__7S7309C1[] = {
  ABISELECT(-504,-252),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C8D1Ev,_ZTvn8_n76_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C8D0Ev,_ZTvn8_n76_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev)();
extern void ABISELECT(_ZThn536_N7S7309C8D1Ev,_ZThn268_N7S7309C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev)();
extern void ABISELECT(_ZThn536_N7S7309C8D0Ev,_ZThn268_N7S7309C8D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C6__A1__7S7309C87S7309C2__7S7309C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-268),
  ABISELECT(-536,-268),
  (VTBL_ENTRY)&(_ZTI7S7309C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void ABISELECT(_ZTv0_n152_N7S7309C2D1Ev,_ZTv0_n76_N7S7309C2D1Ev)();
extern void ABISELECT(_ZThn488_N7S7309C2D1Ev,_ZThn244_N7S7309C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7309C2D0Ev,_ZTv0_n76_N7S7309C2D0Ev)();
extern void ABISELECT(_ZThn488_N7S7309C2D0Ev,_ZThn244_N7S7309C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7309C3__7S7309C2__7S7309C1[] = {
  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),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-488,-244),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(-488,-244),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C2D1Ev,_ZTv0_n76_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7309C2D0Ev,_ZTv0_n76_N7S7309C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n152_N7S7309C2D1Ev,_ZTvn8_n76_N7S7309C2D1Ev)();
extern void ABISELECT(_ZTvn16_n152_N7S7309C2D0Ev,_ZTvn8_n76_N7S7309C2D0Ev)();
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
extern void _ZN7S7309C53v16Ev();
extern void _ZN7S7309C53v17Ev();
extern void _ZN7S7309C53v18Ev();
extern void _ZN7S7309C53v19Ev();
extern void _ZN7S7309C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C57S7309C3__7S7309C2__7S7309C1[] = {
  ABISELECT(-504,-252),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C2D1Ev,_ZTvn8_n76_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n152_N7S7309C2D0Ev,_ZTvn8_n76_N7S7309C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7309C53v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev)();
extern void ABISELECT(_ZThn536_N7S7309C2D1Ev,_ZThn268_N7S7309C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev)();
extern void ABISELECT(_ZThn536_N7S7309C2D0Ev,_ZThn268_N7S7309C2D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C6__A1__7S7309C2__7S7309C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-536,-268),
  ABISELECT(-536,-268),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev)();
extern void ABISELECT(_ZThn552_N7S7309C2D1Ev,_ZThn276_N7S7309C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev)();
extern void ABISELECT(_ZThn552_N7S7309C2D0Ev,_ZThn276_N7S7309C2D0Ev)() __attribute__((weak));
extern void _ZN7S7309C73v29Ev();
extern void _ZN7S7309C73v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C7__7S7309C2__7S7309C1[] = {
  0,
  0,
  ABISELECT(-552,-276),
  ABISELECT(-552,-276),
  (VTBL_ENTRY)&(_ZTI7S7309C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7309C73v30Ev,
};
extern void _ZN7S7309C42v2Ev();
extern void _ZN7S7309C42v3Ev();
extern void _ZN7S7309C42v4Ev();
extern void _ZN7S7309C42v5Ev();
extern void _ZN7S7309C42v6Ev();
extern void _ZN7S7309C42v7Ev();
extern void _ZN7S7309C42v8Ev();
extern void _ZN7S7309C33v21Ev();
extern void _ZN7S7309C33v22Ev();
extern void _ZN7S7309C33v23Ev();
extern void _ZN7S7309C33v24Ev();
extern void _ZN7S7309C33v25Ev();
extern void _ZN7S7309C33v26Ev();
extern void _ZN7S7309C33v27Ev();
extern void _ZN7S7309C33v28Ev();
extern void _ZN7S7309C3D1Ev();
extern void _ZN7S7309C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C3__7S7309C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&_ZN7S7309C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7309C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v23Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v24Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v25Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v26Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v27Ev,
  (VTBL_ENTRY)&_ZN7S7309C33v28Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7309C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev)() __attribute__((weak));
extern void _ZN7S7309C62v9Ev();
extern void _ZN7S7309C63v10Ev();
extern void _ZN7S7309C63v11Ev();
extern void _ZN7S7309C63v12Ev();
extern void _ZN7S7309C63v13Ev();
extern void _ZN7S7309C63v14Ev();
extern void _ZN7S7309C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7309C6__A1__7S7309C3__7S7309C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7309C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7309C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7309C63v15Ev,
};
static  VTT_ENTRY vtt_S7309C1[] = {
  {&(_ZTV7S7309C1[5]),  5,107},
  {&(_tg__ZTV7S7309C2__7S7309C1[5]),  5,14},
  {&(_tg__ZTV7S7309C87S7309C2__7S7309C1[5]),  5,9},
  {&(_tg__ZTV7S7309C7__7S7309C87S7309C2__7S7309C1[5]),  5,9},
  {&(_tg__ZTV7S7309C3__7S7309C87S7309C2__7S7309C1[31]),  31,48},
  {&(_tg__ZTV7S7309C57S7309C3__7S7309C87S7309C2__7S7309C1[2]),  2,16},
  {&(_tg__ZTV7S7309C6__A1__7S7309C87S7309C2__7S7309C1[10]),  10,19},
  {&(_tg__ZTV7S7309C3__7S7309C2__7S7309C1[31]),  31,48},
  {&(_tg__ZTV7S7309C57S7309C3__7S7309C2__7S7309C1[2]),  2,16},
  {&(_tg__ZTV7S7309C6__A1__7S7309C2__7S7309C1[10]),  10,19},
  {&(_tg__ZTV7S7309C7__7S7309C2__7S7309C1[5]),  5,9},
  {&(_ZTV7S7309C1[46]),  46,107},
  {&(_ZTV7S7309C1[65]),  65,107},
  {&(_ZTV7S7309C1[89]),  89,107},
  {&(_ZTV7S7309C1[103]),  103,107},
  {&(_tg__ZTV7S7309C3__7S7309C1[3]),  3,20},
  {&(_tg__ZTV7S7309C6__A1__7S7309C3__7S7309C1[10]),  10,19},
};
extern VTBL_ENTRY _ZTI7S7309C1[];
extern  VTBL_ENTRY _ZTV7S7309C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7309C1[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D0Ev,_ZTv0_n12_N7S7309C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D0Ev,_ZThn24_N7S7309C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C3D1Ev,_ZTv0_n12_N7S7309C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7309C3D1Ev,_ZThn24_N7S7309C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C2D0Ev,_ZTv0_n12_N7S7309C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S7309C2D0Ev,_ZThn276_N7S7309C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7309C2D0Ev,_ZThn268_N7S7309C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C2D1Ev,_ZTv0_n12_N7S7309C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S7309C2D1Ev,_ZThn276_N7S7309C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7309C2D1Ev,_ZThn268_N7S7309C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C2D0Ev,_ZTv0_n76_N7S7309C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S7309C2D0Ev,_ZThn244_N7S7309C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C2D1Ev,_ZTv0_n76_N7S7309C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S7309C2D1Ev,_ZThn244_N7S7309C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C8D0Ev,_ZTv0_n76_N7S7309C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S7309C8D0Ev,_ZThn244_N7S7309C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C8D1Ev,_ZTv0_n76_N7S7309C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S7309C8D1Ev,_ZThn244_N7S7309C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C8D0Ev,_ZTv0_n12_N7S7309C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7309C8D0Ev,_ZThn268_N7S7309C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S7309C8D0Ev,_ZThn276_N7S7309C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C8D1Ev,_ZTv0_n12_N7S7309C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7309C8D1Ev,_ZThn268_N7S7309C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S7309C8D1Ev,_ZThn276_N7S7309C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C1D0Ev,_ZTv0_n12_N7S7309C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S7309C1D0Ev,_ZThn276_N7S7309C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7309C1D0Ev,_ZThn268_N7S7309C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7309C1D1Ev,_ZTv0_n12_N7S7309C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S7309C1D1Ev,_ZThn276_N7S7309C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7309C1D1Ev,_ZThn268_N7S7309C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C1D0Ev,_ZTv0_n76_N7S7309C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S7309C1D0Ev,_ZThn244_N7S7309C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7309C1D1Ev,_ZTv0_n76_N7S7309C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S7309C1D1Ev,_ZThn244_N7S7309C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7309C1 = {  "S7309C1", // class name
  bases_S7309C1, 8,
  &(vtc_S7309C1[0]), // expected_vtbl_contents
  &(vtt_S7309C1[0]), // expected_vtt_contents
  ABISELECT(576,288), // object size
  NSPAIRA(_ZTI7S7309C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7309C1),107, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7309C1),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8617C2  {
  ::S4224C18_nt s8617c2f0;
  ::S4224C18_nt s8617c2f1;
  ::S4224C18_nt s8617c2f2;
  ::S4224C18_nt s8617c2f3;
  ::S4224C18_nt s8617c2f4;
  void *s8617c2f5[5];
  char s8617c2f6[2];
  void *s8617c2f7[2];
  int s8617c2f8;
  virtual  ~S8617C2(); // _ZN7S8617C2D1Ev
  virtual void  v15(); // _ZN7S8617C23v15Ev
  virtual void  v16(); // _ZN7S8617C23v16Ev
  virtual void  v17(); // _ZN7S8617C23v17Ev
  virtual void  v18(); // _ZN7S8617C23v18Ev
  virtual void  v19(); // _ZN7S8617C23v19Ev
  virtual void  v20(); // _ZN7S8617C23v20Ev
  virtual void  v21(); // _ZN7S8617C23v21Ev
  virtual void  v22(); // _ZN7S8617C23v22Ev
  virtual void  v23(); // _ZN7S8617C23v23Ev
  virtual void  v24(); // _ZN7S8617C23v24Ev
  virtual void  v25(); // _ZN7S8617C23v25Ev
  virtual void  v26(); // _ZN7S8617C23v26Ev
  virtual void  v27(); // _ZN7S8617C23v27Ev
  virtual void  v28(); // _ZN7S8617C23v28Ev
  virtual void  v29(); // _ZN7S8617C23v29Ev
  virtual void  v30(); // _ZN7S8617C23v30Ev
  virtual void  v31(); // _ZN7S8617C23v31Ev
  virtual void  v32(); // _ZN7S8617C23v32Ev
  virtual void  v33(); // _ZN7S8617C23v33Ev
  virtual void  v34(); // _ZN7S8617C23v34Ev
  virtual void  v35(); // _ZN7S8617C23v35Ev
  virtual void  v36(); // _ZN7S8617C23v36Ev
  virtual void  v37(); // _ZN7S8617C23v37Ev
  virtual void  v38(); // _ZN7S8617C23v38Ev
  virtual void  v39(); // _ZN7S8617C23v39Ev
  virtual void  v40(); // _ZN7S8617C23v40Ev
  virtual void  v41(); // _ZN7S8617C23v41Ev
  S8617C2(); // tgen
};
//SIG(-1 S8617C2) 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 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC2 FC2 FC2 Fp[5] Fc[2] Fp[2] Fi}


 S8617C2 ::~S8617C2(){ note_dtor("S8617C2", this);}
void  S8617C2 ::v15(){vfunc_called(this, "_ZN7S8617C23v15Ev");}
void  S8617C2 ::v16(){vfunc_called(this, "_ZN7S8617C23v16Ev");}
void  S8617C2 ::v17(){vfunc_called(this, "_ZN7S8617C23v17Ev");}
void  S8617C2 ::v18(){vfunc_called(this, "_ZN7S8617C23v18Ev");}
void  S8617C2 ::v19(){vfunc_called(this, "_ZN7S8617C23v19Ev");}
void  S8617C2 ::v20(){vfunc_called(this, "_ZN7S8617C23v20Ev");}
void  S8617C2 ::v21(){vfunc_called(this, "_ZN7S8617C23v21Ev");}
void  S8617C2 ::v22(){vfunc_called(this, "_ZN7S8617C23v22Ev");}
void  S8617C2 ::v23(){vfunc_called(this, "_ZN7S8617C23v23Ev");}
void  S8617C2 ::v24(){vfunc_called(this, "_ZN7S8617C23v24Ev");}
void  S8617C2 ::v25(){vfunc_called(this, "_ZN7S8617C23v25Ev");}
void  S8617C2 ::v26(){vfunc_called(this, "_ZN7S8617C23v26Ev");}
void  S8617C2 ::v27(){vfunc_called(this, "_ZN7S8617C23v27Ev");}
void  S8617C2 ::v28(){vfunc_called(this, "_ZN7S8617C23v28Ev");}
void  S8617C2 ::v29(){vfunc_called(this, "_ZN7S8617C23v29Ev");}
void  S8617C2 ::v30(){vfunc_called(this, "_ZN7S8617C23v30Ev");}
void  S8617C2 ::v31(){vfunc_called(this, "_ZN7S8617C23v31Ev");}
void  S8617C2 ::v32(){vfunc_called(this, "_ZN7S8617C23v32Ev");}
void  S8617C2 ::v33(){vfunc_called(this, "_ZN7S8617C23v33Ev");}
void  S8617C2 ::v34(){vfunc_called(this, "_ZN7S8617C23v34Ev");}
void  S8617C2 ::v35(){vfunc_called(this, "_ZN7S8617C23v35Ev");}
void  S8617C2 ::v36(){vfunc_called(this, "_ZN7S8617C23v36Ev");}
void  S8617C2 ::v37(){vfunc_called(this, "_ZN7S8617C23v37Ev");}
void  S8617C2 ::v38(){vfunc_called(this, "_ZN7S8617C23v38Ev");}
void  S8617C2 ::v39(){vfunc_called(this, "_ZN7S8617C23v39Ev");}
void  S8617C2 ::v40(){vfunc_called(this, "_ZN7S8617C23v40Ev");}
void  S8617C2 ::v41(){vfunc_called(this, "_ZN7S8617C23v41Ev");}
S8617C2 ::S8617C2(){ note_ctor("S8617C2", this);} // tgen

static void Test_S8617C2()
{
  extern Class_Descriptor cd_S8617C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S8617C2, buf);
    S8617C2 *dp, &lv = *(dp=new (buf) S8617C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S8617C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8617C2)");
    check_field_offset(lv, s8617c2f0, ABISELECT(8,4), "S8617C2.s8617c2f0");
    check_field_offset(lv, s8617c2f1, ABISELECT(32,20), "S8617C2.s8617c2f1");
    check_field_offset(lv, s8617c2f2, ABISELECT(56,36), "S8617C2.s8617c2f2");
    check_field_offset(lv, s8617c2f3, ABISELECT(80,52), "S8617C2.s8617c2f3");
    check_field_offset(lv, s8617c2f4, ABISELECT(104,68), "S8617C2.s8617c2f4");
    check_field_offset(lv, s8617c2f5, ABISELECT(128,84), "S8617C2.s8617c2f5");
    check_field_offset(lv, s8617c2f6, ABISELECT(168,104), "S8617C2.s8617c2f6");
    check_field_offset(lv, s8617c2f7, ABISELECT(176,108), "S8617C2.s8617c2f7");
    check_field_offset(lv, s8617c2f8, ABISELECT(192,116), "S8617C2.s8617c2f8");
    test_class_info(&lv, &cd_S8617C2);
    dp->~S8617C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8617C2(Test_S8617C2, "S8617C2", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN7S8617C2C1Ev();
extern void _ZN7S8617C2D1Ev();
Name_Map name_map_S8617C2[] = {
  NSPAIR(_ZN7S8617C2C1Ev),
  NSPAIR(_ZN7S8617C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8617C2[];
extern void _ZN7S8617C2D1Ev();
extern void _ZN7S8617C2D0Ev();
extern void _ZN7S8617C23v15Ev();
extern void _ZN7S8617C23v16Ev();
extern void _ZN7S8617C23v17Ev();
extern void _ZN7S8617C23v18Ev();
extern void _ZN7S8617C23v19Ev();
extern void _ZN7S8617C23v20Ev();
extern void _ZN7S8617C23v21Ev();
extern void _ZN7S8617C23v22Ev();
extern void _ZN7S8617C23v23Ev();
extern void _ZN7S8617C23v24Ev();
extern void _ZN7S8617C23v25Ev();
extern void _ZN7S8617C23v26Ev();
extern void _ZN7S8617C23v27Ev();
extern void _ZN7S8617C23v28Ev();
extern void _ZN7S8617C23v29Ev();
extern void _ZN7S8617C23v30Ev();
extern void _ZN7S8617C23v31Ev();
extern void _ZN7S8617C23v32Ev();
extern void _ZN7S8617C23v33Ev();
extern void _ZN7S8617C23v34Ev();
extern void _ZN7S8617C23v35Ev();
extern void _ZN7S8617C23v36Ev();
extern void _ZN7S8617C23v37Ev();
extern void _ZN7S8617C23v38Ev();
extern void _ZN7S8617C23v39Ev();
extern void _ZN7S8617C23v40Ev();
extern void _ZN7S8617C23v41Ev();
static  VTBL_ENTRY vtc_S8617C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8617C2[0]),
  (VTBL_ENTRY)&_ZN7S8617C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8617C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v35Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v36Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v37Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v38Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v39Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v40Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v41Ev,
};
extern VTBL_ENTRY _ZTI7S8617C2[];
extern  VTBL_ENTRY _ZTV7S8617C2[];
Class_Descriptor cd_S8617C2 = {  "S8617C2", // class name
  0,0,//no base classes
  &(vtc_S8617C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI7S8617C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8617C2),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8617C1  : S8617C2 {
  void *s8617c1f0[2];
  int s8617c1f1;
  virtual  ~S8617C1(); // _ZN7S8617C1D1Ev
  virtual void  v1(); // _ZN7S8617C12v1Ev
  virtual void  v2(); // _ZN7S8617C12v2Ev
  virtual void  v3(); // _ZN7S8617C12v3Ev
  virtual void  v4(); // _ZN7S8617C12v4Ev
  virtual void  v5(); // _ZN7S8617C12v5Ev
  virtual void  v6(); // _ZN7S8617C12v6Ev
  virtual void  v7(); // _ZN7S8617C12v7Ev
  virtual void  v8(); // _ZN7S8617C12v8Ev
  virtual void  v9(); // _ZN7S8617C12v9Ev
  virtual void  v10(); // _ZN7S8617C13v10Ev
  virtual void  v11(); // _ZN7S8617C13v11Ev
  virtual void  v12(); // _ZN7S8617C13v12Ev
  virtual void  v13(); // _ZN7S8617C13v13Ev
  virtual void  v14(); // _ZN7S8617C13v14Ev
  S8617C1(); // tgen
};
//SIG(1 S8617C1) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} FC3 FC3 FC3 FC3 Fp[5] Fc[2] Fp[2] Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp[2] Fi}


 S8617C1 ::~S8617C1(){ note_dtor("S8617C1", this);}
void  S8617C1 ::v1(){vfunc_called(this, "_ZN7S8617C12v1Ev");}
void  S8617C1 ::v2(){vfunc_called(this, "_ZN7S8617C12v2Ev");}
void  S8617C1 ::v3(){vfunc_called(this, "_ZN7S8617C12v3Ev");}
void  S8617C1 ::v4(){vfunc_called(this, "_ZN7S8617C12v4Ev");}
void  S8617C1 ::v5(){vfunc_called(this, "_ZN7S8617C12v5Ev");}
void  S8617C1 ::v6(){vfunc_called(this, "_ZN7S8617C12v6Ev");}
void  S8617C1 ::v7(){vfunc_called(this, "_ZN7S8617C12v7Ev");}
void  S8617C1 ::v8(){vfunc_called(this, "_ZN7S8617C12v8Ev");}
void  S8617C1 ::v9(){vfunc_called(this, "_ZN7S8617C12v9Ev");}
void  S8617C1 ::v10(){vfunc_called(this, "_ZN7S8617C13v10Ev");}
void  S8617C1 ::v11(){vfunc_called(this, "_ZN7S8617C13v11Ev");}
void  S8617C1 ::v12(){vfunc_called(this, "_ZN7S8617C13v12Ev");}
void  S8617C1 ::v13(){vfunc_called(this, "_ZN7S8617C13v13Ev");}
void  S8617C1 ::v14(){vfunc_called(this, "_ZN7S8617C13v14Ev");}
S8617C1 ::S8617C1(){ note_ctor("S8617C1", this);} // tgen

static void Test_S8617C1()
{
  extern Class_Descriptor cd_S8617C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,34)];
    init_test(&cd_S8617C1, buf);
    S8617C1 *dp, &lv = *(dp=new (buf) S8617C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S8617C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8617C1)");
    check_base_class_offset(lv, (S8617C2*), 0, "S8617C1");
    check_field_offset(lv, s8617c1f0, ABISELECT(200,120), "S8617C1.s8617c1f0");
    check_field_offset(lv, s8617c1f1, ABISELECT(216,128), "S8617C1.s8617c1f1");
    test_class_info(&lv, &cd_S8617C1);
    dp->~S8617C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8617C1(Test_S8617C1, "S8617C1", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S8617C1C1Ev();
extern void _ZN7S8617C1D1Ev();
Name_Map name_map_S8617C1[] = {
  NSPAIR(_ZN7S8617C1C1Ev),
  NSPAIR(_ZN7S8617C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8617C2;
extern VTBL_ENTRY _ZTI7S8617C2[];
extern  VTBL_ENTRY _ZTV7S8617C2[];
static Base_Class bases_S8617C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8617C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8617C1[];
extern void _ZN7S8617C1D1Ev();
extern void _ZN7S8617C1D0Ev();
extern void _ZN7S8617C23v15Ev();
extern void _ZN7S8617C23v16Ev();
extern void _ZN7S8617C23v17Ev();
extern void _ZN7S8617C23v18Ev();
extern void _ZN7S8617C23v19Ev();
extern void _ZN7S8617C23v20Ev();
extern void _ZN7S8617C23v21Ev();
extern void _ZN7S8617C23v22Ev();
extern void _ZN7S8617C23v23Ev();
extern void _ZN7S8617C23v24Ev();
extern void _ZN7S8617C23v25Ev();
extern void _ZN7S8617C23v26Ev();
extern void _ZN7S8617C23v27Ev();
extern void _ZN7S8617C23v28Ev();
extern void _ZN7S8617C23v29Ev();
extern void _ZN7S8617C23v30Ev();
extern void _ZN7S8617C23v31Ev();
extern void _ZN7S8617C23v32Ev();
extern void _ZN7S8617C23v33Ev();
extern void _ZN7S8617C23v34Ev();
extern void _ZN7S8617C23v35Ev();
extern void _ZN7S8617C23v36Ev();
extern void _ZN7S8617C23v37Ev();
extern void _ZN7S8617C23v38Ev();
extern void _ZN7S8617C23v39Ev();
extern void _ZN7S8617C23v40Ev();
extern void _ZN7S8617C23v41Ev();
extern void _ZN7S8617C12v1Ev();
extern void _ZN7S8617C12v2Ev();
extern void _ZN7S8617C12v3Ev();
extern void _ZN7S8617C12v4Ev();
extern void _ZN7S8617C12v5Ev();
extern void _ZN7S8617C12v6Ev();
extern void _ZN7S8617C12v7Ev();
extern void _ZN7S8617C12v8Ev();
extern void _ZN7S8617C12v9Ev();
extern void _ZN7S8617C13v10Ev();
extern void _ZN7S8617C13v11Ev();
extern void _ZN7S8617C13v12Ev();
extern void _ZN7S8617C13v13Ev();
extern void _ZN7S8617C13v14Ev();
static  VTBL_ENTRY vtc_S8617C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8617C1[0]),
  (VTBL_ENTRY)&_ZN7S8617C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8617C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v35Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v36Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v37Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v38Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v39Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v40Ev,
  (VTBL_ENTRY)&_ZN7S8617C23v41Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8617C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8617C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8617C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8617C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8617C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8617C13v14Ev,
};
extern VTBL_ENTRY _ZTI7S8617C1[];
extern  VTBL_ENTRY _ZTV7S8617C1[];
Class_Descriptor cd_S8617C1 = {  "S8617C1", // class name
  bases_S8617C1, 1,
  &(vtc_S8617C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S8617C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8617C1),45, //virtual function table var
  2, // 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  S1227C3_nt  : S4224C37 {
  virtual  ~S1227C3_nt(); // _ZN10S1227C3_ntD1Ev
  virtual void  v4(); // _ZN10S1227C3_nt2v4Ev
  S1227C3_nt(); // tgen
};
//SIG(-1 S1227C3_nt) C1{ BC2{ m} vd v1}


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

//skip512 S1227C3_nt

#else // __cplusplus

extern void _ZN10S1227C3_ntC1Ev();
extern void _ZN10S1227C3_ntD1Ev();
Name_Map name_map_S1227C3_nt[] = {
  NSPAIR(_ZN10S1227C3_ntC1Ev),
  NSPAIR(_ZN10S1227C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
static Base_Class bases_S1227C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1227C3_nt[];
extern void _ZN10S1227C3_ntD1Ev();
extern void _ZN10S1227C3_ntD0Ev();
extern void _ZN10S1227C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S1227C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1227C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1227C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1227C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1227C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S1227C3_nt[];
VTBL_ENTRY *P__ZTI10S1227C3_nt = _ZTI10S1227C3_nt; 
extern  VTBL_ENTRY _ZTV10S1227C3_nt[];
Class_Descriptor cd_S1227C3_nt = {  "S1227C3_nt", // class name
  bases_S1227C3_nt, 1,
  &(vtc_S1227C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1227C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1227C3_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  S1227C6_nt  : S1227C3_nt {
  virtual  ~S1227C6_nt(); // _ZN10S1227C6_ntD1Ev
  virtual void  v29(); // _ZN10S1227C6_nt3v29Ev
  virtual void  v30(); // _ZN10S1227C6_nt3v30Ev
  virtual void  v31(); // _ZN10S1227C6_nt3v31Ev
  virtual void  v32(); // _ZN10S1227C6_nt3v32Ev
  virtual void  v33(); // _ZN10S1227C6_nt3v33Ev
  virtual void  v34(); // _ZN10S1227C6_nt3v34Ev
  virtual void  v35(); // _ZN10S1227C6_nt3v35Ev
  virtual void  v36(); // _ZN10S1227C6_nt3v36Ev
  S1227C6_nt(); // tgen
};
//SIG(-1 S1227C6_nt) C1{ BC2{ BC3{ m} vd v9} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1227C6_nt ::~S1227C6_nt(){ note_dtor("S1227C6_nt", this);}
void  S1227C6_nt ::v29(){vfunc_called(this, "_ZN10S1227C6_nt3v29Ev");}
void  S1227C6_nt ::v30(){vfunc_called(this, "_ZN10S1227C6_nt3v30Ev");}
void  S1227C6_nt ::v31(){vfunc_called(this, "_ZN10S1227C6_nt3v31Ev");}
void  S1227C6_nt ::v32(){vfunc_called(this, "_ZN10S1227C6_nt3v32Ev");}
void  S1227C6_nt ::v33(){vfunc_called(this, "_ZN10S1227C6_nt3v33Ev");}
void  S1227C6_nt ::v34(){vfunc_called(this, "_ZN10S1227C6_nt3v34Ev");}
void  S1227C6_nt ::v35(){vfunc_called(this, "_ZN10S1227C6_nt3v35Ev");}
void  S1227C6_nt ::v36(){vfunc_called(this, "_ZN10S1227C6_nt3v36Ev");}
S1227C6_nt ::S1227C6_nt(){ note_ctor("S1227C6_nt", this);} // tgen

//skip512 S1227C6_nt

#else // __cplusplus

extern void _ZN10S1227C6_ntC1Ev();
extern void _ZN10S1227C6_ntD1Ev();
Name_Map name_map_S1227C6_nt[] = {
  NSPAIR(_ZN10S1227C6_ntC1Ev),
  NSPAIR(_ZN10S1227C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
extern Class_Descriptor cd_S1227C3_nt;
extern VTBL_ENTRY _ZTI10S1227C3_nt[];
extern  VTBL_ENTRY _ZTV10S1227C3_nt[];
static Base_Class bases_S1227C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1227C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1227C6_nt[];
extern void _ZN10S1227C6_ntD1Ev();
extern void _ZN10S1227C6_ntD0Ev();
extern void _ZN10S1227C3_nt2v4Ev();
extern void _ZN10S1227C6_nt3v29Ev();
extern void _ZN10S1227C6_nt3v30Ev();
extern void _ZN10S1227C6_nt3v31Ev();
extern void _ZN10S1227C6_nt3v32Ev();
extern void _ZN10S1227C6_nt3v33Ev();
extern void _ZN10S1227C6_nt3v34Ev();
extern void _ZN10S1227C6_nt3v35Ev();
extern void _ZN10S1227C6_nt3v36Ev();
static  VTBL_ENTRY vtc_S1227C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1227C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1227C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1227C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v36Ev,
};
extern VTBL_ENTRY _ZTI10S1227C6_nt[];
VTBL_ENTRY *P__ZTI10S1227C6_nt = _ZTI10S1227C6_nt; 
extern  VTBL_ENTRY _ZTV10S1227C6_nt[];
Class_Descriptor cd_S1227C6_nt = {  "S1227C6_nt", // class name
  bases_S1227C6_nt, 2,
  &(vtc_S1227C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1227C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1227C6_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  S1227C8_nt  {
  short s1227c8f0;
  int s1227c8f1;
  void *s1227c8f2;
  int s1227c8f3;
};
//SIG(1 S1227C8_nt) C1{ Fs Fi Fp Fi}



//skip512 S1227C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S1227C7_nt  {
  short s1227c7f0[13];
  ::S1227C8_nt s1227c7f1;
};
//SIG(1 S1227C7_nt) U1{ Fs[13] FC2{ Fs Fi Fp Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S1227C5_nt  : S1227C6_nt {
  char s1227c5f0[2];
  ::S1227C7_nt s1227c5f1;
  virtual  ~S1227C5_nt(); // _ZN10S1227C5_ntD1Ev
  virtual void  v20(); // _ZN10S1227C5_nt3v20Ev
  virtual void  v21(); // _ZN10S1227C5_nt3v21Ev
  virtual void  v22(); // _ZN10S1227C5_nt3v22Ev
  virtual void  v23(); // _ZN10S1227C5_nt3v23Ev
  virtual void  v24(); // _ZN10S1227C5_nt3v24Ev
  virtual void  v25(); // _ZN10S1227C5_nt3v25Ev
  virtual void  v26(); // _ZN10S1227C5_nt3v26Ev
  virtual void  v27(); // _ZN10S1227C5_nt3v27Ev
  virtual void  v28(); // _ZN10S1227C5_nt3v28Ev
  S1227C5_nt(); // tgen
};
//SIG(-1 S1227C5_nt) C1{ BC2{ BC3{ BC4{ m} vd v10} vd v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fc[2] FU5{ Fs[13] FC6{ Fs Fi Fp Fi}}}


 S1227C5_nt ::~S1227C5_nt(){ note_dtor("S1227C5_nt", this);}
void  S1227C5_nt ::v20(){vfunc_called(this, "_ZN10S1227C5_nt3v20Ev");}
void  S1227C5_nt ::v21(){vfunc_called(this, "_ZN10S1227C5_nt3v21Ev");}
void  S1227C5_nt ::v22(){vfunc_called(this, "_ZN10S1227C5_nt3v22Ev");}
void  S1227C5_nt ::v23(){vfunc_called(this, "_ZN10S1227C5_nt3v23Ev");}
void  S1227C5_nt ::v24(){vfunc_called(this, "_ZN10S1227C5_nt3v24Ev");}
void  S1227C5_nt ::v25(){vfunc_called(this, "_ZN10S1227C5_nt3v25Ev");}
void  S1227C5_nt ::v26(){vfunc_called(this, "_ZN10S1227C5_nt3v26Ev");}
void  S1227C5_nt ::v27(){vfunc_called(this, "_ZN10S1227C5_nt3v27Ev");}
void  S1227C5_nt ::v28(){vfunc_called(this, "_ZN10S1227C5_nt3v28Ev");}
S1227C5_nt ::S1227C5_nt(){ note_ctor("S1227C5_nt", this);} // tgen

//skip512 S1227C5_nt

#else // __cplusplus

extern void _ZN10S1227C5_ntC1Ev();
extern void _ZN10S1227C5_ntD1Ev();
Name_Map name_map_S1227C5_nt[] = {
  NSPAIR(_ZN10S1227C5_ntC1Ev),
  NSPAIR(_ZN10S1227C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
extern Class_Descriptor cd_S1227C3_nt;
extern VTBL_ENTRY _ZTI10S1227C3_nt[];
extern  VTBL_ENTRY _ZTV10S1227C3_nt[];
extern Class_Descriptor cd_S1227C6_nt;
extern VTBL_ENTRY _ZTI10S1227C6_nt[];
extern  VTBL_ENTRY _ZTV10S1227C6_nt[];
static Base_Class bases_S1227C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1227C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1227C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1227C5_nt[];
extern void _ZN10S1227C5_ntD1Ev();
extern void _ZN10S1227C5_ntD0Ev();
extern void _ZN10S1227C3_nt2v4Ev();
extern void _ZN10S1227C6_nt3v29Ev();
extern void _ZN10S1227C6_nt3v30Ev();
extern void _ZN10S1227C6_nt3v31Ev();
extern void _ZN10S1227C6_nt3v32Ev();
extern void _ZN10S1227C6_nt3v33Ev();
extern void _ZN10S1227C6_nt3v34Ev();
extern void _ZN10S1227C6_nt3v35Ev();
extern void _ZN10S1227C6_nt3v36Ev();
extern void _ZN10S1227C5_nt3v20Ev();
extern void _ZN10S1227C5_nt3v21Ev();
extern void _ZN10S1227C5_nt3v22Ev();
extern void _ZN10S1227C5_nt3v23Ev();
extern void _ZN10S1227C5_nt3v24Ev();
extern void _ZN10S1227C5_nt3v25Ev();
extern void _ZN10S1227C5_nt3v26Ev();
extern void _ZN10S1227C5_nt3v27Ev();
extern void _ZN10S1227C5_nt3v28Ev();
static  VTBL_ENTRY vtc_S1227C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1227C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S1227C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1227C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1227C6_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1227C5_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S1227C5_nt[];
VTBL_ENTRY *P__ZTI10S1227C5_nt = _ZTI10S1227C5_nt; 
extern  VTBL_ENTRY _ZTV10S1227C5_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1227C2_nt  : S1227C3_nt {
  ::S1227C5_nt s1227c2f0;
  void *s1227c2f1;
  int s1227c2f2;
  virtual  ~S1227C2_nt(); // _ZN10S1227C2_ntD1Ev
  virtual void  v5(); // _ZN10S1227C2_nt2v5Ev
  virtual void  v6(); // _ZN10S1227C2_nt2v6Ev
  virtual void  v7(); // _ZN10S1227C2_nt2v7Ev
  virtual void  v8(); // _ZN10S1227C2_nt2v8Ev
  virtual void  v9(); // _ZN10S1227C2_nt2v9Ev
  virtual void  v10(); // _ZN10S1227C2_nt3v10Ev
  virtual void  v11(); // _ZN10S1227C2_nt3v11Ev
  virtual void  v12(); // _ZN10S1227C2_nt3v12Ev
  virtual void  v13(); // _ZN10S1227C2_nt3v13Ev
  virtual void  v14(); // _ZN10S1227C2_nt3v14Ev
  virtual void  v15(); // _ZN10S1227C2_nt3v15Ev
  virtual void  v16(); // _ZN10S1227C2_nt3v16Ev
  virtual void  v17(); // _ZN10S1227C2_nt3v17Ev
  virtual void  v18(); // _ZN10S1227C2_nt3v18Ev
  virtual void  v19(); // _ZN10S1227C2_nt3v19Ev
  S1227C2_nt(); // tgen
};
//SIG(-1 S1227C2_nt) C1{ BC2{ BC3{ m} vd v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC4{ BC5{ BC2 vd v26 v27 v28 v29 v30 v31 v32 v33} vd v17 v18 v19 v20 v21 v22 v23 v24 v25 Fc[2] FU6{ Fs[13] FC7{ Fs Fi Fp Fi}}} Fp Fi}


 S1227C2_nt ::~S1227C2_nt(){ note_dtor("S1227C2_nt", this);}
void  S1227C2_nt ::v5(){vfunc_called(this, "_ZN10S1227C2_nt2v5Ev");}
void  S1227C2_nt ::v6(){vfunc_called(this, "_ZN10S1227C2_nt2v6Ev");}
void  S1227C2_nt ::v7(){vfunc_called(this, "_ZN10S1227C2_nt2v7Ev");}
void  S1227C2_nt ::v8(){vfunc_called(this, "_ZN10S1227C2_nt2v8Ev");}
void  S1227C2_nt ::v9(){vfunc_called(this, "_ZN10S1227C2_nt2v9Ev");}
void  S1227C2_nt ::v10(){vfunc_called(this, "_ZN10S1227C2_nt3v10Ev");}
void  S1227C2_nt ::v11(){vfunc_called(this, "_ZN10S1227C2_nt3v11Ev");}
void  S1227C2_nt ::v12(){vfunc_called(this, "_ZN10S1227C2_nt3v12Ev");}
void  S1227C2_nt ::v13(){vfunc_called(this, "_ZN10S1227C2_nt3v13Ev");}
void  S1227C2_nt ::v14(){vfunc_called(this, "_ZN10S1227C2_nt3v14Ev");}
void  S1227C2_nt ::v15(){vfunc_called(this, "_ZN10S1227C2_nt3v15Ev");}
void  S1227C2_nt ::v16(){vfunc_called(this, "_ZN10S1227C2_nt3v16Ev");}
void  S1227C2_nt ::v17(){vfunc_called(this, "_ZN10S1227C2_nt3v17Ev");}
void  S1227C2_nt ::v18(){vfunc_called(this, "_ZN10S1227C2_nt3v18Ev");}
void  S1227C2_nt ::v19(){vfunc_called(this, "_ZN10S1227C2_nt3v19Ev");}
S1227C2_nt ::S1227C2_nt(){ note_ctor("S1227C2_nt", this);} // tgen

//skip512 S1227C2_nt

#else // __cplusplus

extern void _ZN10S1227C2_ntC1Ev();
extern void _ZN10S1227C2_ntD1Ev();
Name_Map name_map_S1227C2_nt[] = {
  NSPAIR(_ZN10S1227C2_ntC1Ev),
  NSPAIR(_ZN10S1227C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
extern Class_Descriptor cd_S1227C3_nt;
extern VTBL_ENTRY _ZTI10S1227C3_nt[];
extern  VTBL_ENTRY _ZTV10S1227C3_nt[];
static Base_Class bases_S1227C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1227C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1227C2_nt[];
extern void _ZN10S1227C2_ntD1Ev();
extern void _ZN10S1227C2_ntD0Ev();
extern void _ZN10S1227C3_nt2v4Ev();
extern void _ZN10S1227C2_nt2v5Ev();
extern void _ZN10S1227C2_nt2v6Ev();
extern void _ZN10S1227C2_nt2v7Ev();
extern void _ZN10S1227C2_nt2v8Ev();
extern void _ZN10S1227C2_nt2v9Ev();
extern void _ZN10S1227C2_nt3v10Ev();
extern void _ZN10S1227C2_nt3v11Ev();
extern void _ZN10S1227C2_nt3v12Ev();
extern void _ZN10S1227C2_nt3v13Ev();
extern void _ZN10S1227C2_nt3v14Ev();
extern void _ZN10S1227C2_nt3v15Ev();
extern void _ZN10S1227C2_nt3v16Ev();
extern void _ZN10S1227C2_nt3v17Ev();
extern void _ZN10S1227C2_nt3v18Ev();
extern void _ZN10S1227C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S1227C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1227C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1227C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1227C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S1227C2_nt[];
VTBL_ENTRY *P__ZTI10S1227C2_nt = _ZTI10S1227C2_nt; 
extern  VTBL_ENTRY _ZTV10S1227C2_nt[];
Class_Descriptor cd_S1227C2_nt = {  "S1227C2_nt", // class name
  bases_S1227C2_nt, 2,
  &(vtc_S1227C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI10S1227C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1227C2_nt),20, //virtual function table var
  2, // 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  S1227C1  : S1227C2_nt {
  virtual  ~S1227C1(); // _ZN7S1227C1D1Ev
  virtual void  v1(); // _ZN7S1227C12v1Ev
  virtual void  v2(); // _ZN7S1227C12v2Ev
  virtual void  v3(); // _ZN7S1227C12v3Ev
  S1227C1(); // tgen
};
//SIG(1 S1227C1) C1{ BC2{ BC3{ BC4{ m} vd v4} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC5{ BC6{ BC3 vd v29 v30 v31 v32 v33 v34 v35 v36} vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fc[2] FU7{ Fs[13] FC8{ Fs Fi Fp Fi}}} Fp Fi} vd v1 v2 v3}


 S1227C1 ::~S1227C1(){ note_dtor("S1227C1", this);}
void  S1227C1 ::v1(){vfunc_called(this, "_ZN7S1227C12v1Ev");}
void  S1227C1 ::v2(){vfunc_called(this, "_ZN7S1227C12v2Ev");}
void  S1227C1 ::v3(){vfunc_called(this, "_ZN7S1227C12v3Ev");}
S1227C1 ::S1227C1(){ note_ctor("S1227C1", this);} // tgen

static void Test_S1227C1()
{
  extern Class_Descriptor cd_S1227C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S1227C1, buf);
    S1227C1 *dp, &lv = *(dp=new (buf) S1227C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S1227C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1227C1)");
    check_base_class_offset(lv, (S4224C37*)(S1227C3_nt*)(S1227C2_nt*), 0, "S1227C1");
    check_base_class_offset(lv, (S1227C3_nt*)(S1227C2_nt*), 0, "S1227C1");
    check_base_class_offset(lv, (S1227C2_nt*), 0, "S1227C1");
    test_class_info(&lv, &cd_S1227C1);
    dp->~S1227C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1227C1(Test_S1227C1, "S1227C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S1227C1C1Ev();
extern void _ZN7S1227C1D1Ev();
Name_Map name_map_S1227C1[] = {
  NSPAIR(_ZN7S1227C1C1Ev),
  NSPAIR(_ZN7S1227C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4224C37;
extern VTBL_ENTRY _ZTI8S4224C37[];
extern Class_Descriptor cd_S1227C3_nt;
extern VTBL_ENTRY _ZTI10S1227C3_nt[];
extern  VTBL_ENTRY _ZTV10S1227C3_nt[];
extern Class_Descriptor cd_S1227C2_nt;
extern VTBL_ENTRY _ZTI10S1227C2_nt[];
extern  VTBL_ENTRY _ZTV10S1227C2_nt[];
static Base_Class bases_S1227C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4224C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1227C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1227C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1227C1[];
extern void _ZN7S1227C1D1Ev();
extern void _ZN7S1227C1D0Ev();
extern void _ZN10S1227C3_nt2v4Ev();
extern void _ZN10S1227C2_nt2v5Ev();
extern void _ZN10S1227C2_nt2v6Ev();
extern void _ZN10S1227C2_nt2v7Ev();
extern void _ZN10S1227C2_nt2v8Ev();
extern void _ZN10S1227C2_nt2v9Ev();
extern void _ZN10S1227C2_nt3v10Ev();
extern void _ZN10S1227C2_nt3v11Ev();
extern void _ZN10S1227C2_nt3v12Ev();
extern void _ZN10S1227C2_nt3v13Ev();
extern void _ZN10S1227C2_nt3v14Ev();
extern void _ZN10S1227C2_nt3v15Ev();
extern void _ZN10S1227C2_nt3v16Ev();
extern void _ZN10S1227C2_nt3v17Ev();
extern void _ZN10S1227C2_nt3v18Ev();
extern void _ZN10S1227C2_nt3v19Ev();
extern void _ZN7S1227C12v1Ev();
extern void _ZN7S1227C12v2Ev();
extern void _ZN7S1227C12v3Ev();
static  VTBL_ENTRY vtc_S1227C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1227C1[0]),
  (VTBL_ENTRY)&_ZN7S1227C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1227C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1227C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1227C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S1227C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1227C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1227C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1227C1[];
extern  VTBL_ENTRY _ZTV7S1227C1[];
Class_Descriptor cd_S1227C1 = {  "S1227C1", // class name
  bases_S1227C1, 3,
  &(vtc_S1227C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S1227C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1227C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7516C3  {
  __tsi64 s7516c3f0[10];
  void *s7516c3f1;
  __tsi64 s7516c3f2;
  virtual void  v1(); // _ZN7S7516C32v1Ev
  virtual void  v2(); // _ZN7S7516C32v2Ev
  virtual void  v3(); // _ZN7S7516C32v3Ev
  virtual void  v4(); // _ZN7S7516C32v4Ev
  virtual void  v5(); // _ZN7S7516C32v5Ev
  virtual void  v6(); // _ZN7S7516C32v6Ev
  virtual void  v7(); // _ZN7S7516C32v7Ev
  ~S7516C3(); // tgen
  S7516C3(); // tgen
};
//SIG(-1 S7516C3) C1{ v1 v2 v3 v4 v5 v6 v7 FL[10] Fp FL}


void  S7516C3 ::v1(){vfunc_called(this, "_ZN7S7516C32v1Ev");}
void  S7516C3 ::v2(){vfunc_called(this, "_ZN7S7516C32v2Ev");}
void  S7516C3 ::v3(){vfunc_called(this, "_ZN7S7516C32v3Ev");}
void  S7516C3 ::v4(){vfunc_called(this, "_ZN7S7516C32v4Ev");}
void  S7516C3 ::v5(){vfunc_called(this, "_ZN7S7516C32v5Ev");}
void  S7516C3 ::v6(){vfunc_called(this, "_ZN7S7516C32v6Ev");}
void  S7516C3 ::v7(){vfunc_called(this, "_ZN7S7516C32v7Ev");}
S7516C3 ::~S7516C3(){ note_dtor("S7516C3", this);} // tgen
S7516C3 ::S7516C3(){ note_ctor("S7516C3", this);} // tgen

static void Test_S7516C3()
{
  extern Class_Descriptor cd_S7516C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,25)];
    init_test(&cd_S7516C3, buf);
    S7516C3 *dp, &lv = *(dp=new (buf) S7516C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,96), "sizeof(S7516C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C3)");
    check_field_offset(lv, s7516c3f0, ABISELECT(8,4), "S7516C3.s7516c3f0");
    check_field_offset(lv, s7516c3f1, ABISELECT(88,84), "S7516C3.s7516c3f1");
    check_field_offset(lv, s7516c3f2, ABISELECT(96,88), "S7516C3.s7516c3f2");
    test_class_info(&lv, &cd_S7516C3);
    dp->~S7516C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C3(Test_S7516C3, "S7516C3", ABISELECT(104,96));

#else // __cplusplus

extern void _ZN7S7516C3C1Ev();
extern void _ZN7S7516C3D1Ev();
Name_Map name_map_S7516C3[] = {
  NSPAIR(_ZN7S7516C3C1Ev),
  NSPAIR(_ZN7S7516C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7516C3[];
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
static  VTBL_ENTRY vtc_S7516C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C3[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7516C3[];
extern  VTBL_ENTRY _ZTV7S7516C3[];
Class_Descriptor cd_S7516C3 = {  "S7516C3", // class name
  0,0,//no base classes
  &(vtc_S7516C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,96), // object size
  NSPAIRA(_ZTI7S7516C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7516C3),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  S7516C6  {
  virtual void  v8(); // _ZN7S7516C62v8Ev
  virtual void  v9(); // _ZN7S7516C62v9Ev
  ~S7516C6(); // tgen
  S7516C6(); // tgen
};
//SIG(-1 S7516C6) C1{ v1 v2}


void  S7516C6 ::v8(){vfunc_called(this, "_ZN7S7516C62v8Ev");}
void  S7516C6 ::v9(){vfunc_called(this, "_ZN7S7516C62v9Ev");}
S7516C6 ::~S7516C6(){ note_dtor("S7516C6", this);} // tgen
S7516C6 ::S7516C6(){ note_ctor("S7516C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7516C6C1Ev();
extern void _ZN7S7516C6D1Ev();
Name_Map name_map_S7516C6[] = {
  NSPAIR(_ZN7S7516C6C1Ev),
  NSPAIR(_ZN7S7516C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7516C6[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
static  VTBL_ENTRY vtc_S7516C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C6[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
};
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
Class_Descriptor cd_S7516C6 = {  "S7516C6", // class name
  0,0,//no base classes
  &(vtc_S7516C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7516C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7516C6),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  S7516C5  : S7516C6 {
  virtual void  v10(); // _ZN7S7516C53v10Ev
  virtual void  v11(); // _ZN7S7516C53v11Ev
  ~S7516C5(); // tgen
  S7516C5(); // tgen
};
//SIG(-1 S7516C5) C1{ BC2{ v3 v4} v1 v2}


void  S7516C5 ::v10(){vfunc_called(this, "_ZN7S7516C53v10Ev");}
void  S7516C5 ::v11(){vfunc_called(this, "_ZN7S7516C53v11Ev");}
S7516C5 ::~S7516C5(){ note_dtor("S7516C5", this);} // tgen
S7516C5 ::S7516C5(){ note_ctor("S7516C5", this);} // tgen

static void Test_S7516C5()
{
  extern Class_Descriptor cd_S7516C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7516C5, buf);
    S7516C5 *dp, &lv = *(dp=new (buf) S7516C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7516C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C5)");
    check_base_class_offset(lv, (S7516C6*), 0, "S7516C5");
    test_class_info(&lv, &cd_S7516C5);
    dp->~S7516C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C5(Test_S7516C5, "S7516C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7516C5C1Ev();
extern void _ZN7S7516C5D1Ev();
Name_Map name_map_S7516C5[] = {
  NSPAIR(_ZN7S7516C5C1Ev),
  NSPAIR(_ZN7S7516C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
static Base_Class bases_S7516C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7516C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7516C5[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY vtc_S7516C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C5[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
Class_Descriptor cd_S7516C5 = {  "S7516C5", // class name
  bases_S7516C5, 1,
  &(vtc_S7516C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7516C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7516C5),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  S7516C4  : S7516C5 , S7516C6 {
  __tsi64 s7516c4f0;
  virtual void  v12(); // _ZN7S7516C43v12Ev
  virtual void  v13(); // _ZN7S7516C43v13Ev
  virtual void  v14(); // _ZN7S7516C43v14Ev
  virtual void  v15(); // _ZN7S7516C43v15Ev
  ~S7516C4(); // tgen
  S7516C4(); // tgen
};
//SIG(-1 S7516C4) C1{ BC2{ BC3{ v5 v6} v7 v8} BC3 v1 v2 v3 v4 FL}


void  S7516C4 ::v12(){vfunc_called(this, "_ZN7S7516C43v12Ev");}
void  S7516C4 ::v13(){vfunc_called(this, "_ZN7S7516C43v13Ev");}
void  S7516C4 ::v14(){vfunc_called(this, "_ZN7S7516C43v14Ev");}
void  S7516C4 ::v15(){vfunc_called(this, "_ZN7S7516C43v15Ev");}
S7516C4 ::~S7516C4(){ note_dtor("S7516C4", this);} // tgen
S7516C4 ::S7516C4(){ note_ctor("S7516C4", this);} // tgen

static void Test_S7516C4()
{
  extern Class_Descriptor cd_S7516C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7516C4, buf);
    S7516C4 *dp, &lv = *(dp=new (buf) S7516C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7516C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C4)");
    check_base_class_offset(lv, (S7516C6*)(S7516C5*), 0, "S7516C4");
    check_base_class_offset(lv, (S7516C5*), 0, "S7516C4");
    /*is_ambiguous_... S7516C4::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*), ABISELECT(8,4), "S7516C4");
    check_field_offset(lv, s7516c4f0, ABISELECT(16,8), "S7516C4.s7516c4f0");
    test_class_info(&lv, &cd_S7516C4);
    dp->~S7516C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C4(Test_S7516C4, "S7516C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7516C4C1Ev();
extern void _ZN7S7516C4D1Ev();
Name_Map name_map_S7516C4[] = {
  NSPAIR(_ZN7S7516C4C1Ev),
  NSPAIR(_ZN7S7516C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
static Base_Class bases_S7516C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7516C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7516C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7516C6,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7516C4[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
static  VTBL_ENTRY vtc_S7516C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C4[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7516C4[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
};
extern VTBL_ENTRY _ZTI7S7516C4[];
extern  VTBL_ENTRY _ZTV7S7516C4[];
Class_Descriptor cd_S7516C4 = {  "S7516C4", // class name
  bases_S7516C4, 3,
  &(vtc_S7516C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7516C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7516C4),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7516C7  : S7516C6 , S7516C3 , virtual S7516C4 {
  void *s7516c7f0;
  virtual void  v16(); // _ZN7S7516C73v16Ev
  virtual void  v17(); // _ZN7S7516C73v17Ev
  ~S7516C7(); // tgen
  S7516C7(); // tgen
};
//SIG(-1 S7516C7) C1{ BC2{ v3 v4} BC3{ v5 v6 v7 v8 v9 v10 v11 FL[10] Fp FL} VBC4{ BC5{ BC2 v12 v13} BC2 v14 v15 v16 v17 FL} v1 v2 Fp}


void  S7516C7 ::v16(){vfunc_called(this, "_ZN7S7516C73v16Ev");}
void  S7516C7 ::v17(){vfunc_called(this, "_ZN7S7516C73v17Ev");}
S7516C7 ::~S7516C7(){ note_dtor("S7516C7", this);} // tgen
S7516C7 ::S7516C7(){ note_ctor("S7516C7", this);} // tgen

static void Test_S7516C7()
{
  extern Class_Descriptor cd_S7516C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,31)];
    init_test(&cd_S7516C7, buf);
    S7516C7 *dp, &lv = *(dp=new (buf) S7516C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,120), "sizeof(S7516C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C7)");
    /*is_ambiguous_... S7516C7::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*), 0, "S7516C7");
    check_base_class_offset(lv, (S7516C3*), ABISELECT(8,4), "S7516C7");
    check_base_class_offset(lv, (S7516C6*)(S7516C5*)(S7516C4*), ABISELECT(120,104), "S7516C7");
    check_base_class_offset(lv, (S7516C5*)(S7516C4*), ABISELECT(120,104), "S7516C7");
    /*is_ambiguous_... S7516C4::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C4*), ABISELECT(128,108), "S7516C7");
    check_base_class_offset(lv, (S7516C4*), ABISELECT(120,104), "S7516C7");
    check_field_offset(lv, s7516c7f0, ABISELECT(112,100), "S7516C7.s7516c7f0");
    test_class_info(&lv, &cd_S7516C7);
    dp->~S7516C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C7(Test_S7516C7, "S7516C7", ABISELECT(144,120));

#else // __cplusplus

extern void _ZN7S7516C7C1Ev();
extern void _ZN7S7516C7D1Ev();
Name_Map name_map_S7516C7[] = {
  NSPAIR(_ZN7S7516C7C1Ev),
  NSPAIR(_ZN7S7516C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C3;
extern VTBL_ENTRY _ZTI7S7516C3[];
extern  VTBL_ENTRY _ZTV7S7516C3[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C4;
extern VTBL_ENTRY _ZTI7S7516C4[];
extern  VTBL_ENTRY _ZTV7S7516C4[];
static Base_Class bases_S7516C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7516C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7516C3,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7516C6,    ABISELECT(120,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
    3, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7516C6,    ABISELECT(128,108), //bcp->offset
    34, //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
    5, //immediately_derived
  0, 0},
  {&cd_S7516C4,    ABISELECT(120,104), //bcp->offset
    16, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7516C7[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C73v16Ev();
extern void _ZN7S7516C73v17Ev();
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
static  VTBL_ENTRY vtc_S7516C7[] = {
  ABISELECT(120,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v17Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
};
extern VTBL_ENTRY _ZTV7S7516C7[];
static  VTT_ENTRY vtt_S7516C7[] = {
  {&(_ZTV7S7516C7[3]),  3,38},
  {&(_ZTV7S7516C7[26]),  26,38},
  {&(_ZTV7S7516C7[36]),  36,38},
};
extern VTBL_ENTRY _ZTI7S7516C7[];
extern  VTBL_ENTRY _ZTV7S7516C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C7[];
Class_Descriptor cd_S7516C7 = {  "S7516C7", // class name
  bases_S7516C7, 6,
  &(vtc_S7516C7[0]), // expected_vtbl_contents
  &(vtt_S7516C7[0]), // expected_vtt_contents
  ABISELECT(144,120), // object size
  NSPAIRA(_ZTI7S7516C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7516C7),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7516C7),3, //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  S7516C8  : virtual S7516C5 , S7516C6 {
  virtual void  v18(); // _ZN7S7516C83v18Ev
  virtual void  v19(); // _ZN7S7516C83v19Ev
  virtual void  v20(); // _ZN7S7516C83v20Ev
  virtual void  v21(); // _ZN7S7516C83v21Ev
  virtual void  v22(); // _ZN7S7516C83v22Ev
  virtual void  v23(); // _ZN7S7516C83v23Ev
  virtual void  v24(); // _ZN7S7516C83v24Ev
  virtual void  v25(); // _ZN7S7516C83v25Ev
  ~S7516C8(); // tgen
  S7516C8(); // tgen
};
//SIG(-1 S7516C8) C1{ VBC2{ BC3{ v9 v10} v11 v12} BC3 v1 v2 v3 v4 v5 v6 v7 v8}


void  S7516C8 ::v18(){vfunc_called(this, "_ZN7S7516C83v18Ev");}
void  S7516C8 ::v19(){vfunc_called(this, "_ZN7S7516C83v19Ev");}
void  S7516C8 ::v20(){vfunc_called(this, "_ZN7S7516C83v20Ev");}
void  S7516C8 ::v21(){vfunc_called(this, "_ZN7S7516C83v21Ev");}
void  S7516C8 ::v22(){vfunc_called(this, "_ZN7S7516C83v22Ev");}
void  S7516C8 ::v23(){vfunc_called(this, "_ZN7S7516C83v23Ev");}
void  S7516C8 ::v24(){vfunc_called(this, "_ZN7S7516C83v24Ev");}
void  S7516C8 ::v25(){vfunc_called(this, "_ZN7S7516C83v25Ev");}
S7516C8 ::~S7516C8(){ note_dtor("S7516C8", this);} // tgen
S7516C8 ::S7516C8(){ note_ctor("S7516C8", this);} // tgen

static void Test_S7516C8()
{
  extern Class_Descriptor cd_S7516C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7516C8, buf);
    S7516C8 *dp, &lv = *(dp=new (buf) S7516C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7516C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C8)");
    check_base_class_offset(lv, (S7516C6*)(S7516C5*), ABISELECT(8,4), "S7516C8");
    check_base_class_offset(lv, (S7516C5*), ABISELECT(8,4), "S7516C8");
    /*is_ambiguous_... S7516C8::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*), 0, "S7516C8");
    test_class_info(&lv, &cd_S7516C8);
    dp->~S7516C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C8(Test_S7516C8, "S7516C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7516C8C1Ev();
extern void _ZN7S7516C8D1Ev();
Name_Map name_map_S7516C8[] = {
  NSPAIR(_ZN7S7516C8C1Ev),
  NSPAIR(_ZN7S7516C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
static Base_Class bases_S7516C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7516C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(8,4), //bcp->offset
    13, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7516C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7516C8[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C83v18Ev();
extern void _ZN7S7516C83v19Ev();
extern void _ZN7S7516C83v20Ev();
extern void _ZN7S7516C83v21Ev();
extern void _ZN7S7516C83v22Ev();
extern void _ZN7S7516C83v23Ev();
extern void _ZN7S7516C83v24Ev();
extern void _ZN7S7516C83v25Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY vtc_S7516C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C8[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7516C8[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern VTBL_ENTRY _ZTV7S7516C8[];
static  VTT_ENTRY vtt_S7516C8[] = {
  {&(_ZTV7S7516C8[3]),  3,23},
  {&(_ZTV7S7516C8[19]),  19,23},
};
extern VTBL_ENTRY _ZTI7S7516C8[];
extern  VTBL_ENTRY _ZTV7S7516C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C8[];
Class_Descriptor cd_S7516C8 = {  "S7516C8", // class name
  bases_S7516C8, 3,
  &(vtc_S7516C8[0]), // expected_vtbl_contents
  &(vtt_S7516C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7516C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7516C8),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7516C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7516C2  : virtual S7516C3 , virtual S7516C4 , virtual S7516C7 , S7516C8 , S7516C5 {
  char s7516c2f0;
  short s7516c2f1;
  virtual void  v26(); // _ZN7S7516C23v26Ev
  virtual void  v27(); // _ZN7S7516C23v27Ev
  virtual void  v28(); // _ZN7S7516C23v28Ev
  virtual void  v29(); // _ZN7S7516C23v29Ev
  virtual void  v30(); // _ZN7S7516C23v30Ev
  virtual void  v31(); // _ZN7S7516C23v31Ev
  virtual void  v32(); // _ZN7S7516C23v32Ev
  ~S7516C2(); // tgen
  S7516C2(); // tgen
};
//SIG(-1 S7516C2) C1{ VBC2{ v8 v9 v10 v11 v12 v13 v14 FL[10] Fp FL} VBC3{ BC4{ BC5{ v15 v16} v17 v18} BC5 v19 v20 v21 v22 FL} VBC6{ BC5 BC2 VBC3 v23 v24 Fp} BC7{ VBC4 BC5 v25 v26 v27 v28 v29 v30 v31 v32} BC4 v1 v2 v3 v4 v5 v6 v7 Fc Fs}


void  S7516C2 ::v26(){vfunc_called(this, "_ZN7S7516C23v26Ev");}
void  S7516C2 ::v27(){vfunc_called(this, "_ZN7S7516C23v27Ev");}
void  S7516C2 ::v28(){vfunc_called(this, "_ZN7S7516C23v28Ev");}
void  S7516C2 ::v29(){vfunc_called(this, "_ZN7S7516C23v29Ev");}
void  S7516C2 ::v30(){vfunc_called(this, "_ZN7S7516C23v30Ev");}
void  S7516C2 ::v31(){vfunc_called(this, "_ZN7S7516C23v31Ev");}
void  S7516C2 ::v32(){vfunc_called(this, "_ZN7S7516C23v32Ev");}
S7516C2 ::~S7516C2(){ note_dtor("S7516C2", this);} // tgen
S7516C2 ::S7516C2(){ note_ctor("S7516C2", this);} // tgen

static void Test_S7516C2()
{
  extern Class_Descriptor cd_S7516C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,59)];
    init_test(&cd_S7516C2, buf);
    S7516C2 *dp, &lv = *(dp=new (buf) S7516C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,232), "sizeof(S7516C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C2)");
    /*is_ambiguous_... S7516C2::S7516C3 */ AMB_check_base_class_offset(lv, (S7516C3*), ABISELECT(24,12), "S7516C2");
    check_base_class_offset(lv, (S7516C6*)(S7516C5*)(S7516C4*), ABISELECT(128,108), "S7516C2");
    check_base_class_offset(lv, (S7516C5*)(S7516C4*), ABISELECT(128,108), "S7516C2");
    /*is_ambiguous_... S7516C4::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C4*), ABISELECT(136,112), "S7516C2");
    check_base_class_offset(lv, (S7516C4*), ABISELECT(128,108), "S7516C2");
    check_base_class_offset(lv, (S7516C4*)(S7516C7*), ABISELECT(128,108), "S7516C2");
    /*is_ambiguous_... S7516C7::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C7*), ABISELECT(152,124), "S7516C2");
    check_base_class_offset(lv, (S7516C3*)(S7516C7*), ABISELECT(160,128), "S7516C2");
    check_base_class_offset(lv, (S7516C7*), ABISELECT(152,124), "S7516C2");
    /*is_ambiguous_... S7516C2::S7516C5 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C5*), ABISELECT(272,228), "S7516C2");
    check_base_class_offset(lv, (S7516C5*)(S7516C8*), ABISELECT(272,228), "S7516C2");
    /*is_ambiguous_... S7516C8::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C8*), 0, "S7516C2");
    check_base_class_offset(lv, (S7516C8*), 0, "S7516C2");
    /*is_ambiguous_... S7516C2::S7516C5 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C5*), ABISELECT(8,4), "S7516C2");
    /*is_ambiguous_... S7516C2::S7516C5 */ AMB_check_base_class_offset(lv, (S7516C5*), ABISELECT(8,4), "S7516C2");
    check_field_offset(lv, s7516c2f0, ABISELECT(16,8), "S7516C2.s7516c2f0");
    check_field_offset(lv, s7516c2f1, ABISELECT(18,10), "S7516C2.s7516c2f1");
    test_class_info(&lv, &cd_S7516C2);
    dp->~S7516C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C2(Test_S7516C2, "S7516C2", ABISELECT(280,232));

#else // __cplusplus

extern void _ZN7S7516C2C1Ev();
extern void _ZN7S7516C2D1Ev();
Name_Map name_map_S7516C2[] = {
  NSPAIR(_ZN7S7516C2C1Ev),
  NSPAIR(_ZN7S7516C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7516C3;
extern VTBL_ENTRY _ZTI7S7516C3[];
extern  VTBL_ENTRY _ZTV7S7516C3[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C4;
extern VTBL_ENTRY _ZTI7S7516C4[];
extern  VTBL_ENTRY _ZTV7S7516C4[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C3;
extern VTBL_ENTRY _ZTI7S7516C3[];
extern  VTBL_ENTRY _ZTV7S7516C3[];
extern Class_Descriptor cd_S7516C7;
extern VTBL_ENTRY _ZTI7S7516C7[];
extern  VTBL_ENTRY _ZTV7S7516C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C7[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C8;
extern VTBL_ENTRY _ZTI7S7516C8[];
extern  VTBL_ENTRY _ZTV7S7516C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C8[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
static Base_Class bases_S7516C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7516C3,    ABISELECT(24,12), //bcp->offset
    29, //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
  1, 1},
  {&cd_S7516C6,    ABISELECT(128,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(128,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7516C6,    ABISELECT(136,112), //bcp->offset
    63, //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_S7516C4,    ABISELECT(128,108), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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_S7516C6,    ABISELECT(152,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7516C3,    ABISELECT(160,128), //bcp->offset
    85, //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7516C7,    ABISELECT(152,124), //bcp->offset
    67, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7516C6,    ABISELECT(272,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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(272,228), //bcp->offset
    94, //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
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7516C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7516C8,    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_S7516C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(8,4), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7516C2[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C83v18Ev();
extern void _ZN7S7516C83v19Ev();
extern void _ZN7S7516C83v20Ev();
extern void _ZN7S7516C83v21Ev();
extern void _ZN7S7516C83v22Ev();
extern void _ZN7S7516C83v23Ev();
extern void _ZN7S7516C83v24Ev();
extern void _ZN7S7516C83v25Ev();
extern void _ZN7S7516C23v26Ev();
extern void _ZN7S7516C23v27Ev();
extern void _ZN7S7516C23v28Ev();
extern void _ZN7S7516C23v29Ev();
extern void _ZN7S7516C23v30Ev();
extern void _ZN7S7516C23v31Ev();
extern void _ZN7S7516C23v32Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C73v16Ev();
extern void _ZN7S7516C73v17Ev();
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY vtc_S7516C2[] = {
  ABISELECT(152,124),
  ABISELECT(128,108),
  ABISELECT(24,12),
  ABISELECT(272,228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v28Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v29Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v30Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v31Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v32Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-124),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v17Ev,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern VTBL_ENTRY _ZTV7S7516C2[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C83v18Ev();
extern void _ZN7S7516C83v19Ev();
extern void _ZN7S7516C83v20Ev();
extern void _ZN7S7516C83v21Ev();
extern void _ZN7S7516C83v22Ev();
extern void _ZN7S7516C83v23Ev();
extern void _ZN7S7516C83v24Ev();
extern void _ZN7S7516C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C8__7S7516C2[] = {
  ABISELECT(272,228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C8[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v25Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C5__7S7516C8__7S7516C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-228),
  (VTBL_ENTRY)&(_ZTI7S7516C8[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C73v16Ev();
extern void _ZN7S7516C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C7__7S7516C2[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v17Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C4__7S7516C7__7S7516C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C67S7516C4__A2__7S7516C7__7S7516C2[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
};
static  VTT_ENTRY vtt_S7516C2[] = {
  {&(_ZTV7S7516C2[6]),  6,104},
  {&(_tg__ZTV7S7516C8__7S7516C2[3]),  3,13},
  {&(_tg__ZTV7S7516C5__7S7516C8__7S7516C2[6]),  6,10},
  {&(_ZTV7S7516C2[38]),  38,104},
  {&(_ZTV7S7516C2[55]),  55,104},
  {&(_ZTV7S7516C2[65]),  65,104},
  {&(_ZTV7S7516C2[81]),  81,104},
  {&(_ZTV7S7516C2[87]),  87,104},
  {&(_ZTV7S7516C2[100]),  100,104},
  {&(_tg__ZTV7S7516C7__7S7516C2[3]),  3,7},
  {&(_tg__ZTV7S7516C4__7S7516C7__7S7516C2[10]),  10,18},
  {&(_tg__ZTV7S7516C67S7516C4__A2__7S7516C7__7S7516C2[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7516C2[];
extern  VTBL_ENTRY _ZTV7S7516C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C2[];
Class_Descriptor cd_S7516C2 = {  "S7516C2", // class name
  bases_S7516C2, 14,
  &(vtc_S7516C2[0]), // expected_vtbl_contents
  &(vtt_S7516C2[0]), // expected_vtt_contents
  ABISELECT(280,232), // object size
  NSPAIRA(_ZTI7S7516C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7516C2),104, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7516C2),12, //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  S7516C1  : S7516C2 {
  int s7516c1f0;
  char s7516c1f1:8;
  ~S7516C1(); // tgen
  S7516C1(); // tgen
};
//SIG(1 S7516C1) C1{ BC2{ VBC3{ v1 v2 v3 v4 v5 v6 v7 FL[10] Fp FL} VBC4{ BC5{ BC6{ v8 v9} v10 v11} BC6 v12 v13 v14 v15 FL} VBC7{ BC6 BC3 VBC4 v16 v17 Fp} BC8{ VBC5 BC6 v18 v19 v20 v21 v22 v23 v24 v25} BC5 v26 v27 v28 v29 v30 v31 v32 Fc Fs} Fi Fc:8}


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

static void Test_S7516C1()
{
  extern Class_Descriptor cd_S7516C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,61)];
    init_test(&cd_S7516C1, buf);
    S7516C1 *dp, &lv = *(dp=new (buf) S7516C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,240), "sizeof(S7516C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7516C1)");
    /*is_ambiguous_... S7516C2::S7516C3 */ AMB_check_base_class_offset(lv, (S7516C3*)(S7516C2*), ABISELECT(32,20), "S7516C1");
    check_base_class_offset(lv, (S7516C6*)(S7516C5*)(S7516C4*), ABISELECT(136,116), "S7516C1");
    check_base_class_offset(lv, (S7516C5*)(S7516C4*), ABISELECT(136,116), "S7516C1");
    /*is_ambiguous_... S7516C4::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C4*), ABISELECT(144,120), "S7516C1");
    check_base_class_offset(lv, (S7516C4*)(S7516C2*), ABISELECT(136,116), "S7516C1");
    check_base_class_offset(lv, (S7516C4*)(S7516C7*), ABISELECT(136,116), "S7516C1");
    /*is_ambiguous_... S7516C7::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C7*), ABISELECT(160,132), "S7516C1");
    check_base_class_offset(lv, (S7516C3*)(S7516C7*), ABISELECT(168,136), "S7516C1");
    check_base_class_offset(lv, (S7516C7*)(S7516C2*), ABISELECT(160,132), "S7516C1");
    /*is_ambiguous_... S7516C1::S7516C5 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C5*), ABISELECT(280,236), "S7516C1");
    check_base_class_offset(lv, (S7516C5*)(S7516C8*)(S7516C2*), ABISELECT(280,236), "S7516C1");
    /*is_ambiguous_... S7516C8::S7516C6 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C8*)(S7516C2*), 0, "S7516C1");
    check_base_class_offset(lv, (S7516C8*)(S7516C2*), 0, "S7516C1");
    /*is_ambiguous_... S7516C2::S7516C5 */ AMB_check_base_class_offset(lv, (S7516C6*)(S7516C5*)(S7516C2*), ABISELECT(8,4), "S7516C1");
    /*is_ambiguous_... S7516C2::S7516C5 */ AMB_check_base_class_offset(lv, (S7516C5*)(S7516C2*), ABISELECT(8,4), "S7516C1");
    check_base_class_offset(lv, (S7516C2*), 0, "S7516C1");
    check_field_offset(lv, s7516c1f0, ABISELECT(20,12), "S7516C1.s7516c1f0");
    set_bf_and_test(lv, s7516c1f1, ABISELECT(24,16), 0, 8, 1, "S7516C1");
    set_bf_and_test(lv, s7516c1f1, ABISELECT(24,16), 0, 8, hide_sll(1LL<<7), "S7516C1");
    test_class_info(&lv, &cd_S7516C1);
    dp->~S7516C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7516C1(Test_S7516C1, "S7516C1", ABISELECT(288,240));

#else // __cplusplus

extern void _ZN7S7516C1C1Ev();
extern void _ZN7S7516C1D1Ev();
Name_Map name_map_S7516C1[] = {
  NSPAIR(_ZN7S7516C1C1Ev),
  NSPAIR(_ZN7S7516C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7516C3;
extern VTBL_ENTRY _ZTI7S7516C3[];
extern  VTBL_ENTRY _ZTV7S7516C3[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C4;
extern VTBL_ENTRY _ZTI7S7516C4[];
extern  VTBL_ENTRY _ZTV7S7516C4[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C3;
extern VTBL_ENTRY _ZTI7S7516C3[];
extern  VTBL_ENTRY _ZTV7S7516C3[];
extern Class_Descriptor cd_S7516C7;
extern VTBL_ENTRY _ZTI7S7516C7[];
extern  VTBL_ENTRY _ZTV7S7516C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C7[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C8;
extern VTBL_ENTRY _ZTI7S7516C8[];
extern  VTBL_ENTRY _ZTV7S7516C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C8[];
extern Class_Descriptor cd_S7516C6;
extern VTBL_ENTRY _ZTI7S7516C6[];
extern  VTBL_ENTRY _ZTV7S7516C6[];
extern Class_Descriptor cd_S7516C5;
extern VTBL_ENTRY _ZTI7S7516C5[];
extern  VTBL_ENTRY _ZTV7S7516C5[];
extern Class_Descriptor cd_S7516C2;
extern VTBL_ENTRY _ZTI7S7516C2[];
extern  VTBL_ENTRY _ZTV7S7516C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C2[];
static Base_Class bases_S7516C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7516C3,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7516C6,    ABISELECT(136,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(136,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7516C6,    ABISELECT(144,120), //bcp->offset
    63, //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_S7516C4,    ABISELECT(136,116), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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
    7, //immediately_derived
  0, 1},
  {&cd_S7516C6,    ABISELECT(160,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7516C3,    ABISELECT(168,136), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7516C7,    ABISELECT(160,132), //bcp->offset
    67, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7516C6,    ABISELECT(280,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(280,236), //bcp->offset
    94, //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
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7516C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7516C8,    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
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7516C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7516C5,    ABISELECT(8,4), //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7516C2,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7516C1[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C83v18Ev();
extern void _ZN7S7516C83v19Ev();
extern void _ZN7S7516C83v20Ev();
extern void _ZN7S7516C83v21Ev();
extern void _ZN7S7516C83v22Ev();
extern void _ZN7S7516C83v23Ev();
extern void _ZN7S7516C83v24Ev();
extern void _ZN7S7516C83v25Ev();
extern void _ZN7S7516C23v26Ev();
extern void _ZN7S7516C23v27Ev();
extern void _ZN7S7516C23v28Ev();
extern void _ZN7S7516C23v29Ev();
extern void _ZN7S7516C23v30Ev();
extern void _ZN7S7516C23v31Ev();
extern void _ZN7S7516C23v32Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C73v16Ev();
extern void _ZN7S7516C73v17Ev();
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY vtc_S7516C1[] = {
  ABISELECT(160,132),
  ABISELECT(136,116),
  ABISELECT(32,20),
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v28Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v29Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v30Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v31Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v32Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-160,-132),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v17Ev,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI7S7516C1[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern VTBL_ENTRY _ZTV7S7516C1[];
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C83v18Ev();
extern void _ZN7S7516C83v19Ev();
extern void _ZN7S7516C83v20Ev();
extern void _ZN7S7516C83v21Ev();
extern void _ZN7S7516C83v22Ev();
extern void _ZN7S7516C83v23Ev();
extern void _ZN7S7516C83v24Ev();
extern void _ZN7S7516C83v25Ev();
extern void _ZN7S7516C23v26Ev();
extern void _ZN7S7516C23v27Ev();
extern void _ZN7S7516C23v28Ev();
extern void _ZN7S7516C23v29Ev();
extern void _ZN7S7516C23v30Ev();
extern void _ZN7S7516C23v31Ev();
extern void _ZN7S7516C23v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C2__7S7516C1[] = {
  ABISELECT(160,132),
  ABISELECT(136,116),
  ABISELECT(32,20),
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v28Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v29Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v30Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v31Ev,
  (VTBL_ENTRY)&_ZN7S7516C23v32Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C83v18Ev();
extern void _ZN7S7516C83v19Ev();
extern void _ZN7S7516C83v20Ev();
extern void _ZN7S7516C83v21Ev();
extern void _ZN7S7516C83v22Ev();
extern void _ZN7S7516C83v23Ev();
extern void _ZN7S7516C83v24Ev();
extern void _ZN7S7516C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C87S7516C2__7S7516C1[] = {
  ABISELECT(280,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C8[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v18Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v19Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v20Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v21Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v22Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7516C83v25Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C5__7S7516C87S7516C2__7S7516C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI7S7516C8[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C3__7S7516C2__7S7516C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C4__7S7516C2__7S7516C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-116),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C67S7516C4__A1__7S7516C2__7S7516C1[] = {
  ABISELECT(-144,-120),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C73v16Ev();
extern void _ZN7S7516C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C7__7S7516C2__7S7516C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-160,-132),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v17Ev,
};
extern void _ZN7S7516C32v1Ev();
extern void _ZN7S7516C32v2Ev();
extern void _ZN7S7516C32v3Ev();
extern void _ZN7S7516C32v4Ev();
extern void _ZN7S7516C32v5Ev();
extern void _ZN7S7516C32v6Ev();
extern void _ZN7S7516C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C37S7516C7__A1__7S7516C2__7S7516C1[] = {
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7516C32v7Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C5__A1__7S7516C2__7S7516C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-280,-236),
  (VTBL_ENTRY)&(_ZTI7S7516C2[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C73v16Ev();
extern void _ZN7S7516C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C7__7S7516C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7516C73v17Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
extern void _ZN7S7516C53v10Ev();
extern void _ZN7S7516C53v11Ev();
extern void _ZN7S7516C43v12Ev();
extern void _ZN7S7516C43v13Ev();
extern void _ZN7S7516C43v14Ev();
extern void _ZN7S7516C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C4__7S7516C7__7S7516C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7516C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7516C43v15Ev,
};
extern void _ZN7S7516C62v8Ev();
extern void _ZN7S7516C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7516C67S7516C4__A2__7S7516C7__7S7516C1[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7516C7[0]),
  (VTBL_ENTRY)&_ZN7S7516C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7516C62v9Ev,
};
static  VTT_ENTRY vtt_S7516C1[] = {
  {&(_ZTV7S7516C1[6]),  6,104},
  {&(_tg__ZTV7S7516C2__7S7516C1[6]),  6,23},
  {&(_tg__ZTV7S7516C87S7516C2__7S7516C1[3]),  3,13},
  {&(_tg__ZTV7S7516C5__7S7516C87S7516C2__7S7516C1[6]),  6,10},
  {&(_tg__ZTV7S7516C3__7S7516C2__7S7516C1[9]),  9,16},
  {&(_tg__ZTV7S7516C4__7S7516C2__7S7516C1[10]),  10,18},
  {&(_tg__ZTV7S7516C67S7516C4__A1__7S7516C2__7S7516C1[2]),  2,4},
  {&(_tg__ZTV7S7516C7__7S7516C2__7S7516C1[14]),  14,18},
  {&(_tg__ZTV7S7516C37S7516C7__A1__7S7516C2__7S7516C1[2]),  2,9},
  {&(_tg__ZTV7S7516C5__A1__7S7516C2__7S7516C1[6]),  6,10},
  {&(_ZTV7S7516C1[38]),  38,104},
  {&(_ZTV7S7516C1[55]),  55,104},
  {&(_ZTV7S7516C1[65]),  65,104},
  {&(_ZTV7S7516C1[81]),  81,104},
  {&(_ZTV7S7516C1[87]),  87,104},
  {&(_ZTV7S7516C1[100]),  100,104},
  {&(_tg__ZTV7S7516C7__7S7516C1[3]),  3,7},
  {&(_tg__ZTV7S7516C4__7S7516C7__7S7516C1[10]),  10,18},
  {&(_tg__ZTV7S7516C67S7516C4__A2__7S7516C7__7S7516C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7516C1[];
extern  VTBL_ENTRY _ZTV7S7516C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7516C1[];
Class_Descriptor cd_S7516C1 = {  "S7516C1", // class name
  bases_S7516C1, 15,
  &(vtc_S7516C1[0]), // expected_vtbl_contents
  &(vtt_S7516C1[0]), // expected_vtt_contents
  ABISELECT(288,240), // object size
  NSPAIRA(_ZTI7S7516C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7516C1),104, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7516C1),19, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C5_nt  {
  __tsi64 s21713c5f0;
};
//SIG(-1 S21713C5_nt) C1{ FL}



//skip512 S21713C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C4  {
  int s21713c4f0[2];
  ::S21713C5_nt s21713c4f1;
  int s21713c4f2;
};
//SIG(-1 S21713C4) C1{ Fi[2] FC2{ FL} Fi}



static void Test_S21713C4()
{
  {
    init_simple_test("S21713C4");
    S21713C4 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S21713C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21713C4)");
    check_field_offset(lv, s21713c4f0, 0, "S21713C4.s21713c4f0");
    check_field_offset(lv, s21713c4f1, 8, "S21713C4.s21713c4f1");
    check_field_offset(lv, s21713c4f2, 16, "S21713C4.s21713c4f2");
  }
}
static Arrange_To_Call_Me vS21713C4(Test_S21713C4, "S21713C4", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C9_nt  {
  __tsi64 s21713c9f0[3];
  int s21713c9f1[4];
  ::S21713C5_nt s21713c9f2;
};
//SIG(-1 S21713C9_nt) C1{ FL[3] Fi[4] FC2{ FL}}



//skip512 S21713C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C6  {
  ::S2650C2_nt s21713c6f0;
  int s21713c6f1[2];
  __tsi64 s21713c6f2;
  int s21713c6f3[2];
  ::S21713C9_nt s21713c6f4;
  __tsi64 s21713c6f5;
  int s21713c6f6[2];
  ::S21713C5_nt s21713c6f7;
  __tsi64 s21713c6f8;
  int s21713c6f9;
  ::S21713C9_nt s21713c6f10;
  int s21713c6f11;
};
//SIG(-1 S21713C6) C1{ FC2{ BC3{ m Fi}} Fi[2] FL Fi[2] FC4{ FL[3] Fi[4] FC5{ FL}} FL Fi[2] FC5 FL Fi FC4 Fi}



static void Test_S21713C6()
{
  {
    init_simple_test("S21713C6");
    S21713C6 lv;
    check2(sizeof(lv), ABISELECT(176,164), "sizeof(S21713C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21713C6)");
    check_field_offset(lv, s21713c6f0, 0, "S21713C6.s21713c6f0");
    check_field_offset(lv, s21713c6f1, 4, "S21713C6.s21713c6f1");
    check_field_offset(lv, s21713c6f2, ABISELECT(16,12), "S21713C6.s21713c6f2");
    check_field_offset(lv, s21713c6f3, ABISELECT(24,20), "S21713C6.s21713c6f3");
    check_field_offset(lv, s21713c6f4, ABISELECT(32,28), "S21713C6.s21713c6f4");
    check_field_offset(lv, s21713c6f5, ABISELECT(80,76), "S21713C6.s21713c6f5");
    check_field_offset(lv, s21713c6f6, ABISELECT(88,84), "S21713C6.s21713c6f6");
    check_field_offset(lv, s21713c6f7, ABISELECT(96,92), "S21713C6.s21713c6f7");
    check_field_offset(lv, s21713c6f8, ABISELECT(104,100), "S21713C6.s21713c6f8");
    check_field_offset(lv, s21713c6f9, ABISELECT(112,108), "S21713C6.s21713c6f9");
    check_field_offset(lv, s21713c6f10, ABISELECT(120,112), "S21713C6.s21713c6f10");
    check_field_offset(lv, s21713c6f11, ABISELECT(168,160), "S21713C6.s21713c6f11");
  }
}
static Arrange_To_Call_Me vS21713C6(Test_S21713C6, "S21713C6", ABISELECT(176,164));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C8_nt  {
  int s21713c8f0;
  void  mf21713c8(); // _ZN11S21713C8_nt9mf21713c8Ev
};
//SIG(-1 S21713C8_nt) C1{ m Fi}


void  S21713C8_nt ::mf21713c8(){}

//skip512 S21713C8_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S21713C11_nt  : S21713C8_nt {
};
//SIG(-1 S21713C11_nt) C1{ BC2{ m Fi}}



//skip512 S21713C11_nt

#else // __cplusplus

extern Class_Descriptor cd_S21713C8_nt;
static Base_Class bases_S21713C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21713C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S21713C13_nt  {
  int s21713c13f0[4];
};
//SIG(-1 S21713C13_nt) C1{ Fi[4]}



//skip512 S21713C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C12  {
  int s21713c12f0;
  ::S21713C13_nt s21713c12f1;
  int s21713c12f2;
  ::S21713C5_nt s21713c12f3;
};
//SIG(-1 S21713C12) C1{ Fi FC2{ Fi[4]} Fi FC3{ FL}}



static void Test_S21713C12()
{
  {
    init_simple_test("S21713C12");
    S21713C12 lv;
    check2(sizeof(lv), 32, "sizeof(S21713C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21713C12)");
    check_field_offset(lv, s21713c12f0, 0, "S21713C12.s21713c12f0");
    check_field_offset(lv, s21713c12f1, 4, "S21713C12.s21713c12f1");
    check_field_offset(lv, s21713c12f2, 20, "S21713C12.s21713c12f2");
    check_field_offset(lv, s21713c12f3, 24, "S21713C12.s21713c12f3");
  }
}
static Arrange_To_Call_Me vS21713C12(Test_S21713C12, "S21713C12", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C10  {
  ::S21713C11_nt s21713c10f0;
  int s21713c10f1[6];
  ::S21713C12 s21713c10f2;
};
//SIG(-1 S21713C10) C1{ FC2{ BC3{ m Fi}} Fi[6] FC4{ Fi FC5{ Fi[4]} Fi FC6{ FL}}}



static void Test_S21713C10()
{
  {
    init_simple_test("S21713C10");
    S21713C10 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S21713C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21713C10)");
    check_field_offset(lv, s21713c10f0, 0, "S21713C10.s21713c10f0");
    check_field_offset(lv, s21713c10f1, 4, "S21713C10.s21713c10f1");
    check_field_offset(lv, s21713c10f2, ABISELECT(32,28), "S21713C10.s21713c10f2");
  }
}
static Arrange_To_Call_Me vS21713C10(Test_S21713C10, "S21713C10", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C2  {
  int s21713c2f0;
  ::S3281C8_nt s21713c2f1;
  int s21713c2f2[2];
  char s21713c2f3[2];
  ::S21713C4 s21713c2f4;
  ::S21713C6 s21713c2f5;
  ::S21713C10 s21713c2f6;
};
//SIG(1 S21713C2) C1{ Fi FC2{ m Fi} Fi[2] Fc[2] FC3{ Fi[2] FC4{ FL} Fi} FC5{ FC6{ BC2} Fi[2] FL Fi[2] FC7{ FL[3] Fi[4] FC4} FL Fi[2] FC4 FL Fi FC7 Fi} FC8{ FC9{ BC10{ m Fi}} Fi[6] FC11{ Fi FC12{ Fi[4]} Fi FC4}}}



static void Test_S21713C2()
{
  {
    init_simple_test("S21713C2");
    S21713C2 lv;
    check2(sizeof(lv), ABISELECT(288,264), "sizeof(S21713C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21713C2)");
    check_field_offset(lv, s21713c2f0, 0, "S21713C2.s21713c2f0");
    check_field_offset(lv, s21713c2f1, 4, "S21713C2.s21713c2f1");
    check_field_offset(lv, s21713c2f2, 8, "S21713C2.s21713c2f2");
    check_field_offset(lv, s21713c2f3, 16, "S21713C2.s21713c2f3");
    check_field_offset(lv, s21713c2f4, ABISELECT(24,20), "S21713C2.s21713c2f4");
    check_field_offset(lv, s21713c2f5, ABISELECT(48,40), "S21713C2.s21713c2f5");
    check_field_offset(lv, s21713c2f6, ABISELECT(224,204), "S21713C2.s21713c2f6");
  }
}
static Arrange_To_Call_Me vS21713C2(Test_S21713C2, "S21713C2", ABISELECT(288,264));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C14_nt  {
  __tsi64 s21713c14f0[4];
};
//SIG(-1 S21713C14_nt) C1{ FL[4]}



//skip512 S21713C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21713C1  {
  void *s21713c1f0;
  ::S21713C2 s21713c1f1[8];
  char s21713c1f2;
  int s21713c1f3;
  ::S21713C14_nt s21713c1f4;
  int s21713c1f5;
  void  mf21713c1(); // _ZN8S21713C19mf21713c1Ev
  virtual  ~S21713C1(); // _ZN8S21713C1D1Ev
  S21713C1(); // tgen
};
//SIG(1 S21713C1) C1{ vd m Fp FC2{ Fi FC3{ m Fi} Fi[2] Fc[2] FC4{ Fi[2] FC5{ FL} Fi} FC6{ FC7{ BC3} Fi[2] FL Fi[2] FC8{ FL[3] Fi[4] FC5} FL Fi[2] FC5 FL Fi FC8 Fi} FC9{ FC10{ BC11{ m Fi}} Fi[6] FC12{ Fi FC13{ Fi[4]} Fi FC5}}}[8] Fc Fi FC14{ FL[4]} Fi}


void  S21713C1 ::mf21713c1(){}
 S21713C1 ::~S21713C1(){ note_dtor("S21713C1", this);}
S21713C1 ::S21713C1(){ note_ctor("S21713C1", this);} // tgen

static void Test_S21713C1()
{
  extern Class_Descriptor cd_S21713C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(297,542)];
    init_test(&cd_S21713C1, buf);
    S21713C1 *dp, &lv = *(dp=new (buf) S21713C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2368,2164), "sizeof(S21713C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21713C1)");
    check_field_offset(lv, s21713c1f0, ABISELECT(8,4), "S21713C1.s21713c1f0");
    check_field_offset(lv, s21713c1f1, ABISELECT(16,8), "S21713C1.s21713c1f1");
    check_field_offset(lv, s21713c1f2, ABISELECT(2320,2120), "S21713C1.s21713c1f2");
    check_field_offset(lv, s21713c1f3, ABISELECT(2324,2124), "S21713C1.s21713c1f3");
    check_field_offset(lv, s21713c1f4, ABISELECT(2328,2128), "S21713C1.s21713c1f4");
    check_field_offset(lv, s21713c1f5, ABISELECT(2360,2160), "S21713C1.s21713c1f5");
    test_class_info(&lv, &cd_S21713C1);
    dp->~S21713C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21713C1(Test_S21713C1, "S21713C1", ABISELECT(2368,2164));

#else // __cplusplus

extern void _ZN8S21713C1C1Ev();
extern void _ZN8S21713C1D1Ev();
Name_Map name_map_S21713C1[] = {
  NSPAIR(_ZN8S21713C1C1Ev),
  NSPAIR(_ZN8S21713C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21713C1[];
extern void _ZN8S21713C1D1Ev();
extern void _ZN8S21713C1D0Ev();
static  VTBL_ENTRY vtc_S21713C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21713C1[0]),
  (VTBL_ENTRY)&_ZN8S21713C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21713C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21713C1[];
extern  VTBL_ENTRY _ZTV8S21713C1[];
Class_Descriptor cd_S21713C1 = {  "S21713C1", // class name
  0,0,//no base classes
  &(vtc_S21713C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2368,2164), // object size
  NSPAIRA(_ZTI8S21713C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21713C1),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  S16450C7_nt  {
};
//SIG(-1 S16450C7_nt) C1{}



//skip512 S16450C7_nt

#else // __cplusplus

Class_Descriptor cd_S16450C7_nt = {  "S16450C7_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  S16450C6_nt  : S16450C7_nt {
};
//SIG(-1 S16450C6_nt) C1{ BC2{}}



//skip512 S16450C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S16450C7_nt;
static Base_Class bases_S16450C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16450C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S16450C4_nt  : S20636C21_nt {
  ::S16450C6_nt s16450c4f0;
};
//SIG(-1 S16450C4_nt) C1{ BC2{} FC3{ BC4{}}}



//skip512 S16450C4_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S16450C3_nt  : S16450C4_nt {
  void *s16450c3f0[3];
};
//SIG(-1 S16450C3_nt) C1{ BC2{ BC3{} FC4{ BC5{}}} Fp[3]}



//skip512 S16450C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S20636C21_nt;
extern VTBL_ENTRY _ZTI12S20636C21_nt[];
extern Class_Descriptor cd_S16450C4_nt;
static Base_Class bases_S16450C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S16450C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S16450C13  : S20636C21_nt {
  ::S16450C6_nt s16450c13f0;
};
//SIG(-1 S16450C13) C1{ BC2{} FC3{ BC4{}}}



static void Test_S16450C13()
{
  extern Class_Descriptor cd_S16450C13;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S16450C13, buf);
    S16450C13 &lv = *(new (buf) S16450C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S16450C13)");
    check2(__alignof__(lv), 1, "__alignof__(S16450C13)");
    check_base_class_offset(lv, (S20636C21_nt*), 0, "S16450C13");
    check_field_offset(lv, s16450c13f0, 0, "S16450C13.s16450c13f0");
    test_class_info(&lv, &cd_S16450C13);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16450C13(Test_S16450C13, "S16450C13", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S16450C12  : S16450C13 {
  void *s16450c12f0[3];
};
//SIG(-1 S16450C12) C1{ BC2{ BC3{} FC4{ BC5{}}} Fp[3]}



static void Test_S16450C12()
{
  extern Class_Descriptor cd_S16450C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S16450C12, buf);
    S16450C12 &lv = *(new (buf) S16450C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S16450C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16450C12)");
    check_base_class_offset(lv, (S20636C21_nt*)(S16450C13*), 0, "S16450C12");
    check_base_class_offset(lv, (S16450C13*), 0, "S16450C12");
    check_field_offset(lv, s16450c12f0, ABISELECT(8,4), "S16450C12.s16450c12f0");
    test_class_info(&lv, &cd_S16450C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16450C12(Test_S16450C12, "S16450C12", ABISELECT(32,16));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S16450C1  {
  ::S4224C43_nt s16450c1f0;
  void *s16450c1f1[3];
  char s16450c1f2[2];
  ::S16450C3_nt s16450c1f3;
  ::S16450C3_nt s16450c1f4;
  int s16450c1f5[2];
  ::S16450C3_nt s16450c1f6;
  ::S16450C3_nt s16450c1f7;
  int s16450c1f8[2];
  ::S16450C12 s16450c1f9;
  ::S16450C12 s16450c1f10;
  int s16450c1f11[2];
  ::S15502C9_nt s16450c1f12;
  char s16450c1f13;
  int s16450c1f14;
  void  mf16450c1(); // _ZN8S16450C19mf16450c1Ev
};
//SIG(1 S16450C1) C1{ m FC2{ m Fp} Fp[3] Fc[2] FC3{ BC4{ BC5{} FC6{ BC7{}}} Fp[3]} FC3 Fi[2] FC3 FC3 Fi[2] FC8{ BC9{ BC5 FC6} Fp[3]} FC8 Fi[2] FC10{ BC11{ m FC12{ m Fc[16]} FC12 FC12 FC12}} Fc Fi}


void  S16450C1 ::mf16450c1(){}

static void Test_S16450C1()
{
  {
    init_simple_test("S16450C1");
    S16450C1 lv;
    check2(sizeof(lv), ABISELECT(328,212), "sizeof(S16450C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16450C1)");
    check_field_offset(lv, s16450c1f0, 0, "S16450C1.s16450c1f0");
    check_field_offset(lv, s16450c1f1, ABISELECT(8,4), "S16450C1.s16450c1f1");
    check_field_offset(lv, s16450c1f2, ABISELECT(32,16), "S16450C1.s16450c1f2");
    check_field_offset(lv, s16450c1f3, ABISELECT(40,20), "S16450C1.s16450c1f3");
    check_field_offset(lv, s16450c1f4, ABISELECT(72,36), "S16450C1.s16450c1f4");
    check_field_offset(lv, s16450c1f5, ABISELECT(104,52), "S16450C1.s16450c1f5");
    check_field_offset(lv, s16450c1f6, ABISELECT(112,60), "S16450C1.s16450c1f6");
    check_field_offset(lv, s16450c1f7, ABISELECT(144,76), "S16450C1.s16450c1f7");
    check_field_offset(lv, s16450c1f8, ABISELECT(176,92), "S16450C1.s16450c1f8");
    check_field_offset(lv, s16450c1f9, ABISELECT(184,100), "S16450C1.s16450c1f9");
    check_field_offset(lv, s16450c1f10, ABISELECT(216,116), "S16450C1.s16450c1f10");
    check_field_offset(lv, s16450c1f11, ABISELECT(248,132), "S16450C1.s16450c1f11");
    check_field_offset(lv, s16450c1f12, ABISELECT(256,140), "S16450C1.s16450c1f12");
    check_field_offset(lv, s16450c1f13, ABISELECT(320,204), "S16450C1.s16450c1f13");
    check_field_offset(lv, s16450c1f14, ABISELECT(324,208), "S16450C1.s16450c1f14");
  }
}
static Arrange_To_Call_Me vS16450C1(Test_S16450C1, "S16450C1", ABISELECT(328,212));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20774C3  {
  long s20774c3f0[10];
  long double s20774c3f1;
  char s20774c3f2[2];
  long double s20774c3f3;
  void *s20774c3f4;
  __tsi64 s20774c3f5;
  char s20774c3f6;
  virtual void  v1(); // _ZN8S20774C32v1Ev
  virtual void  v2(); // _ZN8S20774C32v2Ev
  ~S20774C3(); // tgen
  S20774C3(); // tgen
};
//SIG(-1 S20774C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S20774C3 ::v1(){vfunc_called(this, "_ZN8S20774C32v1Ev");}
void  S20774C3 ::v2(){vfunc_called(this, "_ZN8S20774C32v2Ev");}
S20774C3 ::~S20774C3(){ note_dtor("S20774C3", this);} // tgen
S20774C3 ::S20774C3(){ note_ctor("S20774C3", this);} // tgen

static void Test_S20774C3()
{
  extern Class_Descriptor cd_S20774C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S20774C3, buf);
    S20774C3 *dp, &lv = *(dp=new (buf) S20774C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S20774C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C3)");
    check_field_offset(lv, s20774c3f0, ABISELECT(8,4), "S20774C3.s20774c3f0");
    check_field_offset(lv, s20774c3f1, ABISELECT(96,44), "S20774C3.s20774c3f1");
    check_field_offset(lv, s20774c3f2, ABISELECT(112,56), "S20774C3.s20774c3f2");
    check_field_offset(lv, s20774c3f3, ABISELECT(128,60), "S20774C3.s20774c3f3");
    check_field_offset(lv, s20774c3f4, ABISELECT(144,72), "S20774C3.s20774c3f4");
    check_field_offset(lv, s20774c3f5, ABISELECT(152,76), "S20774C3.s20774c3f5");
    check_field_offset(lv, s20774c3f6, ABISELECT(160,84), "S20774C3.s20774c3f6");
    test_class_info(&lv, &cd_S20774C3);
    dp->~S20774C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C3(Test_S20774C3, "S20774C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S20774C3C1Ev();
extern void _ZN8S20774C3D1Ev();
Name_Map name_map_S20774C3[] = {
  NSPAIR(_ZN8S20774C3C1Ev),
  NSPAIR(_ZN8S20774C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20774C3[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY vtc_S20774C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C3[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
Class_Descriptor cd_S20774C3 = {  "S20774C3", // class name
  0,0,//no base classes
  &(vtc_S20774C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S20774C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20774C3),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  S20774C4  : virtual S20774C3 {
  void *s20774c4f0;
  ::S20774C3 s20774c4f1;
  virtual  ~S20774C4(); // _ZN8S20774C4D2Ev
  S20774C4(); // tgen
};
//SIG(-1 S20774C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S20774C4()
{
  extern Class_Descriptor cd_S20774C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S20774C4, buf);
    S20774C4 *dp, &lv = *(dp=new (buf) S20774C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S20774C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C4)");
    check_base_class_offset(lv, (S20774C3*), ABISELECT(192,96), "S20774C4");
    check_field_offset(lv, s20774c4f0, ABISELECT(8,4), "S20774C4.s20774c4f0");
    check_field_offset(lv, s20774c4f1, ABISELECT(16,8), "S20774C4.s20774c4f1");
    test_class_info(&lv, &cd_S20774C4);
    dp->~S20774C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C4(Test_S20774C4, "S20774C4", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S20774C4C1Ev();
extern void _ZN8S20774C4D2Ev();
Name_Map name_map_S20774C4[] = {
  NSPAIR(_ZN8S20774C4C1Ev),
  NSPAIR(_ZN8S20774C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
static Base_Class bases_S20774C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20774C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20774C4[];
extern void _ZN8S20774C4D1Ev();
extern void _ZN8S20774C4D0Ev();
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY vtc_S20774C4[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C4D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20774C4[];
static  VTT_ENTRY vtt_S20774C4[] = {
  {&(_ZTV8S20774C4[3]),  3,11},
  {&(_ZTV8S20774C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S20774C4[];
extern  VTBL_ENTRY _ZTV8S20774C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C4[];
Class_Descriptor cd_S20774C4 = {  "S20774C4", // class name
  bases_S20774C4, 1,
  &(vtc_S20774C4[0]), // expected_vtbl_contents
  &(vtt_S20774C4[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S20774C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20774C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20774C4),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  S20774C6  : virtual S20774C3 {
  void *s20774c6f0;
  short s20774c6f1;
  ~S20774C6(); // tgen
  S20774C6(); // tgen
};
//SIG(-1 S20774C6) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S20774C6()
{
  extern Class_Descriptor cd_S20774C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S20774C6, buf);
    S20774C6 *dp, &lv = *(dp=new (buf) S20774C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S20774C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C6)");
    check_base_class_offset(lv, (S20774C3*), ABISELECT(32,12), "S20774C6");
    check_field_offset(lv, s20774c6f0, ABISELECT(8,4), "S20774C6.s20774c6f0");
    check_field_offset(lv, s20774c6f1, ABISELECT(16,8), "S20774C6.s20774c6f1");
    test_class_info(&lv, &cd_S20774C6);
    dp->~S20774C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C6(Test_S20774C6, "S20774C6", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S20774C6C1Ev();
extern void _ZN8S20774C6D1Ev();
Name_Map name_map_S20774C6[] = {
  NSPAIR(_ZN8S20774C6C1Ev),
  NSPAIR(_ZN8S20774C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
static Base_Class bases_S20774C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20774C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S20774C6[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY vtc_S20774C6[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20774C6[];
static  VTT_ENTRY vtt_S20774C6[] = {
  {&(_ZTV8S20774C6[3]),  3,9},
  {&(_ZTV8S20774C6[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S20774C6[];
extern  VTBL_ENTRY _ZTV8S20774C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C6[];
Class_Descriptor cd_S20774C6 = {  "S20774C6", // class name
  bases_S20774C6, 1,
  &(vtc_S20774C6[0]), // expected_vtbl_contents
  &(vtt_S20774C6[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S20774C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20774C6),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20774C6),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  S20774C7  : S20774C3 {
  ::S20774C3 s20774c7f0;
  ::S20774C4 s20774c7f1;
  ::S20774C3 s20774c7f2;
  virtual void  v3(); // _ZN8S20774C72v3Ev
  ~S20774C7(); // tgen
  S20774C7(); // tgen
};
//SIG(-1 S20774C7) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S20774C7()
{
  extern Class_Descriptor cd_S20774C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S20774C7, buf);
    S20774C7 *dp, &lv = *(dp=new (buf) S20774C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S20774C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C7)");
    check_base_class_offset(lv, (S20774C3*), 0, "S20774C7");
    check_field_offset(lv, s20774c7f0, ABISELECT(176,88), "S20774C7.s20774c7f0");
    check_field_offset(lv, s20774c7f1, ABISELECT(352,176), "S20774C7.s20774c7f1");
    check_field_offset(lv, s20774c7f2, ABISELECT(720,360), "S20774C7.s20774c7f2");
    test_class_info(&lv, &cd_S20774C7);
    dp->~S20774C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C7(Test_S20774C7, "S20774C7", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S20774C7C1Ev();
extern void _ZN8S20774C7D1Ev();
Name_Map name_map_S20774C7[] = {
  NSPAIR(_ZN8S20774C7C1Ev),
  NSPAIR(_ZN8S20774C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
static Base_Class bases_S20774C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20774C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20774C7[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY vtc_S20774C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C7[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
extern VTBL_ENTRY _ZTI8S20774C7[];
extern  VTBL_ENTRY _ZTV8S20774C7[];
Class_Descriptor cd_S20774C7 = {  "S20774C7", // class name
  bases_S20774C7, 1,
  &(vtc_S20774C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S20774C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20774C7),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  S20774C5  : virtual S20774C6 , virtual S20774C4 , S20774C3 , virtual S20774C7 {
  ::S20774C7 s20774c5f0;
  void *s20774c5f1;
  long s20774c5f2[8];
  __tsi64 s20774c5f3[2];
  char s20774c5f4;
  ::S20774C7 s20774c5f5[7];
  virtual  ~S20774C5(); // _ZN8S20774C5D2Ev
  S20774C5(); // tgen
};
//SIG(-1 S20774C5) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S20774C5()
{
  extern Class_Descriptor cd_S20774C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S20774C5, buf);
    S20774C5 *dp, &lv = *(dp=new (buf) S20774C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S20774C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C5)");
    check_base_class_offset(lv, (S20774C3*)(S20774C6*), ABISELECT(7472,3740), "S20774C5");
    check_base_class_offset(lv, (S20774C3*)(S20774C4*), ABISELECT(7472,3740), "S20774C5");
    check_base_class_offset(lv, (S20774C6*), ABISELECT(7440,3728), "S20774C5");
    check_base_class_offset(lv, (S20774C4*), ABISELECT(7648,3828), "S20774C5");
    /*is_ambiguous_... S20774C5::S20774C3 */ AMB_check_base_class_offset(lv, (S20774C3*), 0, "S20774C5");
    check_base_class_offset(lv, (S20774C3*)(S20774C7*), ABISELECT(7840,3924), "S20774C5");
    check_base_class_offset(lv, (S20774C7*), ABISELECT(7840,3924), "S20774C5");
    check_field_offset(lv, s20774c5f0, ABISELECT(176,88), "S20774C5.s20774c5f0");
    check_field_offset(lv, s20774c5f1, ABISELECT(1072,536), "S20774C5.s20774c5f1");
    check_field_offset(lv, s20774c5f2, ABISELECT(1080,540), "S20774C5.s20774c5f2");
    check_field_offset(lv, s20774c5f3, ABISELECT(1144,572), "S20774C5.s20774c5f3");
    check_field_offset(lv, s20774c5f4, ABISELECT(1160,588), "S20774C5.s20774c5f4");
    check_field_offset(lv, s20774c5f5, ABISELECT(1168,592), "S20774C5.s20774c5f5");
    test_class_info(&lv, &cd_S20774C5);
    dp->~S20774C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C5(Test_S20774C5, "S20774C5", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S20774C5C1Ev();
extern void _ZN8S20774C5D2Ev();
Name_Map name_map_S20774C5[] = {
  NSPAIR(_ZN8S20774C5C1Ev),
  NSPAIR(_ZN8S20774C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C6;
extern VTBL_ENTRY _ZTI8S20774C6[];
extern  VTBL_ENTRY _ZTV8S20774C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C6[];
extern Class_Descriptor cd_S20774C4;
extern VTBL_ENTRY _ZTI8S20774C4[];
extern  VTBL_ENTRY _ZTV8S20774C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C4[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C7;
extern VTBL_ENTRY _ZTI8S20774C7[];
extern  VTBL_ENTRY _ZTV8S20774C7[];
static Base_Class bases_S20774C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20774C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20774C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S20774C4,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20774C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20774C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20774C7,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20774C5[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C5D1Ev();
extern void _ZN8S20774C5D0Ev();
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev)();
extern void ABISELECT(_ZThn7648_N8S20774C5D1Ev,_ZThn3828_N8S20774C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev)();
extern void ABISELECT(_ZThn7648_N8S20774C5D0Ev,_ZThn3828_N8S20774C5D0Ev)() __attribute__((weak));
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY vtc_S20774C5[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C5D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20774C5[];
static  VTBL_ENTRY _tg__ZTV8S20774C6__8S20774C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C6__8S20774C5[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern void _ZN8S20774C4D1Ev();
extern void _ZN8S20774C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C4__8S20774C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C4D0Ev,
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C4__8S20774C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
static  VTT_ENTRY vtt_S20774C5[] = {
  {&(_ZTV8S20774C5[6]),  6,33},
  {&(_ZTV8S20774C5[13]),  13,33},
  {&(_ZTV8S20774C5[17]),  17,33},
  {&(_ZTV8S20774C5[23]),  23,33},
  {&(_ZTV8S20774C5[30]),  30,33},
  {&(_tg__ZTV8S20774C6__8S20774C5[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C6__8S20774C5[4]),  4,6},
  {&(_tg__ZTV8S20774C4__8S20774C5[3]),  3,5},
  {&(_tg__ZTV8S20774C3__8S20774C4__8S20774C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20774C5[];
extern  VTBL_ENTRY _ZTV8S20774C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C5[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20774C5D0Ev,_ZThn3828_N8S20774C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20774C5D1Ev,_ZThn3828_N8S20774C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20774C5 = {  "S20774C5", // class name
  bases_S20774C5, 6,
  &(vtc_S20774C5[0]), // expected_vtbl_contents
  &(vtt_S20774C5[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S20774C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20774C5),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20774C5),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20774C2  : virtual S20774C3 , virtual S20774C4 , S20774C5 , S20774C6 , S20774C7 {
  void *s20774c2f0;
  char s20774c2f1;
  ~S20774C2(); // tgen
  S20774C2(); // tgen
};
//SIG(-1 S20774C2) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S20774C2()
{
  extern Class_Descriptor cd_S20774C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S20774C2, buf);
    S20774C2 *dp, &lv = *(dp=new (buf) S20774C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S20774C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C2)");
    /*is_ambiguous_... S20774C2::S20774C3 */ AMB_check_base_class_offset(lv, (S20774C3*), ABISELECT(8384,4196), "S20774C2");
    check_base_class_offset(lv, (S20774C3*)(S20774C4*), ABISELECT(8384,4196), "S20774C2");
    /*is_ambiguous_... S20774C2::S20774C6 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C6*), ABISELECT(8384,4196), "S20774C2");
    /*is_ambiguous_... S20774C2::S20774C6 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C6*), ABISELECT(8384,4196), "S20774C2");
    check_base_class_offset(lv, (S20774C4*), ABISELECT(8560,4284), "S20774C2");
    check_base_class_offset(lv, (S20774C4*)(S20774C5*), ABISELECT(8560,4284), "S20774C2");
    check_base_class_offset(lv, (S20774C6*)(S20774C5*), ABISELECT(8752,4380), "S20774C2");
    /*is_ambiguous_... S20774C5::S20774C3 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C5*), 0, "S20774C2");
    /*is_ambiguous_... S20774C2::S20774C7 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C7*), ABISELECT(8784,4392), "S20774C2");
    check_base_class_offset(lv, (S20774C7*)(S20774C5*), ABISELECT(8784,4392), "S20774C2");
    check_base_class_offset(lv, (S20774C5*), 0, "S20774C2");
    /*is_ambiguous_... S20774C2::S20774C6 */ AMB_check_base_class_offset(lv, (S20774C6*), ABISELECT(7440,3728), "S20774C2");
    /*is_ambiguous_... S20774C2::S20774C7 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C7*), ABISELECT(7472,3740), "S20774C2");
    /*is_ambiguous_... S20774C2::S20774C7 */ AMB_check_base_class_offset(lv, (S20774C7*), ABISELECT(7472,3740), "S20774C2");
    check_field_offset(lv, s20774c2f0, ABISELECT(8368,4188), "S20774C2.s20774c2f0");
    check_field_offset(lv, s20774c2f1, ABISELECT(8376,4192), "S20774C2.s20774c2f1");
    test_class_info(&lv, &cd_S20774C2);
    dp->~S20774C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C2(Test_S20774C2, "S20774C2", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN8S20774C2C1Ev();
extern void _ZN8S20774C2D1Ev();
Name_Map name_map_S20774C2[] = {
  NSPAIR(_ZN8S20774C2C1Ev),
  NSPAIR(_ZN8S20774C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C4;
extern VTBL_ENTRY _ZTI8S20774C4[];
extern  VTBL_ENTRY _ZTV8S20774C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C4[];
extern Class_Descriptor cd_S20774C6;
extern VTBL_ENTRY _ZTI8S20774C6[];
extern  VTBL_ENTRY _ZTV8S20774C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C6[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C7;
extern VTBL_ENTRY _ZTI8S20774C7[];
extern  VTBL_ENTRY _ZTV8S20774C7[];
extern Class_Descriptor cd_S20774C5;
extern VTBL_ENTRY _ZTI8S20774C5[];
extern  VTBL_ENTRY _ZTV8S20774C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C5[];
extern Class_Descriptor cd_S20774C6;
extern VTBL_ENTRY _ZTI8S20774C6[];
extern  VTBL_ENTRY _ZTV8S20774C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C6[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C7;
extern VTBL_ENTRY _ZTI8S20774C7[];
extern  VTBL_ENTRY _ZTV8S20774C7[];
static Base_Class bases_S20774C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20774C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20774C4,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20774C6,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20774C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20774C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20774C7,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20774C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20774C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20774C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20774C7,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20774C2[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C2D1Ev();
extern void _ZN8S20774C2D0Ev();
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20774C2D1Ev,_ZTv0_n16_N8S20774C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C2D1Ev,_ZThn4284_N8S20774C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20774C2D0Ev,_ZTv0_n16_N8S20774C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C2D0Ev,_ZThn4284_N8S20774C2D0Ev)() __attribute__((weak));
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY vtc_S20774C2[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C2D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C2D1Ev,_ZTv0_n16_N8S20774C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C2D0Ev,_ZTv0_n16_N8S20774C2D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20774C2[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C5D1Ev();
extern void _ZN8S20774C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C5__8S20774C2[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__8S20774C5__8S20774C2[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C5__8S20774C2[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C5D1Ev,_ZThn4284_N8S20774C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C5D0Ev,_ZThn4284_N8S20774C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20774C4__8S20774C5__8S20774C2[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C7__8S20774C5__8S20774C2[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__A__8S20774C2[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C6__A__8S20774C2[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern void _ZN8S20774C4D1Ev();
extern void _ZN8S20774C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C4__8S20774C2[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C4D0Ev,
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C4__8S20774C2[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__8S20774C2[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C6__8S20774C2[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
static  VTT_ENTRY vtt_S20774C2[] = {
  {&(_ZTV8S20774C2[6]),  6,41},
  {&(_tg__ZTV8S20774C5__8S20774C2[6]),  6,10},
  {&(_tg__ZTV8S20774C6__8S20774C5__8S20774C2[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C5__8S20774C2[4]),  4,6},
  {&(_tg__ZTV8S20774C4__8S20774C5__8S20774C2[4]),  4,6},
  {&(_tg__ZTV8S20774C7__8S20774C5__8S20774C2[5]),  5,8},
  {&(_tg__ZTV8S20774C6__A__8S20774C2[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C6__A__8S20774C2[4]),  4,6},
  {&(_ZTV8S20774C2[22]),  22,41},
  {&(_ZTV8S20774C2[28]),  28,41},
  {&(_ZTV8S20774C2[33]),  33,41},
  {&(_ZTV8S20774C2[38]),  38,41},
  {&(_ZTV8S20774C2[13]),  13,41},
  {&(_tg__ZTV8S20774C4__8S20774C2[3]),  3,5},
  {&(_tg__ZTV8S20774C3__8S20774C4__8S20774C2[4]),  4,6},
  {&(_tg__ZTV8S20774C6__8S20774C2[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C6__8S20774C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20774C2[];
extern  VTBL_ENTRY _ZTV8S20774C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C2[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C5D0Ev,_ZThn4284_N8S20774C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C5D1Ev,_ZThn4284_N8S20774C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C2D0Ev,_ZTv0_n16_N8S20774C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C2D0Ev,_ZThn4284_N8S20774C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C2D1Ev,_ZTv0_n16_N8S20774C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C2D1Ev,_ZThn4284_N8S20774C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20774C2 = {  "S20774C2", // class name
  bases_S20774C2, 10,
  &(vtc_S20774C2[0]), // expected_vtbl_contents
  &(vtt_S20774C2[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI8S20774C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20774C2),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20774C2),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20774C1  : virtual S20774C2 {
  void *s20774c1f0[5];
  long double s20774c1f1;
  __tsi64 s20774c1f2[2];
  ::S20636C21_nt s20774c1f3;
  int s20774c1f4:32;
  int s20774c1f5[2];
  virtual  ~S20774C1(); // _ZN8S20774C1D2Ev
  S20774C1(); // tgen
};
//SIG(1 S20774C1) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ VBC3 vd Fp FC3} BC5{ VBC6{ VBC3 Fp Fs} VBC4 BC3 VBC7{ BC3 v3 FC3 FC4 FC3} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} vd Fp[5] FD FL[2] FC8{} Fi:32 Fi[2]}


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

static void Test_S20774C1()
{
  extern Class_Descriptor cd_S20774C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(612,1228)];
    init_test(&cd_S20774C1, buf);
    S20774C1 *dp, &lv = *(dp=new (buf) S20774C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9776,4908), "sizeof(S20774C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20774C1)");
    /*is_ambiguous_... S20774C2::S20774C3 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C2*), ABISELECT(8480,4264), "S20774C1");
    check_base_class_offset(lv, (S20774C3*)(S20774C4*), ABISELECT(8480,4264), "S20774C1");
    /*is_ambiguous_... S20774C1::S20774C6 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C6*), ABISELECT(8480,4264), "S20774C1");
    /*is_ambiguous_... S20774C2::S20774C6 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C6*)(S20774C2*), ABISELECT(8480,4264), "S20774C1");
    check_base_class_offset(lv, (S20774C4*)(S20774C2*), ABISELECT(8656,4352), "S20774C1");
    check_base_class_offset(lv, (S20774C4*)(S20774C5*)(S20774C2*), ABISELECT(8656,4352), "S20774C1");
    check_base_class_offset(lv, (S20774C6*)(S20774C5*)(S20774C2*), ABISELECT(8848,4448), "S20774C1");
    /*is_ambiguous_... S20774C5::S20774C3 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C5*)(S20774C2*), ABISELECT(96,68), "S20774C1");
    /*is_ambiguous_... S20774C1::S20774C7 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C7*), ABISELECT(8880,4460), "S20774C1");
    check_base_class_offset(lv, (S20774C7*)(S20774C5*)(S20774C2*), ABISELECT(8880,4460), "S20774C1");
    check_base_class_offset(lv, (S20774C5*)(S20774C2*), ABISELECT(96,68), "S20774C1");
    /*is_ambiguous_... S20774C2::S20774C6 */ AMB_check_base_class_offset(lv, (S20774C6*)(S20774C2*), ABISELECT(7536,3796), "S20774C1");
    /*is_ambiguous_... S20774C2::S20774C7 */ AMB_check_base_class_offset(lv, (S20774C3*)(S20774C7*)(S20774C2*), ABISELECT(7568,3808), "S20774C1");
    /*is_ambiguous_... S20774C2::S20774C7 */ AMB_check_base_class_offset(lv, (S20774C7*)(S20774C2*), ABISELECT(7568,3808), "S20774C1");
    check_base_class_offset(lv, (S20774C2*), ABISELECT(96,68), "S20774C1");
    check_field_offset(lv, s20774c1f0, ABISELECT(8,4), "S20774C1.s20774c1f0");
    check_field_offset(lv, s20774c1f1, ABISELECT(48,24), "S20774C1.s20774c1f1");
    check_field_offset(lv, s20774c1f2, ABISELECT(64,36), "S20774C1.s20774c1f2");
    check_field_offset(lv, s20774c1f3, ABISELECT(80,52), "S20774C1.s20774c1f3");
    set_bf_and_test(lv, s20774c1f4, ABISELECT(84,56), 0, 32, 1, "S20774C1");
    set_bf_and_test(lv, s20774c1f4, ABISELECT(84,56), 0, 32, hide_sll(1LL<<31), "S20774C1");
    check_field_offset(lv, s20774c1f5, ABISELECT(88,60), "S20774C1.s20774c1f5");
    test_class_info(&lv, &cd_S20774C1);
    dp->~S20774C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20774C1(Test_S20774C1, "S20774C1", ABISELECT(9776,4908));

#else // __cplusplus

extern void _ZN8S20774C1C1Ev();
extern void _ZN8S20774C1D2Ev();
Name_Map name_map_S20774C1[] = {
  NSPAIR(_ZN8S20774C1C1Ev),
  NSPAIR(_ZN8S20774C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C4;
extern VTBL_ENTRY _ZTI8S20774C4[];
extern  VTBL_ENTRY _ZTV8S20774C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C4[];
extern Class_Descriptor cd_S20774C6;
extern VTBL_ENTRY _ZTI8S20774C6[];
extern  VTBL_ENTRY _ZTV8S20774C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C6[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C7;
extern VTBL_ENTRY _ZTI8S20774C7[];
extern  VTBL_ENTRY _ZTV8S20774C7[];
extern Class_Descriptor cd_S20774C5;
extern VTBL_ENTRY _ZTI8S20774C5[];
extern  VTBL_ENTRY _ZTV8S20774C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C5[];
extern Class_Descriptor cd_S20774C6;
extern VTBL_ENTRY _ZTI8S20774C6[];
extern  VTBL_ENTRY _ZTV8S20774C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C6[];
extern Class_Descriptor cd_S20774C3;
extern VTBL_ENTRY _ZTI8S20774C3[];
extern  VTBL_ENTRY _ZTV8S20774C3[];
extern Class_Descriptor cd_S20774C7;
extern VTBL_ENTRY _ZTI8S20774C7[];
extern  VTBL_ENTRY _ZTV8S20774C7[];
extern Class_Descriptor cd_S20774C2;
extern VTBL_ENTRY _ZTI8S20774C2[];
extern  VTBL_ENTRY _ZTV8S20774C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C2[];
static Base_Class bases_S20774C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20774C3,    ABISELECT(8480,4264), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20774C4,    ABISELECT(8656,4352), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20774C6,    ABISELECT(8848,4448), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20774C3,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20774C3,    ABISELECT(8880,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20774C7,    ABISELECT(8880,4460), //bcp->offset
    46, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20774C5,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    10, //immediately_derived
  0, 0},
  {&cd_S20774C6,    ABISELECT(7536,3796), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20774C3,    ABISELECT(7568,3808), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20774C7,    ABISELECT(7568,3808), //bcp->offset
    26, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20774C2,    ABISELECT(96,68), //bcp->offset
    9, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20774C1[];
extern void _ZN8S20774C1D1Ev();
extern void _ZN8S20774C1D0Ev();
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20774C1D1Ev,_ZTv0_n36_N8S20774C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20774C1D1Ev,_ZThn68_N8S20774C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20774C1D0Ev,_ZTv0_n36_N8S20774C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20774C1D0Ev,_ZThn68_N8S20774C1D0Ev)() __attribute__((weak));
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20774C1D1Ev,_ZTv0_n16_N8S20774C1D1Ev)();
extern void ABISELECT(_ZThn8656_N8S20774C1D1Ev,_ZThn4352_N8S20774C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20774C1D0Ev,_ZTv0_n16_N8S20774C1D0Ev)();
extern void ABISELECT(_ZThn8656_N8S20774C1D0Ev,_ZThn4352_N8S20774C1D0Ev)() __attribute__((weak));
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY vtc_S20774C1[] = {
  ABISELECT(8880,4460),
  ABISELECT(8848,4448),
  ABISELECT(8656,4352),
  ABISELECT(8480,4264),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  (VTBL_ENTRY)&_ZN8S20774C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C1D0Ev,
  ABISELECT(7472,3740),
  ABISELECT(-96,-68),
  0,
  0,
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20774C1D1Ev,_ZTv0_n36_N8S20774C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20774C1D0Ev,_ZTv0_n36_N8S20774C1D0Ev),
  ABISELECT(944,468),
  ABISELECT(-7536,-3796),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  ABISELECT(-7568,-3808),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  ABISELECT(-8656,-4352),
  ABISELECT(-176,-88),
  ABISELECT(-8656,-4352),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C1D1Ev,_ZTv0_n16_N8S20774C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C1D0Ev,_ZTv0_n16_N8S20774C1D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8848,-4448),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  0,
  0,
  0,
  ABISELECT(-8880,-4460),
  (VTBL_ENTRY)&(_ZTI8S20774C1[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20774C1[];
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C2D1Ev();
extern void _ZN8S20774C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C2__8S20774C1[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C2D0Ev,
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C5D1Ev();
extern void _ZN8S20774C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C58S20774C2__8S20774C1[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__8S20774C58S20774C2__8S20774C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C58S20774C2__8S20774C1[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C5D1Ev,_ZThn4284_N8S20774C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C5D0Ev,_ZThn4284_N8S20774C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20774C4__8S20774C58S20774C2__8S20774C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C7__8S20774C58S20774C2__8S20774C1[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20774C5[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C68S20774C2__A1__8S20774C1[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C68S20774C2__A1__8S20774C1[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C2__8S20774C1[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20774C2D1Ev,_ZTv0_n16_N8S20774C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C2D1Ev,_ZThn4284_N8S20774C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20774C2D0Ev,_ZTv0_n16_N8S20774C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20774C2D0Ev,_ZThn4284_N8S20774C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20774C4__8S20774C2__8S20774C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C2D1Ev,_ZTv0_n16_N8S20774C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20774C2D0Ev,_ZTv0_n16_N8S20774C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__8S20774C2__8S20774C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
extern void _ZN8S20774C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C7__8S20774C2__8S20774C1[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20774C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__A__8S20774C2__8S20774C1[] = {
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20774C2[0]),
};
extern void _ZN8S20774C4D1Ev();
extern void _ZN8S20774C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C4__8S20774C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20774C4D0Ev,
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C4__8S20774C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20774C4[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20774C6__8S20774C1[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
};
extern void _ZN8S20774C32v1Ev();
extern void _ZN8S20774C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20774C3__8S20774C6__8S20774C1[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20774C6[0]),
  (VTBL_ENTRY)&_ZN8S20774C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20774C32v2Ev,
};
static  VTT_ENTRY vtt_S20774C1[] = {
  {&(_ZTV8S20774C1[7]),  7,54},
  {&(_ZTV8S20774C1[19]),  19,54},
  {&(_ZTV8S20774C1[35]),  35,54},
  {&(_ZTV8S20774C1[41]),  41,54},
  {&(_ZTV8S20774C1[46]),  46,54},
  {&(_ZTV8S20774C1[51]),  51,54},
  {&(_ZTV8S20774C1[26]),  26,54},
  {&(_ZTV8S20774C1[28]),  28,54},
  {&(_tg__ZTV8S20774C2__8S20774C1[6]),  6,10},
  {&(_tg__ZTV8S20774C58S20774C2__8S20774C1[6]),  6,10},
  {&(_tg__ZTV8S20774C6__8S20774C58S20774C2__8S20774C1[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C58S20774C2__8S20774C1[4]),  4,6},
  {&(_tg__ZTV8S20774C4__8S20774C58S20774C2__8S20774C1[4]),  4,6},
  {&(_tg__ZTV8S20774C7__8S20774C58S20774C2__8S20774C1[5]),  5,8},
  {&(_tg__ZTV8S20774C68S20774C2__A1__8S20774C1[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C68S20774C2__A1__8S20774C1[4]),  4,6},
  {&(_tg__ZTV8S20774C3__8S20774C2__8S20774C1[4]),  4,6},
  {&(_tg__ZTV8S20774C4__8S20774C2__8S20774C1[4]),  4,6},
  {&(_tg__ZTV8S20774C6__8S20774C2__8S20774C1[3]),  3,3},
  {&(_tg__ZTV8S20774C7__8S20774C2__8S20774C1[5]),  5,8},
  {&(_tg__ZTV8S20774C6__A__8S20774C2__8S20774C1[3]),  3,3},
  {&(_tg__ZTV8S20774C4__8S20774C1[3]),  3,5},
  {&(_tg__ZTV8S20774C3__8S20774C4__8S20774C1[4]),  4,6},
  {&(_tg__ZTV8S20774C6__8S20774C1[3]),  3,3},
  {&(_tg__ZTV8S20774C3__8S20774C6__8S20774C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20774C1[];
extern  VTBL_ENTRY _ZTV8S20774C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20774C1[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C2D0Ev,_ZTv0_n16_N8S20774C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C2D0Ev,_ZThn4284_N8S20774C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C2D1Ev,_ZTv0_n16_N8S20774C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C2D1Ev,_ZThn4284_N8S20774C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C5D0Ev,_ZTv0_n16_N8S20774C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C5D0Ev,_ZThn4284_N8S20774C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C5D1Ev,_ZTv0_n16_N8S20774C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20774C5D1Ev,_ZThn4284_N8S20774C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C1D0Ev,_ZTv0_n16_N8S20774C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8656_N8S20774C1D0Ev,_ZThn4352_N8S20774C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20774C1D1Ev,_ZTv0_n16_N8S20774C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8656_N8S20774C1D1Ev,_ZThn4352_N8S20774C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20774C1D0Ev,_ZTv0_n36_N8S20774C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20774C1D0Ev,_ZThn68_N8S20774C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20774C1D1Ev,_ZTv0_n36_N8S20774C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20774C1D1Ev,_ZThn68_N8S20774C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20774C1 = {  "S20774C1", // class name
  bases_S20774C1, 11,
  &(vtc_S20774C1[0]), // expected_vtbl_contents
  &(vtt_S20774C1[0]), // expected_vtt_contents
  ABISELECT(9776,4908), // object size
  NSPAIRA(_ZTI8S20774C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20774C1),54, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20774C1),25, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20775C3  {
  long s20775c3f0[10];
  long double s20775c3f1;
  char s20775c3f2[2];
  long double s20775c3f3;
  void *s20775c3f4;
  __tsi64 s20775c3f5;
  char s20775c3f6;
  virtual void  v1(); // _ZN8S20775C32v1Ev
  virtual void  v2(); // _ZN8S20775C32v2Ev
  ~S20775C3(); // tgen
  S20775C3(); // tgen
};
//SIG(-1 S20775C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S20775C3 ::v1(){vfunc_called(this, "_ZN8S20775C32v1Ev");}
void  S20775C3 ::v2(){vfunc_called(this, "_ZN8S20775C32v2Ev");}
S20775C3 ::~S20775C3(){ note_dtor("S20775C3", this);} // tgen
S20775C3 ::S20775C3(){ note_ctor("S20775C3", this);} // tgen

static void Test_S20775C3()
{
  extern Class_Descriptor cd_S20775C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S20775C3, buf);
    S20775C3 *dp, &lv = *(dp=new (buf) S20775C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S20775C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C3)");
    check_field_offset(lv, s20775c3f0, ABISELECT(8,4), "S20775C3.s20775c3f0");
    check_field_offset(lv, s20775c3f1, ABISELECT(96,44), "S20775C3.s20775c3f1");
    check_field_offset(lv, s20775c3f2, ABISELECT(112,56), "S20775C3.s20775c3f2");
    check_field_offset(lv, s20775c3f3, ABISELECT(128,60), "S20775C3.s20775c3f3");
    check_field_offset(lv, s20775c3f4, ABISELECT(144,72), "S20775C3.s20775c3f4");
    check_field_offset(lv, s20775c3f5, ABISELECT(152,76), "S20775C3.s20775c3f5");
    check_field_offset(lv, s20775c3f6, ABISELECT(160,84), "S20775C3.s20775c3f6");
    test_class_info(&lv, &cd_S20775C3);
    dp->~S20775C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C3(Test_S20775C3, "S20775C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S20775C3C1Ev();
extern void _ZN8S20775C3D1Ev();
Name_Map name_map_S20775C3[] = {
  NSPAIR(_ZN8S20775C3C1Ev),
  NSPAIR(_ZN8S20775C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20775C3[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY vtc_S20775C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C3[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
Class_Descriptor cd_S20775C3 = {  "S20775C3", // class name
  0,0,//no base classes
  &(vtc_S20775C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S20775C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20775C3),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  S20775C4  : virtual S20775C3 {
  void *s20775c4f0;
  ::S20775C3 s20775c4f1;
  virtual  ~S20775C4(); // _ZN8S20775C4D2Ev
  S20775C4(); // tgen
};
//SIG(-1 S20775C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S20775C4()
{
  extern Class_Descriptor cd_S20775C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S20775C4, buf);
    S20775C4 *dp, &lv = *(dp=new (buf) S20775C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S20775C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C4)");
    check_base_class_offset(lv, (S20775C3*), ABISELECT(192,96), "S20775C4");
    check_field_offset(lv, s20775c4f0, ABISELECT(8,4), "S20775C4.s20775c4f0");
    check_field_offset(lv, s20775c4f1, ABISELECT(16,8), "S20775C4.s20775c4f1");
    test_class_info(&lv, &cd_S20775C4);
    dp->~S20775C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C4(Test_S20775C4, "S20775C4", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S20775C4C1Ev();
extern void _ZN8S20775C4D2Ev();
Name_Map name_map_S20775C4[] = {
  NSPAIR(_ZN8S20775C4C1Ev),
  NSPAIR(_ZN8S20775C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
static Base_Class bases_S20775C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20775C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20775C4[];
extern void _ZN8S20775C4D1Ev();
extern void _ZN8S20775C4D0Ev();
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY vtc_S20775C4[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C4D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20775C4[];
static  VTT_ENTRY vtt_S20775C4[] = {
  {&(_ZTV8S20775C4[3]),  3,11},
  {&(_ZTV8S20775C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S20775C4[];
extern  VTBL_ENTRY _ZTV8S20775C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C4[];
Class_Descriptor cd_S20775C4 = {  "S20775C4", // class name
  bases_S20775C4, 1,
  &(vtc_S20775C4[0]), // expected_vtbl_contents
  &(vtt_S20775C4[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S20775C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20775C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20775C4),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  S20775C6  : virtual S20775C3 {
  void *s20775c6f0;
  short s20775c6f1;
  ~S20775C6(); // tgen
  S20775C6(); // tgen
};
//SIG(-1 S20775C6) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S20775C6()
{
  extern Class_Descriptor cd_S20775C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S20775C6, buf);
    S20775C6 *dp, &lv = *(dp=new (buf) S20775C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S20775C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C6)");
    check_base_class_offset(lv, (S20775C3*), ABISELECT(32,12), "S20775C6");
    check_field_offset(lv, s20775c6f0, ABISELECT(8,4), "S20775C6.s20775c6f0");
    check_field_offset(lv, s20775c6f1, ABISELECT(16,8), "S20775C6.s20775c6f1");
    test_class_info(&lv, &cd_S20775C6);
    dp->~S20775C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C6(Test_S20775C6, "S20775C6", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S20775C6C1Ev();
extern void _ZN8S20775C6D1Ev();
Name_Map name_map_S20775C6[] = {
  NSPAIR(_ZN8S20775C6C1Ev),
  NSPAIR(_ZN8S20775C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
static Base_Class bases_S20775C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20775C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S20775C6[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY vtc_S20775C6[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20775C6[];
static  VTT_ENTRY vtt_S20775C6[] = {
  {&(_ZTV8S20775C6[3]),  3,9},
  {&(_ZTV8S20775C6[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S20775C6[];
extern  VTBL_ENTRY _ZTV8S20775C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C6[];
Class_Descriptor cd_S20775C6 = {  "S20775C6", // class name
  bases_S20775C6, 1,
  &(vtc_S20775C6[0]), // expected_vtbl_contents
  &(vtt_S20775C6[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S20775C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20775C6),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20775C6),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  S20775C7  : S20775C3 {
  ::S20775C3 s20775c7f0;
  ::S20775C4 s20775c7f1;
  ::S20775C3 s20775c7f2;
  virtual void  v3(); // _ZN8S20775C72v3Ev
  ~S20775C7(); // tgen
  S20775C7(); // tgen
};
//SIG(-1 S20775C7) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S20775C7()
{
  extern Class_Descriptor cd_S20775C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S20775C7, buf);
    S20775C7 *dp, &lv = *(dp=new (buf) S20775C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S20775C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C7)");
    check_base_class_offset(lv, (S20775C3*), 0, "S20775C7");
    check_field_offset(lv, s20775c7f0, ABISELECT(176,88), "S20775C7.s20775c7f0");
    check_field_offset(lv, s20775c7f1, ABISELECT(352,176), "S20775C7.s20775c7f1");
    check_field_offset(lv, s20775c7f2, ABISELECT(720,360), "S20775C7.s20775c7f2");
    test_class_info(&lv, &cd_S20775C7);
    dp->~S20775C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C7(Test_S20775C7, "S20775C7", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S20775C7C1Ev();
extern void _ZN8S20775C7D1Ev();
Name_Map name_map_S20775C7[] = {
  NSPAIR(_ZN8S20775C7C1Ev),
  NSPAIR(_ZN8S20775C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
static Base_Class bases_S20775C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20775C7[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY vtc_S20775C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C7[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
extern VTBL_ENTRY _ZTI8S20775C7[];
extern  VTBL_ENTRY _ZTV8S20775C7[];
Class_Descriptor cd_S20775C7 = {  "S20775C7", // class name
  bases_S20775C7, 1,
  &(vtc_S20775C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S20775C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20775C7),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  S20775C5  : virtual S20775C6 , virtual S20775C4 , S20775C3 , virtual S20775C7 {
  ::S20775C7 s20775c5f0;
  void *s20775c5f1;
  long s20775c5f2[8];
  __tsi64 s20775c5f3[2];
  char s20775c5f4;
  ::S20775C7 s20775c5f5[7];
  virtual  ~S20775C5(); // _ZN8S20775C5D2Ev
  S20775C5(); // tgen
};
//SIG(-1 S20775C5) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S20775C5()
{
  extern Class_Descriptor cd_S20775C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S20775C5, buf);
    S20775C5 *dp, &lv = *(dp=new (buf) S20775C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S20775C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C5)");
    check_base_class_offset(lv, (S20775C3*)(S20775C6*), ABISELECT(7472,3740), "S20775C5");
    check_base_class_offset(lv, (S20775C3*)(S20775C4*), ABISELECT(7472,3740), "S20775C5");
    check_base_class_offset(lv, (S20775C6*), ABISELECT(7440,3728), "S20775C5");
    check_base_class_offset(lv, (S20775C4*), ABISELECT(7648,3828), "S20775C5");
    /*is_ambiguous_... S20775C5::S20775C3 */ AMB_check_base_class_offset(lv, (S20775C3*), 0, "S20775C5");
    check_base_class_offset(lv, (S20775C3*)(S20775C7*), ABISELECT(7840,3924), "S20775C5");
    check_base_class_offset(lv, (S20775C7*), ABISELECT(7840,3924), "S20775C5");
    check_field_offset(lv, s20775c5f0, ABISELECT(176,88), "S20775C5.s20775c5f0");
    check_field_offset(lv, s20775c5f1, ABISELECT(1072,536), "S20775C5.s20775c5f1");
    check_field_offset(lv, s20775c5f2, ABISELECT(1080,540), "S20775C5.s20775c5f2");
    check_field_offset(lv, s20775c5f3, ABISELECT(1144,572), "S20775C5.s20775c5f3");
    check_field_offset(lv, s20775c5f4, ABISELECT(1160,588), "S20775C5.s20775c5f4");
    check_field_offset(lv, s20775c5f5, ABISELECT(1168,592), "S20775C5.s20775c5f5");
    test_class_info(&lv, &cd_S20775C5);
    dp->~S20775C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C5(Test_S20775C5, "S20775C5", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S20775C5C1Ev();
extern void _ZN8S20775C5D2Ev();
Name_Map name_map_S20775C5[] = {
  NSPAIR(_ZN8S20775C5C1Ev),
  NSPAIR(_ZN8S20775C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C6;
extern VTBL_ENTRY _ZTI8S20775C6[];
extern  VTBL_ENTRY _ZTV8S20775C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C6[];
extern Class_Descriptor cd_S20775C4;
extern VTBL_ENTRY _ZTI8S20775C4[];
extern  VTBL_ENTRY _ZTV8S20775C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C4[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C7;
extern VTBL_ENTRY _ZTI8S20775C7[];
extern  VTBL_ENTRY _ZTV8S20775C7[];
static Base_Class bases_S20775C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20775C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20775C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S20775C4,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20775C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20775C7,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20775C5[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C5D1Ev();
extern void _ZN8S20775C5D0Ev();
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev)();
extern void ABISELECT(_ZThn7648_N8S20775C5D1Ev,_ZThn3828_N8S20775C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev)();
extern void ABISELECT(_ZThn7648_N8S20775C5D0Ev,_ZThn3828_N8S20775C5D0Ev)() __attribute__((weak));
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY vtc_S20775C5[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C5D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20775C5[];
static  VTBL_ENTRY _tg__ZTV8S20775C6__8S20775C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C6__8S20775C5[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern void _ZN8S20775C4D1Ev();
extern void _ZN8S20775C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C4__8S20775C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C4D0Ev,
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C4__8S20775C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
static  VTT_ENTRY vtt_S20775C5[] = {
  {&(_ZTV8S20775C5[6]),  6,33},
  {&(_ZTV8S20775C5[13]),  13,33},
  {&(_ZTV8S20775C5[17]),  17,33},
  {&(_ZTV8S20775C5[23]),  23,33},
  {&(_ZTV8S20775C5[30]),  30,33},
  {&(_tg__ZTV8S20775C6__8S20775C5[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C6__8S20775C5[4]),  4,6},
  {&(_tg__ZTV8S20775C4__8S20775C5[3]),  3,5},
  {&(_tg__ZTV8S20775C3__8S20775C4__8S20775C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20775C5[];
extern  VTBL_ENTRY _ZTV8S20775C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C5[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20775C5D0Ev,_ZThn3828_N8S20775C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20775C5D1Ev,_ZThn3828_N8S20775C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20775C5 = {  "S20775C5", // class name
  bases_S20775C5, 6,
  &(vtc_S20775C5[0]), // expected_vtbl_contents
  &(vtt_S20775C5[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S20775C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20775C5),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20775C5),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20775C2  : virtual S20775C3 , virtual S20775C4 , S20775C5 , S20775C6 , S20775C7 {
  void *s20775c2f0;
  char s20775c2f1;
  ~S20775C2(); // tgen
  S20775C2(); // tgen
};
//SIG(-1 S20775C2) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S20775C2()
{
  extern Class_Descriptor cd_S20775C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S20775C2, buf);
    S20775C2 *dp, &lv = *(dp=new (buf) S20775C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S20775C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C2)");
    /*is_ambiguous_... S20775C2::S20775C3 */ AMB_check_base_class_offset(lv, (S20775C3*), ABISELECT(8384,4196), "S20775C2");
    check_base_class_offset(lv, (S20775C3*)(S20775C4*), ABISELECT(8384,4196), "S20775C2");
    /*is_ambiguous_... S20775C2::S20775C6 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C6*), ABISELECT(8384,4196), "S20775C2");
    /*is_ambiguous_... S20775C2::S20775C6 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C6*), ABISELECT(8384,4196), "S20775C2");
    check_base_class_offset(lv, (S20775C4*), ABISELECT(8560,4284), "S20775C2");
    check_base_class_offset(lv, (S20775C4*)(S20775C5*), ABISELECT(8560,4284), "S20775C2");
    check_base_class_offset(lv, (S20775C6*)(S20775C5*), ABISELECT(8752,4380), "S20775C2");
    /*is_ambiguous_... S20775C5::S20775C3 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C5*), 0, "S20775C2");
    /*is_ambiguous_... S20775C2::S20775C7 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C7*), ABISELECT(8784,4392), "S20775C2");
    check_base_class_offset(lv, (S20775C7*)(S20775C5*), ABISELECT(8784,4392), "S20775C2");
    check_base_class_offset(lv, (S20775C5*), 0, "S20775C2");
    /*is_ambiguous_... S20775C2::S20775C6 */ AMB_check_base_class_offset(lv, (S20775C6*), ABISELECT(7440,3728), "S20775C2");
    /*is_ambiguous_... S20775C2::S20775C7 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C7*), ABISELECT(7472,3740), "S20775C2");
    /*is_ambiguous_... S20775C2::S20775C7 */ AMB_check_base_class_offset(lv, (S20775C7*), ABISELECT(7472,3740), "S20775C2");
    check_field_offset(lv, s20775c2f0, ABISELECT(8368,4188), "S20775C2.s20775c2f0");
    check_field_offset(lv, s20775c2f1, ABISELECT(8376,4192), "S20775C2.s20775c2f1");
    test_class_info(&lv, &cd_S20775C2);
    dp->~S20775C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C2(Test_S20775C2, "S20775C2", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN8S20775C2C1Ev();
extern void _ZN8S20775C2D1Ev();
Name_Map name_map_S20775C2[] = {
  NSPAIR(_ZN8S20775C2C1Ev),
  NSPAIR(_ZN8S20775C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C4;
extern VTBL_ENTRY _ZTI8S20775C4[];
extern  VTBL_ENTRY _ZTV8S20775C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C4[];
extern Class_Descriptor cd_S20775C6;
extern VTBL_ENTRY _ZTI8S20775C6[];
extern  VTBL_ENTRY _ZTV8S20775C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C6[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C7;
extern VTBL_ENTRY _ZTI8S20775C7[];
extern  VTBL_ENTRY _ZTV8S20775C7[];
extern Class_Descriptor cd_S20775C5;
extern VTBL_ENTRY _ZTI8S20775C5[];
extern  VTBL_ENTRY _ZTV8S20775C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C5[];
extern Class_Descriptor cd_S20775C6;
extern VTBL_ENTRY _ZTI8S20775C6[];
extern  VTBL_ENTRY _ZTV8S20775C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C6[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C7;
extern VTBL_ENTRY _ZTI8S20775C7[];
extern  VTBL_ENTRY _ZTV8S20775C7[];
static Base_Class bases_S20775C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20775C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20775C4,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20775C6,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20775C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20775C7,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20775C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20775C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20775C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20775C7,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20775C2[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C2D1Ev();
extern void _ZN8S20775C2D0Ev();
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20775C2D1Ev,_ZTv0_n16_N8S20775C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C2D1Ev,_ZThn4284_N8S20775C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20775C2D0Ev,_ZTv0_n16_N8S20775C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C2D0Ev,_ZThn4284_N8S20775C2D0Ev)() __attribute__((weak));
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY vtc_S20775C2[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C2D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C2D1Ev,_ZTv0_n16_N8S20775C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C2D0Ev,_ZTv0_n16_N8S20775C2D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20775C2[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C5D1Ev();
extern void _ZN8S20775C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C5__8S20775C2[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__8S20775C5__8S20775C2[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C5__8S20775C2[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C5D1Ev,_ZThn4284_N8S20775C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C5D0Ev,_ZThn4284_N8S20775C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20775C4__8S20775C5__8S20775C2[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C7__8S20775C5__8S20775C2[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__A__8S20775C2[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C6__A__8S20775C2[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern void _ZN8S20775C4D1Ev();
extern void _ZN8S20775C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C4__8S20775C2[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C4D0Ev,
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C4__8S20775C2[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__8S20775C2[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C6__8S20775C2[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
static  VTT_ENTRY vtt_S20775C2[] = {
  {&(_ZTV8S20775C2[6]),  6,41},
  {&(_tg__ZTV8S20775C5__8S20775C2[6]),  6,10},
  {&(_tg__ZTV8S20775C6__8S20775C5__8S20775C2[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C5__8S20775C2[4]),  4,6},
  {&(_tg__ZTV8S20775C4__8S20775C5__8S20775C2[4]),  4,6},
  {&(_tg__ZTV8S20775C7__8S20775C5__8S20775C2[5]),  5,8},
  {&(_tg__ZTV8S20775C6__A__8S20775C2[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C6__A__8S20775C2[4]),  4,6},
  {&(_ZTV8S20775C2[22]),  22,41},
  {&(_ZTV8S20775C2[28]),  28,41},
  {&(_ZTV8S20775C2[33]),  33,41},
  {&(_ZTV8S20775C2[38]),  38,41},
  {&(_ZTV8S20775C2[13]),  13,41},
  {&(_tg__ZTV8S20775C4__8S20775C2[3]),  3,5},
  {&(_tg__ZTV8S20775C3__8S20775C4__8S20775C2[4]),  4,6},
  {&(_tg__ZTV8S20775C6__8S20775C2[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C6__8S20775C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20775C2[];
extern  VTBL_ENTRY _ZTV8S20775C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C2[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C5D0Ev,_ZThn4284_N8S20775C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C5D1Ev,_ZThn4284_N8S20775C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C2D0Ev,_ZTv0_n16_N8S20775C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C2D0Ev,_ZThn4284_N8S20775C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C2D1Ev,_ZTv0_n16_N8S20775C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C2D1Ev,_ZThn4284_N8S20775C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20775C2 = {  "S20775C2", // class name
  bases_S20775C2, 10,
  &(vtc_S20775C2[0]), // expected_vtbl_contents
  &(vtt_S20775C2[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI8S20775C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20775C2),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20775C2),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20775C1  : virtual S20775C2 {
  void *s20775c1f0[5];
  long double s20775c1f1;
  __tsi64 s20775c1f2[2];
  ::S20636C21_nt s20775c1f3;
  __tsi64 s20775c1f4:34;
  int s20775c1f5[2];
  virtual  ~S20775C1(); // _ZN8S20775C1D2Ev
  S20775C1(); // tgen
};
//SIG(1 S20775C1) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ VBC3 vd Fp FC3} BC5{ VBC6{ VBC3 Fp Fs} VBC4 BC3 VBC7{ BC3 v3 FC3 FC4 FC3} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} vd Fp[5] FD FL[2] FC8{} FL:34 Fi[2]}


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

static void Test_S20775C1()
{
  extern Class_Descriptor cd_S20775C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(612,1228)];
    init_test(&cd_S20775C1, buf);
    S20775C1 *dp, &lv = *(dp=new (buf) S20775C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9776,4908), "sizeof(S20775C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20775C1)");
    /*is_ambiguous_... S20775C2::S20775C3 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C2*), ABISELECT(8480,4264), "S20775C1");
    check_base_class_offset(lv, (S20775C3*)(S20775C4*), ABISELECT(8480,4264), "S20775C1");
    /*is_ambiguous_... S20775C1::S20775C6 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C6*), ABISELECT(8480,4264), "S20775C1");
    /*is_ambiguous_... S20775C2::S20775C6 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C6*)(S20775C2*), ABISELECT(8480,4264), "S20775C1");
    check_base_class_offset(lv, (S20775C4*)(S20775C2*), ABISELECT(8656,4352), "S20775C1");
    check_base_class_offset(lv, (S20775C4*)(S20775C5*)(S20775C2*), ABISELECT(8656,4352), "S20775C1");
    check_base_class_offset(lv, (S20775C6*)(S20775C5*)(S20775C2*), ABISELECT(8848,4448), "S20775C1");
    /*is_ambiguous_... S20775C5::S20775C3 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C5*)(S20775C2*), ABISELECT(96,68), "S20775C1");
    /*is_ambiguous_... S20775C1::S20775C7 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C7*), ABISELECT(8880,4460), "S20775C1");
    check_base_class_offset(lv, (S20775C7*)(S20775C5*)(S20775C2*), ABISELECT(8880,4460), "S20775C1");
    check_base_class_offset(lv, (S20775C5*)(S20775C2*), ABISELECT(96,68), "S20775C1");
    /*is_ambiguous_... S20775C2::S20775C6 */ AMB_check_base_class_offset(lv, (S20775C6*)(S20775C2*), ABISELECT(7536,3796), "S20775C1");
    /*is_ambiguous_... S20775C2::S20775C7 */ AMB_check_base_class_offset(lv, (S20775C3*)(S20775C7*)(S20775C2*), ABISELECT(7568,3808), "S20775C1");
    /*is_ambiguous_... S20775C2::S20775C7 */ AMB_check_base_class_offset(lv, (S20775C7*)(S20775C2*), ABISELECT(7568,3808), "S20775C1");
    check_base_class_offset(lv, (S20775C2*), ABISELECT(96,68), "S20775C1");
    check_field_offset(lv, s20775c1f0, ABISELECT(8,4), "S20775C1.s20775c1f0");
    check_field_offset(lv, s20775c1f1, ABISELECT(48,24), "S20775C1.s20775c1f1");
    check_field_offset(lv, s20775c1f2, ABISELECT(64,36), "S20775C1.s20775c1f2");
    check_field_offset(lv, s20775c1f3, ABISELECT(80,52), "S20775C1.s20775c1f3");
    set_bf_and_test(lv, s20775c1f4, ABISELECT(81,53), 0, 34, 1, "S20775C1");
    set_bf_and_test(lv, s20775c1f4, ABISELECT(81,53), 0, 34, hide_sll(1LL<<33), "S20775C1");
    check_field_offset(lv, s20775c1f5, ABISELECT(88,60), "S20775C1.s20775c1f5");
    test_class_info(&lv, &cd_S20775C1);
    dp->~S20775C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20775C1(Test_S20775C1, "S20775C1", ABISELECT(9776,4908));

#else // __cplusplus

extern void _ZN8S20775C1C1Ev();
extern void _ZN8S20775C1D2Ev();
Name_Map name_map_S20775C1[] = {
  NSPAIR(_ZN8S20775C1C1Ev),
  NSPAIR(_ZN8S20775C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C4;
extern VTBL_ENTRY _ZTI8S20775C4[];
extern  VTBL_ENTRY _ZTV8S20775C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C4[];
extern Class_Descriptor cd_S20775C6;
extern VTBL_ENTRY _ZTI8S20775C6[];
extern  VTBL_ENTRY _ZTV8S20775C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C6[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C7;
extern VTBL_ENTRY _ZTI8S20775C7[];
extern  VTBL_ENTRY _ZTV8S20775C7[];
extern Class_Descriptor cd_S20775C5;
extern VTBL_ENTRY _ZTI8S20775C5[];
extern  VTBL_ENTRY _ZTV8S20775C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C5[];
extern Class_Descriptor cd_S20775C6;
extern VTBL_ENTRY _ZTI8S20775C6[];
extern  VTBL_ENTRY _ZTV8S20775C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C6[];
extern Class_Descriptor cd_S20775C3;
extern VTBL_ENTRY _ZTI8S20775C3[];
extern  VTBL_ENTRY _ZTV8S20775C3[];
extern Class_Descriptor cd_S20775C7;
extern VTBL_ENTRY _ZTI8S20775C7[];
extern  VTBL_ENTRY _ZTV8S20775C7[];
extern Class_Descriptor cd_S20775C2;
extern VTBL_ENTRY _ZTI8S20775C2[];
extern  VTBL_ENTRY _ZTV8S20775C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C2[];
static Base_Class bases_S20775C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20775C3,    ABISELECT(8480,4264), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20775C4,    ABISELECT(8656,4352), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20775C6,    ABISELECT(8848,4448), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20775C3,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20775C3,    ABISELECT(8880,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20775C7,    ABISELECT(8880,4460), //bcp->offset
    46, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20775C5,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    10, //immediately_derived
  0, 0},
  {&cd_S20775C6,    ABISELECT(7536,3796), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20775C3,    ABISELECT(7568,3808), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20775C7,    ABISELECT(7568,3808), //bcp->offset
    26, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20775C2,    ABISELECT(96,68), //bcp->offset
    9, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20775C1[];
extern void _ZN8S20775C1D1Ev();
extern void _ZN8S20775C1D0Ev();
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20775C1D1Ev,_ZTv0_n36_N8S20775C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20775C1D1Ev,_ZThn68_N8S20775C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20775C1D0Ev,_ZTv0_n36_N8S20775C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20775C1D0Ev,_ZThn68_N8S20775C1D0Ev)() __attribute__((weak));
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20775C1D1Ev,_ZTv0_n16_N8S20775C1D1Ev)();
extern void ABISELECT(_ZThn8656_N8S20775C1D1Ev,_ZThn4352_N8S20775C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20775C1D0Ev,_ZTv0_n16_N8S20775C1D0Ev)();
extern void ABISELECT(_ZThn8656_N8S20775C1D0Ev,_ZThn4352_N8S20775C1D0Ev)() __attribute__((weak));
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY vtc_S20775C1[] = {
  ABISELECT(8880,4460),
  ABISELECT(8848,4448),
  ABISELECT(8656,4352),
  ABISELECT(8480,4264),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  (VTBL_ENTRY)&_ZN8S20775C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C1D0Ev,
  ABISELECT(7472,3740),
  ABISELECT(-96,-68),
  0,
  0,
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20775C1D1Ev,_ZTv0_n36_N8S20775C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20775C1D0Ev,_ZTv0_n36_N8S20775C1D0Ev),
  ABISELECT(944,468),
  ABISELECT(-7536,-3796),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  ABISELECT(-7568,-3808),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
  0,
  0,
  ABISELECT(-8480,-4264),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  ABISELECT(-8656,-4352),
  ABISELECT(-176,-88),
  ABISELECT(-8656,-4352),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C1D1Ev,_ZTv0_n16_N8S20775C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C1D0Ev,_ZTv0_n16_N8S20775C1D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8848,-4448),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  0,
  0,
  0,
  ABISELECT(-8880,-4460),
  (VTBL_ENTRY)&(_ZTI8S20775C1[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20775C1[];
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C2D1Ev();
extern void _ZN8S20775C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C2__8S20775C1[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C2D0Ev,
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C5D1Ev();
extern void _ZN8S20775C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C58S20775C2__8S20775C1[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__8S20775C58S20775C2__8S20775C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C58S20775C2__8S20775C1[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C5D1Ev,_ZThn4284_N8S20775C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C5D0Ev,_ZThn4284_N8S20775C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20775C4__8S20775C58S20775C2__8S20775C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C7__8S20775C58S20775C2__8S20775C1[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20775C5[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C68S20775C2__A1__8S20775C1[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C68S20775C2__A1__8S20775C1[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C2__8S20775C1[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20775C2D1Ev,_ZTv0_n16_N8S20775C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C2D1Ev,_ZThn4284_N8S20775C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20775C2D0Ev,_ZTv0_n16_N8S20775C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20775C2D0Ev,_ZThn4284_N8S20775C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20775C4__8S20775C2__8S20775C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C2D1Ev,_ZTv0_n16_N8S20775C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20775C2D0Ev,_ZTv0_n16_N8S20775C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__8S20775C2__8S20775C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
extern void _ZN8S20775C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C7__8S20775C2__8S20775C1[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20775C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__A__8S20775C2__8S20775C1[] = {
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20775C2[0]),
};
extern void _ZN8S20775C4D1Ev();
extern void _ZN8S20775C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C4__8S20775C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20775C4D0Ev,
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C4__8S20775C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20775C4[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20775C6__8S20775C1[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
};
extern void _ZN8S20775C32v1Ev();
extern void _ZN8S20775C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20775C3__8S20775C6__8S20775C1[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20775C6[0]),
  (VTBL_ENTRY)&_ZN8S20775C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20775C32v2Ev,
};
static  VTT_ENTRY vtt_S20775C1[] = {
  {&(_ZTV8S20775C1[7]),  7,54},
  {&(_ZTV8S20775C1[19]),  19,54},
  {&(_ZTV8S20775C1[35]),  35,54},
  {&(_ZTV8S20775C1[41]),  41,54},
  {&(_ZTV8S20775C1[46]),  46,54},
  {&(_ZTV8S20775C1[51]),  51,54},
  {&(_ZTV8S20775C1[26]),  26,54},
  {&(_ZTV8S20775C1[28]),  28,54},
  {&(_tg__ZTV8S20775C2__8S20775C1[6]),  6,10},
  {&(_tg__ZTV8S20775C58S20775C2__8S20775C1[6]),  6,10},
  {&(_tg__ZTV8S20775C6__8S20775C58S20775C2__8S20775C1[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C58S20775C2__8S20775C1[4]),  4,6},
  {&(_tg__ZTV8S20775C4__8S20775C58S20775C2__8S20775C1[4]),  4,6},
  {&(_tg__ZTV8S20775C7__8S20775C58S20775C2__8S20775C1[5]),  5,8},
  {&(_tg__ZTV8S20775C68S20775C2__A1__8S20775C1[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C68S20775C2__A1__8S20775C1[4]),  4,6},
  {&(_tg__ZTV8S20775C3__8S20775C2__8S20775C1[4]),  4,6},
  {&(_tg__ZTV8S20775C4__8S20775C2__8S20775C1[4]),  4,6},
  {&(_tg__ZTV8S20775C6__8S20775C2__8S20775C1[3]),  3,3},
  {&(_tg__ZTV8S20775C7__8S20775C2__8S20775C1[5]),  5,8},
  {&(_tg__ZTV8S20775C6__A__8S20775C2__8S20775C1[3]),  3,3},
  {&(_tg__ZTV8S20775C4__8S20775C1[3]),  3,5},
  {&(_tg__ZTV8S20775C3__8S20775C4__8S20775C1[4]),  4,6},
  {&(_tg__ZTV8S20775C6__8S20775C1[3]),  3,3},
  {&(_tg__ZTV8S20775C3__8S20775C6__8S20775C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20775C1[];
extern  VTBL_ENTRY _ZTV8S20775C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20775C1[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C2D0Ev,_ZTv0_n16_N8S20775C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C2D0Ev,_ZThn4284_N8S20775C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C2D1Ev,_ZTv0_n16_N8S20775C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C2D1Ev,_ZThn4284_N8S20775C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C5D0Ev,_ZTv0_n16_N8S20775C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C5D0Ev,_ZThn4284_N8S20775C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C5D1Ev,_ZTv0_n16_N8S20775C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20775C5D1Ev,_ZThn4284_N8S20775C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C1D0Ev,_ZTv0_n16_N8S20775C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8656_N8S20775C1D0Ev,_ZThn4352_N8S20775C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20775C1D1Ev,_ZTv0_n16_N8S20775C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8656_N8S20775C1D1Ev,_ZThn4352_N8S20775C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20775C1D0Ev,_ZTv0_n36_N8S20775C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20775C1D0Ev,_ZThn68_N8S20775C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20775C1D1Ev,_ZTv0_n36_N8S20775C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20775C1D1Ev,_ZThn68_N8S20775C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20775C1 = {  "S20775C1", // class name
  bases_S20775C1, 11,
  &(vtc_S20775C1[0]), // expected_vtbl_contents
  &(vtt_S20775C1[0]), // expected_vtt_contents
  ABISELECT(9776,4908), // object size
  NSPAIRA(_ZTI8S20775C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20775C1),54, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20775C1),25, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5309C3_nt  {
  ::S4224C19_nt s5309c3f0;
  int s5309c3f1[2];
  char s5309c3f2;
  virtual  ~S5309C3_nt(); // _ZN10S5309C3_ntD1Ev
  virtual void  v6(); // _ZN10S5309C3_nt2v6Ev
  virtual void  v7(); // _ZN10S5309C3_nt2v7Ev
  virtual void  v8(); // _ZN10S5309C3_nt2v8Ev
  S5309C3_nt(); // tgen
};
//SIG(-1 S5309C3_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S5309C3_nt ::~S5309C3_nt(){ note_dtor("S5309C3_nt", this);}
void  S5309C3_nt ::v6(){vfunc_called(this, "_ZN10S5309C3_nt2v6Ev");}
void  S5309C3_nt ::v7(){vfunc_called(this, "_ZN10S5309C3_nt2v7Ev");}
void  S5309C3_nt ::v8(){vfunc_called(this, "_ZN10S5309C3_nt2v8Ev");}
S5309C3_nt ::S5309C3_nt(){ note_ctor("S5309C3_nt", this);} // tgen

//skip512 S5309C3_nt

#else // __cplusplus

extern void _ZN10S5309C3_ntC1Ev();
extern void _ZN10S5309C3_ntD1Ev();
Name_Map name_map_S5309C3_nt[] = {
  NSPAIR(_ZN10S5309C3_ntC1Ev),
  NSPAIR(_ZN10S5309C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5309C3_nt[];
extern void _ZN10S5309C3_ntD1Ev();
extern void _ZN10S5309C3_ntD0Ev();
extern void _ZN10S5309C3_nt2v6Ev();
extern void _ZN10S5309C3_nt2v7Ev();
extern void _ZN10S5309C3_nt2v8Ev();
static  VTBL_ENTRY vtc_S5309C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5309C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S5309C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S5309C3_nt[];
VTBL_ENTRY *P__ZTI10S5309C3_nt = _ZTI10S5309C3_nt; 
extern  VTBL_ENTRY _ZTV10S5309C3_nt[];
Class_Descriptor cd_S5309C3_nt = {  "S5309C3_nt", // class name
  0,0,//no base classes
  &(vtc_S5309C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S5309C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5309C3_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  S5309C2_nt  : S5309C3_nt {
  void *s5309c2f0;
  virtual void  v9(); // _ZN10S5309C2_nt2v9Ev
  virtual void  v10(); // _ZN10S5309C2_nt3v10Ev
  ~S5309C2_nt(); // tgen
  S5309C2_nt(); // tgen
};
//SIG(-1 S5309C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S5309C2_nt ::v9(){vfunc_called(this, "_ZN10S5309C2_nt2v9Ev");}
void  S5309C2_nt ::v10(){vfunc_called(this, "_ZN10S5309C2_nt3v10Ev");}
S5309C2_nt ::~S5309C2_nt(){ note_dtor("S5309C2_nt", this);} // tgen
S5309C2_nt ::S5309C2_nt(){ note_ctor("S5309C2_nt", this);} // tgen

//skip512 S5309C2_nt

#else // __cplusplus

extern void _ZN10S5309C2_ntC1Ev();
extern void _ZN10S5309C2_ntD1Ev();
Name_Map name_map_S5309C2_nt[] = {
  NSPAIR(_ZN10S5309C2_ntC1Ev),
  NSPAIR(_ZN10S5309C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5309C3_nt;
extern VTBL_ENTRY _ZTI10S5309C3_nt[];
extern  VTBL_ENTRY _ZTV10S5309C3_nt[];
static Base_Class bases_S5309C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5309C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S5309C2_nt[];
extern void _ZN10S5309C2_ntD1Ev();
extern void _ZN10S5309C2_ntD0Ev();
extern void _ZN10S5309C3_nt2v6Ev();
extern void _ZN10S5309C3_nt2v7Ev();
extern void _ZN10S5309C3_nt2v8Ev();
extern void _ZN10S5309C2_nt2v9Ev();
extern void _ZN10S5309C2_nt3v10Ev();
static  VTBL_ENTRY vtc_S5309C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5309C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S5309C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5309C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5309C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5309C2_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S5309C2_nt[];
VTBL_ENTRY *P__ZTI10S5309C2_nt = _ZTI10S5309C2_nt; 
extern  VTBL_ENTRY _ZTV10S5309C2_nt[];
Class_Descriptor cd_S5309C2_nt = {  "S5309C2_nt", // class name
  bases_S5309C2_nt, 1,
  &(vtc_S5309C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S5309C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S5309C2_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  S5309C6  {
  virtual  ~S5309C6(); // _ZN7S5309C6D1Ev
  virtual void  v11(); // _ZN7S5309C63v11Ev
  virtual void  v12(); // _ZN7S5309C63v12Ev
  virtual void  v13(); // _ZN7S5309C63v13Ev
  S5309C6(); // tgen
};
//SIG(-1 S5309C6) C1{ vd v1 v2 v3}


 S5309C6 ::~S5309C6(){ note_dtor("S5309C6", this);}
void  S5309C6 ::v11(){vfunc_called(this, "_ZN7S5309C63v11Ev");}
void  S5309C6 ::v12(){vfunc_called(this, "_ZN7S5309C63v12Ev");}
void  S5309C6 ::v13(){vfunc_called(this, "_ZN7S5309C63v13Ev");}
S5309C6 ::S5309C6(){ note_ctor("S5309C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S5309C6C1Ev();
extern void _ZN7S5309C6D1Ev();
Name_Map name_map_S5309C6[] = {
  NSPAIR(_ZN7S5309C6C1Ev),
  NSPAIR(_ZN7S5309C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5309C6[];
extern void _ZN7S5309C6D1Ev();
extern void _ZN7S5309C6D0Ev();
extern void _ZN7S5309C63v11Ev();
extern void _ZN7S5309C63v12Ev();
extern void _ZN7S5309C63v13Ev();
static  VTBL_ENTRY vtc_S5309C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5309C6[0]),
  (VTBL_ENTRY)&_ZN7S5309C6D1Ev,
  (VTBL_ENTRY)&_ZN7S5309C6D0Ev,
  (VTBL_ENTRY)&_ZN7S5309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S5309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S5309C63v13Ev,
};
extern VTBL_ENTRY _ZTI7S5309C6[];
extern  VTBL_ENTRY _ZTV7S5309C6[];
Class_Descriptor cd_S5309C6 = {  "S5309C6", // class name
  0,0,//no base classes
  &(vtc_S5309C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5309C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5309C6),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  S5309C8_nt  {
  long s5309c8f0[4];
};
//SIG(-1 S5309C8_nt) C1{ Fl[4]}



//skip512 S5309C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5309C7_nt  {
  ::S5309C8_nt s5309c7f0;
  void  mf5309c7(); // _ZN10S5309C7_nt8mf5309c7Ev
};
//SIG(-1 S5309C7_nt) C1{ m FC2{ Fl[4]}}


void  S5309C7_nt ::mf5309c7(){}

//skip512 S5309C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5309C9_nt  {
  void *s5309c9f0;
  ::S21713C13_nt s5309c9f1;
  void  mf5309c9(); // _ZN10S5309C9_nt8mf5309c9Ev
};
//SIG(-1 S5309C9_nt) C1{ m Fp FC2{ Fi[4]}}


void  S5309C9_nt ::mf5309c9(){}

//skip512 S5309C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5309C14_nt  {
  void *s5309c14f0[2];
  void  mf5309c14(); // _ZN11S5309C14_nt9mf5309c14Ev
};
//SIG(-1 S5309C14_nt) C1{ m Fp[2]}


void  S5309C14_nt ::mf5309c14(){}

//skip512 S5309C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5309C1  : S5309C2_nt , S5309C6 {
  ::S5309C7_nt s5309c1f0;
  ::S5309C9_nt s5309c1f1;
  void *s5309c1f2[2];
  ::S4520C15_nt s5309c1f3;
  ::S4224C43_nt s5309c1f4;
  ::S2650C18 s5309c1f5;
  ::S5309C14_nt s5309c1f6;
  int s5309c1f7;
  void *s5309c1f8;
  virtual  ~S5309C1(); // _ZN7S5309C1D1Ev
  virtual void  v1(); // _ZN7S5309C12v1Ev
  virtual void  v2(); // _ZN7S5309C12v2Ev
  virtual void  v3(); // _ZN7S5309C12v3Ev
  virtual void  v4(); // _ZN7S5309C12v4Ev
  virtual void  v5(); // _ZN7S5309C12v5Ev
  S5309C1(); // tgen
};
//SIG(1 S5309C1) C1{ BC2{ BC3{ vd v6 v7 v8 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v9 v10 Fp} BC6{ vd v11 v12 v13} vd v1 v2 v3 v4 v5 FC7{ m FC8{ Fl[4]}} FC9{ m Fp FC10{ Fi[4]}} Fp[2] FC11{ m Fp[2]} FC12{ m Fp} FC13{ m Fp} FC14{ m Fp[2]} Fi Fp}


 S5309C1 ::~S5309C1(){ note_dtor("S5309C1", this);}
void  S5309C1 ::v1(){vfunc_called(this, "_ZN7S5309C12v1Ev");}
void  S5309C1 ::v2(){vfunc_called(this, "_ZN7S5309C12v2Ev");}
void  S5309C1 ::v3(){vfunc_called(this, "_ZN7S5309C12v3Ev");}
void  S5309C1 ::v4(){vfunc_called(this, "_ZN7S5309C12v4Ev");}
void  S5309C1 ::v5(){vfunc_called(this, "_ZN7S5309C12v5Ev");}
S5309C1 ::S5309C1(){ note_ctor("S5309C1", this);} // tgen

static void Test_S5309C1()
{
  extern Class_Descriptor cd_S5309C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,29)];
    init_test(&cd_S5309C1, buf);
    S5309C1 *dp, &lv = *(dp=new (buf) S5309C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,112), "sizeof(S5309C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5309C1)");
    check_base_class_offset(lv, (S5309C3_nt*)(S5309C2_nt*), 0, "S5309C1");
    check_base_class_offset(lv, (S5309C2_nt*), 0, "S5309C1");
    check_base_class_offset(lv, (S5309C6*), ABISELECT(48,32), "S5309C1");
    check_field_offset(lv, s5309c1f0, ABISELECT(56,36), "S5309C1.s5309c1f0");
    check_field_offset(lv, s5309c1f1, ABISELECT(88,52), "S5309C1.s5309c1f1");
    check_field_offset(lv, s5309c1f2, ABISELECT(112,72), "S5309C1.s5309c1f2");
    check_field_offset(lv, s5309c1f3, ABISELECT(128,80), "S5309C1.s5309c1f3");
    check_field_offset(lv, s5309c1f4, ABISELECT(144,88), "S5309C1.s5309c1f4");
    check_field_offset(lv, s5309c1f5, ABISELECT(152,92), "S5309C1.s5309c1f5");
    check_field_offset(lv, s5309c1f6, ABISELECT(160,96), "S5309C1.s5309c1f6");
    check_field_offset(lv, s5309c1f7, ABISELECT(176,104), "S5309C1.s5309c1f7");
    check_field_offset(lv, s5309c1f8, ABISELECT(184,108), "S5309C1.s5309c1f8");
    test_class_info(&lv, &cd_S5309C1);
    dp->~S5309C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5309C1(Test_S5309C1, "S5309C1", ABISELECT(192,112));

#else // __cplusplus

extern void _ZN7S5309C1C1Ev();
extern void _ZN7S5309C1D1Ev();
Name_Map name_map_S5309C1[] = {
  NSPAIR(_ZN7S5309C1C1Ev),
  NSPAIR(_ZN7S5309C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5309C3_nt;
extern VTBL_ENTRY _ZTI10S5309C3_nt[];
extern  VTBL_ENTRY _ZTV10S5309C3_nt[];
extern Class_Descriptor cd_S5309C2_nt;
extern VTBL_ENTRY _ZTI10S5309C2_nt[];
extern  VTBL_ENTRY _ZTV10S5309C2_nt[];
extern Class_Descriptor cd_S5309C6;
extern VTBL_ENTRY _ZTI7S5309C6[];
extern  VTBL_ENTRY _ZTV7S5309C6[];
static Base_Class bases_S5309C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5309C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5309C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S5309C6,    ABISELECT(48,32), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5309C1[];
extern void _ZN7S5309C1D1Ev();
extern void _ZN7S5309C1D0Ev();
extern void _ZN10S5309C3_nt2v6Ev();
extern void _ZN10S5309C3_nt2v7Ev();
extern void _ZN10S5309C3_nt2v8Ev();
extern void _ZN10S5309C2_nt2v9Ev();
extern void _ZN10S5309C2_nt3v10Ev();
extern void _ZN7S5309C12v1Ev();
extern void _ZN7S5309C12v2Ev();
extern void _ZN7S5309C12v3Ev();
extern void _ZN7S5309C12v4Ev();
extern void _ZN7S5309C12v5Ev();
extern void ABISELECT(_ZThn48_N7S5309C1D1Ev,_ZThn32_N7S5309C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S5309C1D0Ev,_ZThn32_N7S5309C1D0Ev)();
extern void _ZN7S5309C63v11Ev();
extern void _ZN7S5309C63v12Ev();
extern void _ZN7S5309C63v13Ev();
static  VTBL_ENTRY vtc_S5309C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5309C1[0]),
  (VTBL_ENTRY)&_ZN7S5309C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5309C1D0Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5309C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5309C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5309C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S5309C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5309C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5309C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5309C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5309C12v5Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S5309C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S5309C1D1Ev,_ZThn32_N7S5309C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S5309C1D0Ev,_ZThn32_N7S5309C1D0Ev),
  (VTBL_ENTRY)&_ZN7S5309C63v11Ev,
  (VTBL_ENTRY)&_ZN7S5309C63v12Ev,
  (VTBL_ENTRY)&_ZN7S5309C63v13Ev,
};
extern VTBL_ENTRY _ZTI7S5309C1[];
extern  VTBL_ENTRY _ZTV7S5309C1[];
Class_Descriptor cd_S5309C1 = {  "S5309C1", // class name
  bases_S5309C1, 3,
  &(vtc_S5309C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,112), // object size
  NSPAIRA(_ZTI7S5309C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5309C1),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  S9921C2  {
  ::S4224C18_nt s9921c2f0;
  ::S4224C18_nt s9921c2f1;
  ::S4224C18_nt s9921c2f2;
  ::S4224C18_nt s9921c2f3;
  ::S4224C18_nt s9921c2f4;
  void *s9921c2f5[5];
  char s9921c2f6[2];
  void *s9921c2f7[2];
  int s9921c2f8;
  virtual  ~S9921C2(); // _ZN7S9921C2D1Ev
  virtual void  v5(); // _ZN7S9921C22v5Ev
  virtual void  v6(); // _ZN7S9921C22v6Ev
  virtual void  v7(); // _ZN7S9921C22v7Ev
  virtual void  v8(); // _ZN7S9921C22v8Ev
  virtual void  v9(); // _ZN7S9921C22v9Ev
  virtual void  v10(); // _ZN7S9921C23v10Ev
  virtual void  v11(); // _ZN7S9921C23v11Ev
  virtual void  v12(); // _ZN7S9921C23v12Ev
  virtual void  v13(); // _ZN7S9921C23v13Ev
  virtual void  v14(); // _ZN7S9921C23v14Ev
  virtual void  v15(); // _ZN7S9921C23v15Ev
  virtual void  v16(); // _ZN7S9921C23v16Ev
  virtual void  v17(); // _ZN7S9921C23v17Ev
  virtual void  v18(); // _ZN7S9921C23v18Ev
  virtual void  v19(); // _ZN7S9921C23v19Ev
  virtual void  v20(); // _ZN7S9921C23v20Ev
  virtual void  v21(); // _ZN7S9921C23v21Ev
  virtual void  v22(); // _ZN7S9921C23v22Ev
  virtual void  v23(); // _ZN7S9921C23v23Ev
  virtual void  v24(); // _ZN7S9921C23v24Ev
  virtual void  v25(); // _ZN7S9921C23v25Ev
  virtual void  v26(); // _ZN7S9921C23v26Ev
  virtual void  v27(); // _ZN7S9921C23v27Ev
  virtual void  v28(); // _ZN7S9921C23v28Ev
  virtual void  v29(); // _ZN7S9921C23v29Ev
  virtual void  v30(); // _ZN7S9921C23v30Ev
  virtual void  v31(); // _ZN7S9921C23v31Ev
  S9921C2(); // tgen
};
//SIG(-1 S9921C2) 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 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC2 FC2 FC2 Fp[5] Fc[2] Fp[2] Fi}


 S9921C2 ::~S9921C2(){ note_dtor("S9921C2", this);}
void  S9921C2 ::v5(){vfunc_called(this, "_ZN7S9921C22v5Ev");}
void  S9921C2 ::v6(){vfunc_called(this, "_ZN7S9921C22v6Ev");}
void  S9921C2 ::v7(){vfunc_called(this, "_ZN7S9921C22v7Ev");}
void  S9921C2 ::v8(){vfunc_called(this, "_ZN7S9921C22v8Ev");}
void  S9921C2 ::v9(){vfunc_called(this, "_ZN7S9921C22v9Ev");}
void  S9921C2 ::v10(){vfunc_called(this, "_ZN7S9921C23v10Ev");}
void  S9921C2 ::v11(){vfunc_called(this, "_ZN7S9921C23v11Ev");}
void  S9921C2 ::v12(){vfunc_called(this, "_ZN7S9921C23v12Ev");}
void  S9921C2 ::v13(){vfunc_called(this, "_ZN7S9921C23v13Ev");}
void  S9921C2 ::v14(){vfunc_called(this, "_ZN7S9921C23v14Ev");}
void  S9921C2 ::v15(){vfunc_called(this, "_ZN7S9921C23v15Ev");}
void  S9921C2 ::v16(){vfunc_called(this, "_ZN7S9921C23v16Ev");}
void  S9921C2 ::v17(){vfunc_called(this, "_ZN7S9921C23v17Ev");}
void  S9921C2 ::v18(){vfunc_called(this, "_ZN7S9921C23v18Ev");}
void  S9921C2 ::v19(){vfunc_called(this, "_ZN7S9921C23v19Ev");}
void  S9921C2 ::v20(){vfunc_called(this, "_ZN7S9921C23v20Ev");}
void  S9921C2 ::v21(){vfunc_called(this, "_ZN7S9921C23v21Ev");}
void  S9921C2 ::v22(){vfunc_called(this, "_ZN7S9921C23v22Ev");}
void  S9921C2 ::v23(){vfunc_called(this, "_ZN7S9921C23v23Ev");}
void  S9921C2 ::v24(){vfunc_called(this, "_ZN7S9921C23v24Ev");}
void  S9921C2 ::v25(){vfunc_called(this, "_ZN7S9921C23v25Ev");}
void  S9921C2 ::v26(){vfunc_called(this, "_ZN7S9921C23v26Ev");}
void  S9921C2 ::v27(){vfunc_called(this, "_ZN7S9921C23v27Ev");}
void  S9921C2 ::v28(){vfunc_called(this, "_ZN7S9921C23v28Ev");}
void  S9921C2 ::v29(){vfunc_called(this, "_ZN7S9921C23v29Ev");}
void  S9921C2 ::v30(){vfunc_called(this, "_ZN7S9921C23v30Ev");}
void  S9921C2 ::v31(){vfunc_called(this, "_ZN7S9921C23v31Ev");}
S9921C2 ::S9921C2(){ note_ctor("S9921C2", this);} // tgen

static void Test_S9921C2()
{
  extern Class_Descriptor cd_S9921C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S9921C2, buf);
    S9921C2 *dp, &lv = *(dp=new (buf) S9921C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S9921C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9921C2)");
    check_field_offset(lv, s9921c2f0, ABISELECT(8,4), "S9921C2.s9921c2f0");
    check_field_offset(lv, s9921c2f1, ABISELECT(32,20), "S9921C2.s9921c2f1");
    check_field_offset(lv, s9921c2f2, ABISELECT(56,36), "S9921C2.s9921c2f2");
    check_field_offset(lv, s9921c2f3, ABISELECT(80,52), "S9921C2.s9921c2f3");
    check_field_offset(lv, s9921c2f4, ABISELECT(104,68), "S9921C2.s9921c2f4");
    check_field_offset(lv, s9921c2f5, ABISELECT(128,84), "S9921C2.s9921c2f5");
    check_field_offset(lv, s9921c2f6, ABISELECT(168,104), "S9921C2.s9921c2f6");
    check_field_offset(lv, s9921c2f7, ABISELECT(176,108), "S9921C2.s9921c2f7");
    check_field_offset(lv, s9921c2f8, ABISELECT(192,116), "S9921C2.s9921c2f8");
    test_class_info(&lv, &cd_S9921C2);
    dp->~S9921C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9921C2(Test_S9921C2, "S9921C2", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN7S9921C2C1Ev();
extern void _ZN7S9921C2D1Ev();
Name_Map name_map_S9921C2[] = {
  NSPAIR(_ZN7S9921C2C1Ev),
  NSPAIR(_ZN7S9921C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9921C2[];
extern void _ZN7S9921C2D1Ev();
extern void _ZN7S9921C2D0Ev();
extern void _ZN7S9921C22v5Ev();
extern void _ZN7S9921C22v6Ev();
extern void _ZN7S9921C22v7Ev();
extern void _ZN7S9921C22v8Ev();
extern void _ZN7S9921C22v9Ev();
extern void _ZN7S9921C23v10Ev();
extern void _ZN7S9921C23v11Ev();
extern void _ZN7S9921C23v12Ev();
extern void _ZN7S9921C23v13Ev();
extern void _ZN7S9921C23v14Ev();
extern void _ZN7S9921C23v15Ev();
extern void _ZN7S9921C23v16Ev();
extern void _ZN7S9921C23v17Ev();
extern void _ZN7S9921C23v18Ev();
extern void _ZN7S9921C23v19Ev();
extern void _ZN7S9921C23v20Ev();
extern void _ZN7S9921C23v21Ev();
extern void _ZN7S9921C23v22Ev();
extern void _ZN7S9921C23v23Ev();
extern void _ZN7S9921C23v24Ev();
extern void _ZN7S9921C23v25Ev();
extern void _ZN7S9921C23v26Ev();
extern void _ZN7S9921C23v27Ev();
extern void _ZN7S9921C23v28Ev();
extern void _ZN7S9921C23v29Ev();
extern void _ZN7S9921C23v30Ev();
extern void _ZN7S9921C23v31Ev();
static  VTBL_ENTRY vtc_S9921C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9921C2[0]),
  (VTBL_ENTRY)&_ZN7S9921C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9921C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v23Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v31Ev,
};
extern VTBL_ENTRY _ZTI7S9921C2[];
extern  VTBL_ENTRY _ZTV7S9921C2[];
Class_Descriptor cd_S9921C2 = {  "S9921C2", // class name
  0,0,//no base classes
  &(vtc_S9921C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI7S9921C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9921C2),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9921C1  : S9921C2 {
  virtual  ~S9921C1(); // _ZN7S9921C1D1Ev
  virtual void  v1(); // _ZN7S9921C12v1Ev
  virtual void  v2(); // _ZN7S9921C12v2Ev
  virtual void  v3(); // _ZN7S9921C12v3Ev
  virtual void  v4(); // _ZN7S9921C12v4Ev
  S9921C1(); // tgen
};
//SIG(1 S9921C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} FC3 FC3 FC3 FC3 Fp[5] Fc[2] Fp[2] Fi} vd v1 v2 v3 v4}


 S9921C1 ::~S9921C1(){ note_dtor("S9921C1", this);}
void  S9921C1 ::v1(){vfunc_called(this, "_ZN7S9921C12v1Ev");}
void  S9921C1 ::v2(){vfunc_called(this, "_ZN7S9921C12v2Ev");}
void  S9921C1 ::v3(){vfunc_called(this, "_ZN7S9921C12v3Ev");}
void  S9921C1 ::v4(){vfunc_called(this, "_ZN7S9921C12v4Ev");}
S9921C1 ::S9921C1(){ note_ctor("S9921C1", this);} // tgen

static void Test_S9921C1()
{
  extern Class_Descriptor cd_S9921C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S9921C1, buf);
    S9921C1 *dp, &lv = *(dp=new (buf) S9921C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S9921C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9921C1)");
    check_base_class_offset(lv, (S9921C2*), 0, "S9921C1");
    test_class_info(&lv, &cd_S9921C1);
    dp->~S9921C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9921C1(Test_S9921C1, "S9921C1", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN7S9921C1C1Ev();
extern void _ZN7S9921C1D1Ev();
Name_Map name_map_S9921C1[] = {
  NSPAIR(_ZN7S9921C1C1Ev),
  NSPAIR(_ZN7S9921C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9921C2;
extern VTBL_ENTRY _ZTI7S9921C2[];
extern  VTBL_ENTRY _ZTV7S9921C2[];
static Base_Class bases_S9921C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9921C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9921C1[];
extern void _ZN7S9921C1D1Ev();
extern void _ZN7S9921C1D0Ev();
extern void _ZN7S9921C22v5Ev();
extern void _ZN7S9921C22v6Ev();
extern void _ZN7S9921C22v7Ev();
extern void _ZN7S9921C22v8Ev();
extern void _ZN7S9921C22v9Ev();
extern void _ZN7S9921C23v10Ev();
extern void _ZN7S9921C23v11Ev();
extern void _ZN7S9921C23v12Ev();
extern void _ZN7S9921C23v13Ev();
extern void _ZN7S9921C23v14Ev();
extern void _ZN7S9921C23v15Ev();
extern void _ZN7S9921C23v16Ev();
extern void _ZN7S9921C23v17Ev();
extern void _ZN7S9921C23v18Ev();
extern void _ZN7S9921C23v19Ev();
extern void _ZN7S9921C23v20Ev();
extern void _ZN7S9921C23v21Ev();
extern void _ZN7S9921C23v22Ev();
extern void _ZN7S9921C23v23Ev();
extern void _ZN7S9921C23v24Ev();
extern void _ZN7S9921C23v25Ev();
extern void _ZN7S9921C23v26Ev();
extern void _ZN7S9921C23v27Ev();
extern void _ZN7S9921C23v28Ev();
extern void _ZN7S9921C23v29Ev();
extern void _ZN7S9921C23v30Ev();
extern void _ZN7S9921C23v31Ev();
extern void _ZN7S9921C12v1Ev();
extern void _ZN7S9921C12v2Ev();
extern void _ZN7S9921C12v3Ev();
extern void _ZN7S9921C12v4Ev();
static  VTBL_ENTRY vtc_S9921C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9921C1[0]),
  (VTBL_ENTRY)&_ZN7S9921C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9921C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9921C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v23Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9921C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9921C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9921C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9921C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9921C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9921C1[];
extern  VTBL_ENTRY _ZTV7S9921C1[];
Class_Descriptor cd_S9921C1 = {  "S9921C1", // class name
  bases_S9921C1, 1,
  &(vtc_S9921C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI7S9921C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9921C1),35, //virtual function table var
  2, // 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  S20773C3  {
  long s20773c3f0[10];
  long double s20773c3f1;
  char s20773c3f2[2];
  long double s20773c3f3;
  void *s20773c3f4;
  __tsi64 s20773c3f5;
  char s20773c3f6;
  virtual void  v1(); // _ZN8S20773C32v1Ev
  virtual void  v2(); // _ZN8S20773C32v2Ev
  ~S20773C3(); // tgen
  S20773C3(); // tgen
};
//SIG(-1 S20773C3) C1{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc}


void  S20773C3 ::v1(){vfunc_called(this, "_ZN8S20773C32v1Ev");}
void  S20773C3 ::v2(){vfunc_called(this, "_ZN8S20773C32v2Ev");}
S20773C3 ::~S20773C3(){ note_dtor("S20773C3", this);} // tgen
S20773C3 ::S20773C3(){ note_ctor("S20773C3", this);} // tgen

static void Test_S20773C3()
{
  extern Class_Descriptor cd_S20773C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S20773C3, buf);
    S20773C3 *dp, &lv = *(dp=new (buf) S20773C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S20773C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C3)");
    check_field_offset(lv, s20773c3f0, ABISELECT(8,4), "S20773C3.s20773c3f0");
    check_field_offset(lv, s20773c3f1, ABISELECT(96,44), "S20773C3.s20773c3f1");
    check_field_offset(lv, s20773c3f2, ABISELECT(112,56), "S20773C3.s20773c3f2");
    check_field_offset(lv, s20773c3f3, ABISELECT(128,60), "S20773C3.s20773c3f3");
    check_field_offset(lv, s20773c3f4, ABISELECT(144,72), "S20773C3.s20773c3f4");
    check_field_offset(lv, s20773c3f5, ABISELECT(152,76), "S20773C3.s20773c3f5");
    check_field_offset(lv, s20773c3f6, ABISELECT(160,84), "S20773C3.s20773c3f6");
    test_class_info(&lv, &cd_S20773C3);
    dp->~S20773C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C3(Test_S20773C3, "S20773C3", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S20773C3C1Ev();
extern void _ZN8S20773C3D1Ev();
Name_Map name_map_S20773C3[] = {
  NSPAIR(_ZN8S20773C3C1Ev),
  NSPAIR(_ZN8S20773C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20773C3[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY vtc_S20773C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C3[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
Class_Descriptor cd_S20773C3 = {  "S20773C3", // class name
  0,0,//no base classes
  &(vtc_S20773C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S20773C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20773C3),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  S20773C4  : virtual S20773C3 {
  void *s20773c4f0;
  ::S20773C3 s20773c4f1;
  virtual  ~S20773C4(); // _ZN8S20773C4D2Ev
  S20773C4(); // tgen
};
//SIG(-1 S20773C4) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} vd Fp FC2}


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

static void Test_S20773C4()
{
  extern Class_Descriptor cd_S20773C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,47)];
    init_test(&cd_S20773C4, buf);
    S20773C4 *dp, &lv = *(dp=new (buf) S20773C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,184), "sizeof(S20773C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C4)");
    check_base_class_offset(lv, (S20773C3*), ABISELECT(192,96), "S20773C4");
    check_field_offset(lv, s20773c4f0, ABISELECT(8,4), "S20773C4.s20773c4f0");
    check_field_offset(lv, s20773c4f1, ABISELECT(16,8), "S20773C4.s20773c4f1");
    test_class_info(&lv, &cd_S20773C4);
    dp->~S20773C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C4(Test_S20773C4, "S20773C4", ABISELECT(368,184));

#else // __cplusplus

extern void _ZN8S20773C4C1Ev();
extern void _ZN8S20773C4D2Ev();
Name_Map name_map_S20773C4[] = {
  NSPAIR(_ZN8S20773C4C1Ev),
  NSPAIR(_ZN8S20773C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
static Base_Class bases_S20773C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20773C3,    ABISELECT(192,96), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20773C4[];
extern void _ZN8S20773C4D1Ev();
extern void _ZN8S20773C4D0Ev();
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY vtc_S20773C4[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C4D0Ev,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20773C4[];
static  VTT_ENTRY vtt_S20773C4[] = {
  {&(_ZTV8S20773C4[3]),  3,11},
  {&(_ZTV8S20773C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S20773C4[];
extern  VTBL_ENTRY _ZTV8S20773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C4[];
Class_Descriptor cd_S20773C4 = {  "S20773C4", // class name
  bases_S20773C4, 1,
  &(vtc_S20773C4[0]), // expected_vtbl_contents
  &(vtt_S20773C4[0]), // expected_vtt_contents
  ABISELECT(368,184), // object size
  NSPAIRA(_ZTI8S20773C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20773C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20773C4),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  S20773C6  : virtual S20773C3 {
  void *s20773c6f0;
  short s20773c6f1;
  ~S20773C6(); // tgen
  S20773C6(); // tgen
};
//SIG(-1 S20773C6) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs}


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

static void Test_S20773C6()
{
  extern Class_Descriptor cd_S20773C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,26)];
    init_test(&cd_S20773C6, buf);
    S20773C6 *dp, &lv = *(dp=new (buf) S20773C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,100), "sizeof(S20773C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C6)");
    check_base_class_offset(lv, (S20773C3*), ABISELECT(32,12), "S20773C6");
    check_field_offset(lv, s20773c6f0, ABISELECT(8,4), "S20773C6.s20773c6f0");
    check_field_offset(lv, s20773c6f1, ABISELECT(16,8), "S20773C6.s20773c6f1");
    test_class_info(&lv, &cd_S20773C6);
    dp->~S20773C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C6(Test_S20773C6, "S20773C6", ABISELECT(208,100));

#else // __cplusplus

extern void _ZN8S20773C6C1Ev();
extern void _ZN8S20773C6D1Ev();
Name_Map name_map_S20773C6[] = {
  NSPAIR(_ZN8S20773C6C1Ev),
  NSPAIR(_ZN8S20773C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
static Base_Class bases_S20773C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20773C3,    ABISELECT(32,12), //bcp->offset
    3, //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 _ZTI8S20773C6[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY vtc_S20773C6[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20773C6[];
static  VTT_ENTRY vtt_S20773C6[] = {
  {&(_ZTV8S20773C6[3]),  3,9},
  {&(_ZTV8S20773C6[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S20773C6[];
extern  VTBL_ENTRY _ZTV8S20773C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C6[];
Class_Descriptor cd_S20773C6 = {  "S20773C6", // class name
  bases_S20773C6, 1,
  &(vtc_S20773C6[0]), // expected_vtbl_contents
  &(vtt_S20773C6[0]), // expected_vtt_contents
  ABISELECT(208,100), // object size
  NSPAIRA(_ZTI8S20773C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20773C6),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20773C6),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  S20773C7  : S20773C3 {
  ::S20773C3 s20773c7f0;
  ::S20773C4 s20773c7f1;
  ::S20773C3 s20773c7f2;
  virtual void  v3(); // _ZN8S20773C72v3Ev
  ~S20773C7(); // tgen
  S20773C7(); // tgen
};
//SIG(-1 S20773C7) C1{ BC2{ v2 v3 Fl[10] FD Fc[2] FD Fp FL Fc} v1 FC2 FC3{ VBC2 vd Fp FC2} FC2}


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

static void Test_S20773C7()
{
  extern Class_Descriptor cd_S20773C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,113)];
    init_test(&cd_S20773C7, buf);
    S20773C7 *dp, &lv = *(dp=new (buf) S20773C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,448), "sizeof(S20773C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C7)");
    check_base_class_offset(lv, (S20773C3*), 0, "S20773C7");
    check_field_offset(lv, s20773c7f0, ABISELECT(176,88), "S20773C7.s20773c7f0");
    check_field_offset(lv, s20773c7f1, ABISELECT(352,176), "S20773C7.s20773c7f1");
    check_field_offset(lv, s20773c7f2, ABISELECT(720,360), "S20773C7.s20773c7f2");
    test_class_info(&lv, &cd_S20773C7);
    dp->~S20773C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C7(Test_S20773C7, "S20773C7", ABISELECT(896,448));

#else // __cplusplus

extern void _ZN8S20773C7C1Ev();
extern void _ZN8S20773C7D1Ev();
Name_Map name_map_S20773C7[] = {
  NSPAIR(_ZN8S20773C7C1Ev),
  NSPAIR(_ZN8S20773C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
static Base_Class bases_S20773C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20773C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20773C7[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY vtc_S20773C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C7[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
extern VTBL_ENTRY _ZTI8S20773C7[];
extern  VTBL_ENTRY _ZTV8S20773C7[];
Class_Descriptor cd_S20773C7 = {  "S20773C7", // class name
  bases_S20773C7, 1,
  &(vtc_S20773C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(896,448), // object size
  NSPAIRA(_ZTI8S20773C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20773C7),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  S20773C5  : virtual S20773C6 , virtual S20773C4 , S20773C3 , virtual S20773C7 {
  ::S20773C7 s20773c5f0;
  void *s20773c5f1;
  long s20773c5f2[8];
  __tsi64 s20773c5f3[2];
  char s20773c5f4;
  ::S20773C7 s20773c5f5[7];
  virtual  ~S20773C5(); // _ZN8S20773C5D2Ev
  S20773C5(); // tgen
};
//SIG(-1 S20773C5) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} Fp Fs} VBC4{ VBC3 vd Fp FC3} BC3 VBC5{ BC3 v3 FC3 FC4 FC3} vd FC5 Fp Fl[8] FL[2] Fc FC5[7]}


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

static void Test_S20773C5()
{
  extern Class_Descriptor cd_S20773C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(547,1094)];
    init_test(&cd_S20773C5, buf);
    S20773C5 *dp, &lv = *(dp=new (buf) S20773C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8736,4372), "sizeof(S20773C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C5)");
    check_base_class_offset(lv, (S20773C3*)(S20773C6*), ABISELECT(7472,3740), "S20773C5");
    check_base_class_offset(lv, (S20773C3*)(S20773C4*), ABISELECT(7472,3740), "S20773C5");
    check_base_class_offset(lv, (S20773C6*), ABISELECT(7440,3728), "S20773C5");
    check_base_class_offset(lv, (S20773C4*), ABISELECT(7648,3828), "S20773C5");
    /*is_ambiguous_... S20773C5::S20773C3 */ AMB_check_base_class_offset(lv, (S20773C3*), 0, "S20773C5");
    check_base_class_offset(lv, (S20773C3*)(S20773C7*), ABISELECT(7840,3924), "S20773C5");
    check_base_class_offset(lv, (S20773C7*), ABISELECT(7840,3924), "S20773C5");
    check_field_offset(lv, s20773c5f0, ABISELECT(176,88), "S20773C5.s20773c5f0");
    check_field_offset(lv, s20773c5f1, ABISELECT(1072,536), "S20773C5.s20773c5f1");
    check_field_offset(lv, s20773c5f2, ABISELECT(1080,540), "S20773C5.s20773c5f2");
    check_field_offset(lv, s20773c5f3, ABISELECT(1144,572), "S20773C5.s20773c5f3");
    check_field_offset(lv, s20773c5f4, ABISELECT(1160,588), "S20773C5.s20773c5f4");
    check_field_offset(lv, s20773c5f5, ABISELECT(1168,592), "S20773C5.s20773c5f5");
    test_class_info(&lv, &cd_S20773C5);
    dp->~S20773C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C5(Test_S20773C5, "S20773C5", ABISELECT(8736,4372));

#else // __cplusplus

extern void _ZN8S20773C5C1Ev();
extern void _ZN8S20773C5D2Ev();
Name_Map name_map_S20773C5[] = {
  NSPAIR(_ZN8S20773C5C1Ev),
  NSPAIR(_ZN8S20773C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C6;
extern VTBL_ENTRY _ZTI8S20773C6[];
extern  VTBL_ENTRY _ZTV8S20773C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C6[];
extern Class_Descriptor cd_S20773C4;
extern VTBL_ENTRY _ZTI8S20773C4[];
extern  VTBL_ENTRY _ZTV8S20773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C4[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C7;
extern VTBL_ENTRY _ZTI8S20773C7[];
extern  VTBL_ENTRY _ZTV8S20773C7[];
static Base_Class bases_S20773C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20773C3,    ABISELECT(7472,3740), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20773C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //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_S20773C4,    ABISELECT(7648,3828), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20773C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20773C3,    ABISELECT(7840,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20773C7,    ABISELECT(7840,3924), //bcp->offset
    25, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20773C5[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C5D1Ev();
extern void _ZN8S20773C5D0Ev();
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev)();
extern void ABISELECT(_ZThn7648_N8S20773C5D1Ev,_ZThn3828_N8S20773C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev)();
extern void ABISELECT(_ZThn7648_N8S20773C5D0Ev,_ZThn3828_N8S20773C5D0Ev)() __attribute__((weak));
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY vtc_S20773C5[] = {
  ABISELECT(7840,3924),
  ABISELECT(7648,3828),
  ABISELECT(7472,3740),
  ABISELECT(7440,3728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C5D0Ev,
  ABISELECT(32,12),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  0,
  0,
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  ABISELECT(-7648,-3828),
  ABISELECT(-176,-88),
  ABISELECT(-7648,-3828),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev),
  0,
  0,
  0,
  ABISELECT(-7840,-3924),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20773C5[];
static  VTBL_ENTRY _tg__ZTV8S20773C6__8S20773C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C6__8S20773C5[] = {
  0,
  0,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern void _ZN8S20773C4D1Ev();
extern void _ZN8S20773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C4__8S20773C5[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C4D0Ev,
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C4__8S20773C5[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
static  VTT_ENTRY vtt_S20773C5[] = {
  {&(_ZTV8S20773C5[6]),  6,33},
  {&(_ZTV8S20773C5[13]),  13,33},
  {&(_ZTV8S20773C5[17]),  17,33},
  {&(_ZTV8S20773C5[23]),  23,33},
  {&(_ZTV8S20773C5[30]),  30,33},
  {&(_tg__ZTV8S20773C6__8S20773C5[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C6__8S20773C5[4]),  4,6},
  {&(_tg__ZTV8S20773C4__8S20773C5[3]),  3,5},
  {&(_tg__ZTV8S20773C3__8S20773C4__8S20773C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20773C5[];
extern  VTBL_ENTRY _ZTV8S20773C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C5[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20773C5D0Ev,_ZThn3828_N8S20773C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7648_N8S20773C5D1Ev,_ZThn3828_N8S20773C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20773C5 = {  "S20773C5", // class name
  bases_S20773C5, 6,
  &(vtc_S20773C5[0]), // expected_vtbl_contents
  &(vtt_S20773C5[0]), // expected_vtt_contents
  ABISELECT(8736,4372), // object size
  NSPAIRA(_ZTI8S20773C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20773C5),33, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20773C5),9, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20773C2  : virtual S20773C3 , virtual S20773C4 , S20773C5 , S20773C6 , S20773C7 {
  void *s20773c2f0;
  char s20773c2f1;
  ~S20773C2(); // tgen
  S20773C2(); // tgen
};
//SIG(-1 S20773C2) C1{ VBC2{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC3{ VBC2 vd Fp FC2} BC4{ VBC5{ VBC2 Fp Fs} VBC3 BC2 VBC6{ BC2 v3 FC2 FC3 FC2} vd FC6 Fp Fl[8] FL[2] Fc FC6[7]} BC5 BC6 Fp Fc}


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

static void Test_S20773C2()
{
  extern Class_Descriptor cd_S20773C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(606,1211)];
    init_test(&cd_S20773C2, buf);
    S20773C2 *dp, &lv = *(dp=new (buf) S20773C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9680,4840), "sizeof(S20773C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C2)");
    /*is_ambiguous_... S20773C2::S20773C3 */ AMB_check_base_class_offset(lv, (S20773C3*), ABISELECT(8384,4196), "S20773C2");
    check_base_class_offset(lv, (S20773C3*)(S20773C4*), ABISELECT(8384,4196), "S20773C2");
    /*is_ambiguous_... S20773C2::S20773C6 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C6*), ABISELECT(8384,4196), "S20773C2");
    /*is_ambiguous_... S20773C2::S20773C6 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C6*), ABISELECT(8384,4196), "S20773C2");
    check_base_class_offset(lv, (S20773C4*), ABISELECT(8560,4284), "S20773C2");
    check_base_class_offset(lv, (S20773C4*)(S20773C5*), ABISELECT(8560,4284), "S20773C2");
    check_base_class_offset(lv, (S20773C6*)(S20773C5*), ABISELECT(8752,4380), "S20773C2");
    /*is_ambiguous_... S20773C5::S20773C3 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C5*), 0, "S20773C2");
    /*is_ambiguous_... S20773C2::S20773C7 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C7*), ABISELECT(8784,4392), "S20773C2");
    check_base_class_offset(lv, (S20773C7*)(S20773C5*), ABISELECT(8784,4392), "S20773C2");
    check_base_class_offset(lv, (S20773C5*), 0, "S20773C2");
    /*is_ambiguous_... S20773C2::S20773C6 */ AMB_check_base_class_offset(lv, (S20773C6*), ABISELECT(7440,3728), "S20773C2");
    /*is_ambiguous_... S20773C2::S20773C7 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C7*), ABISELECT(7472,3740), "S20773C2");
    /*is_ambiguous_... S20773C2::S20773C7 */ AMB_check_base_class_offset(lv, (S20773C7*), ABISELECT(7472,3740), "S20773C2");
    check_field_offset(lv, s20773c2f0, ABISELECT(8368,4188), "S20773C2.s20773c2f0");
    check_field_offset(lv, s20773c2f1, ABISELECT(8376,4192), "S20773C2.s20773c2f1");
    test_class_info(&lv, &cd_S20773C2);
    dp->~S20773C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C2(Test_S20773C2, "S20773C2", ABISELECT(9680,4840));

#else // __cplusplus

extern void _ZN8S20773C2C1Ev();
extern void _ZN8S20773C2D1Ev();
Name_Map name_map_S20773C2[] = {
  NSPAIR(_ZN8S20773C2C1Ev),
  NSPAIR(_ZN8S20773C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C4;
extern VTBL_ENTRY _ZTI8S20773C4[];
extern  VTBL_ENTRY _ZTV8S20773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C4[];
extern Class_Descriptor cd_S20773C6;
extern VTBL_ENTRY _ZTI8S20773C6[];
extern  VTBL_ENTRY _ZTV8S20773C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C6[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C7;
extern VTBL_ENTRY _ZTI8S20773C7[];
extern  VTBL_ENTRY _ZTV8S20773C7[];
extern Class_Descriptor cd_S20773C5;
extern VTBL_ENTRY _ZTI8S20773C5[];
extern  VTBL_ENTRY _ZTV8S20773C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C5[];
extern Class_Descriptor cd_S20773C6;
extern VTBL_ENTRY _ZTI8S20773C6[];
extern  VTBL_ENTRY _ZTV8S20773C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C6[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C7;
extern VTBL_ENTRY _ZTI8S20773C7[];
extern  VTBL_ENTRY _ZTV8S20773C7[];
static Base_Class bases_S20773C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20773C3,    ABISELECT(8384,4196), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20773C4,    ABISELECT(8560,4284), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20773C6,    ABISELECT(8752,4380), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20773C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20773C3,    ABISELECT(8784,4392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20773C7,    ABISELECT(8784,4392), //bcp->offset
    33, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20773C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20773C6,    ABISELECT(7440,3728), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20773C3,    ABISELECT(7472,3740), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20773C7,    ABISELECT(7472,3740), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20773C2[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C2D1Ev();
extern void _ZN8S20773C2D0Ev();
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20773C2D1Ev,_ZTv0_n16_N8S20773C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C2D1Ev,_ZThn4284_N8S20773C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20773C2D0Ev,_ZTv0_n16_N8S20773C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C2D0Ev,_ZThn4284_N8S20773C2D0Ev)() __attribute__((weak));
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY vtc_S20773C2[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C2D0Ev,
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  ABISELECT(-7472,-3740),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C2D1Ev,_ZTv0_n16_N8S20773C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C2D0Ev,_ZTv0_n16_N8S20773C2D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20773C2[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C5D1Ev();
extern void _ZN8S20773C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C5__8S20773C2[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__8S20773C5__8S20773C2[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C5__8S20773C2[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C5D1Ev,_ZThn4284_N8S20773C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C5D0Ev,_ZThn4284_N8S20773C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20773C4__8S20773C5__8S20773C2[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C7__8S20773C5__8S20773C2[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__A__8S20773C2[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C6__A__8S20773C2[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern void _ZN8S20773C4D1Ev();
extern void _ZN8S20773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C4__8S20773C2[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C4D0Ev,
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C4__8S20773C2[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__8S20773C2[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C6__8S20773C2[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
static  VTT_ENTRY vtt_S20773C2[] = {
  {&(_ZTV8S20773C2[6]),  6,41},
  {&(_tg__ZTV8S20773C5__8S20773C2[6]),  6,10},
  {&(_tg__ZTV8S20773C6__8S20773C5__8S20773C2[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C5__8S20773C2[4]),  4,6},
  {&(_tg__ZTV8S20773C4__8S20773C5__8S20773C2[4]),  4,6},
  {&(_tg__ZTV8S20773C7__8S20773C5__8S20773C2[5]),  5,8},
  {&(_tg__ZTV8S20773C6__A__8S20773C2[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C6__A__8S20773C2[4]),  4,6},
  {&(_ZTV8S20773C2[22]),  22,41},
  {&(_ZTV8S20773C2[28]),  28,41},
  {&(_ZTV8S20773C2[33]),  33,41},
  {&(_ZTV8S20773C2[38]),  38,41},
  {&(_ZTV8S20773C2[13]),  13,41},
  {&(_tg__ZTV8S20773C4__8S20773C2[3]),  3,5},
  {&(_tg__ZTV8S20773C3__8S20773C4__8S20773C2[4]),  4,6},
  {&(_tg__ZTV8S20773C6__8S20773C2[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C6__8S20773C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20773C2[];
extern  VTBL_ENTRY _ZTV8S20773C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C2[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C5D0Ev,_ZThn4284_N8S20773C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C5D1Ev,_ZThn4284_N8S20773C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C2D0Ev,_ZTv0_n16_N8S20773C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C2D0Ev,_ZThn4284_N8S20773C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C2D1Ev,_ZTv0_n16_N8S20773C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C2D1Ev,_ZThn4284_N8S20773C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20773C2 = {  "S20773C2", // class name
  bases_S20773C2, 10,
  &(vtc_S20773C2[0]), // expected_vtbl_contents
  &(vtt_S20773C2[0]), // expected_vtt_contents
  ABISELECT(9680,4840), // object size
  NSPAIRA(_ZTI8S20773C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20773C2),41, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20773C2),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20773C1  : virtual S20773C2 , S4224C43_nt , S20773C3 {
  __tsi64 s20773c1f0;
  int s20773c1f1;
  char s20773c1f2;
  virtual  ~S20773C1(); // _ZN8S20773C1D2Ev
  S20773C1(); // tgen
};
//SIG(1 S20773C1) C1{ VBC2{ VBC3{ v1 v2 Fl[10] FD Fc[2] FD Fp FL Fc} VBC4{ VBC3 vd Fp FC3} BC5{ VBC6{ VBC3 Fp Fs} VBC4 BC3 VBC7{ BC3 v3 FC3 FC4 FC3} vd FC7 Fp Fl[8] FL[2] Fc FC7[7]} BC6 BC7 Fp Fc} BC8{ m Fp} BC3 vd FL Fi Fc}


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

static void Test_S20773C1()
{
  extern Class_Descriptor cd_S20773C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(618,1238)];
    init_test(&cd_S20773C1, buf);
    S20773C1 *dp, &lv = *(dp=new (buf) S20773C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9872,4948), "sizeof(S20773C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20773C1)");
    /*is_ambiguous_... S20773C2::S20773C3 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C2*), ABISELECT(8576,4304), "S20773C1");
    check_base_class_offset(lv, (S20773C3*)(S20773C4*), ABISELECT(8576,4304), "S20773C1");
    /*is_ambiguous_... S20773C1::S20773C6 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C6*), ABISELECT(8576,4304), "S20773C1");
    /*is_ambiguous_... S20773C2::S20773C6 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C6*)(S20773C2*), ABISELECT(8576,4304), "S20773C1");
    check_base_class_offset(lv, (S20773C4*)(S20773C2*), ABISELECT(8752,4392), "S20773C1");
    check_base_class_offset(lv, (S20773C4*)(S20773C5*)(S20773C2*), ABISELECT(8752,4392), "S20773C1");
    check_base_class_offset(lv, (S20773C6*)(S20773C5*)(S20773C2*), ABISELECT(8944,4488), "S20773C1");
    /*is_ambiguous_... S20773C5::S20773C3 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C5*)(S20773C2*), ABISELECT(192,108), "S20773C1");
    /*is_ambiguous_... S20773C1::S20773C7 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C7*), ABISELECT(8976,4500), "S20773C1");
    check_base_class_offset(lv, (S20773C7*)(S20773C5*)(S20773C2*), ABISELECT(8976,4500), "S20773C1");
    check_base_class_offset(lv, (S20773C5*)(S20773C2*), ABISELECT(192,108), "S20773C1");
    /*is_ambiguous_... S20773C2::S20773C6 */ AMB_check_base_class_offset(lv, (S20773C6*)(S20773C2*), ABISELECT(7632,3836), "S20773C1");
    /*is_ambiguous_... S20773C2::S20773C7 */ AMB_check_base_class_offset(lv, (S20773C3*)(S20773C7*)(S20773C2*), ABISELECT(7664,3848), "S20773C1");
    /*is_ambiguous_... S20773C2::S20773C7 */ AMB_check_base_class_offset(lv, (S20773C7*)(S20773C2*), ABISELECT(7664,3848), "S20773C1");
    check_base_class_offset(lv, (S20773C2*), ABISELECT(192,108), "S20773C1");
    check_base_class_offset(lv, (S4224C43_nt*), ABISELECT(168,88), "S20773C1");
    /*is_ambiguous_... S20773C1::S20773C3 */ AMB_check_base_class_offset(lv, (S20773C3*), 0, "S20773C1");
    check_field_offset(lv, s20773c1f0, ABISELECT(176,92), "S20773C1.s20773c1f0");
    check_field_offset(lv, s20773c1f1, ABISELECT(184,100), "S20773C1.s20773c1f1");
    check_field_offset(lv, s20773c1f2, ABISELECT(188,104), "S20773C1.s20773c1f2");
    test_class_info(&lv, &cd_S20773C1);
    dp->~S20773C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20773C1(Test_S20773C1, "S20773C1", ABISELECT(9872,4948));

#else // __cplusplus

extern void _ZN8S20773C1C1Ev();
extern void _ZN8S20773C1D2Ev();
Name_Map name_map_S20773C1[] = {
  NSPAIR(_ZN8S20773C1C1Ev),
  NSPAIR(_ZN8S20773C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C4;
extern VTBL_ENTRY _ZTI8S20773C4[];
extern  VTBL_ENTRY _ZTV8S20773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C4[];
extern Class_Descriptor cd_S20773C6;
extern VTBL_ENTRY _ZTI8S20773C6[];
extern  VTBL_ENTRY _ZTV8S20773C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C6[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C7;
extern VTBL_ENTRY _ZTI8S20773C7[];
extern  VTBL_ENTRY _ZTV8S20773C7[];
extern Class_Descriptor cd_S20773C5;
extern VTBL_ENTRY _ZTI8S20773C5[];
extern  VTBL_ENTRY _ZTV8S20773C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C5[];
extern Class_Descriptor cd_S20773C6;
extern VTBL_ENTRY _ZTI8S20773C6[];
extern  VTBL_ENTRY _ZTV8S20773C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C6[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
extern Class_Descriptor cd_S20773C7;
extern VTBL_ENTRY _ZTI8S20773C7[];
extern  VTBL_ENTRY _ZTV8S20773C7[];
extern Class_Descriptor cd_S20773C2;
extern VTBL_ENTRY _ZTI8S20773C2[];
extern  VTBL_ENTRY _ZTV8S20773C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C2[];
extern Class_Descriptor cd_S4224C43_nt;
extern VTBL_ENTRY _ZTI11S4224C43_nt[];
extern Class_Descriptor cd_S20773C3;
extern VTBL_ENTRY _ZTI8S20773C3[];
extern  VTBL_ENTRY _ZTV8S20773C3[];
static Base_Class bases_S20773C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20773C3,    ABISELECT(8576,4304), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20773C4,    ABISELECT(8752,4392), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20773C6,    ABISELECT(8944,4488), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20773C3,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20773C3,    ABISELECT(8976,4500), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20773C7,    ABISELECT(8976,4500), //bcp->offset
    48, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20773C5,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    10, //immediately_derived
  0, 0},
  {&cd_S20773C6,    ABISELECT(7632,3836), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20773C3,    ABISELECT(7664,3848), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20773C7,    ABISELECT(7664,3848), //bcp->offset
    28, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20773C2,    ABISELECT(192,108), //bcp->offset
    11, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4224C43_nt,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20773C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20773C1[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C1D1Ev();
extern void _ZN8S20773C1D0Ev();
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20773C1D1Ev,_ZTv0_n36_N8S20773C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20773C1D1Ev,_ZThn108_N8S20773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20773C1D0Ev,_ZTv0_n36_N8S20773C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20773C1D0Ev,_ZThn108_N8S20773C1D0Ev)() __attribute__((weak));
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20773C1D1Ev,_ZTv0_n16_N8S20773C1D1Ev)();
extern void ABISELECT(_ZThn8752_N8S20773C1D1Ev,_ZThn4392_N8S20773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20773C1D0Ev,_ZTv0_n16_N8S20773C1D0Ev)();
extern void ABISELECT(_ZThn8752_N8S20773C1D0Ev,_ZThn4392_N8S20773C1D0Ev)() __attribute__((weak));
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY vtc_S20773C1[] = {
  ABISELECT(8976,4500),
  ABISELECT(8944,4488),
  ABISELECT(8752,4392),
  ABISELECT(8576,4304),
  ABISELECT(192,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C1D0Ev,
  ABISELECT(7472,3740),
  ABISELECT(-192,-108),
  0,
  0,
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20773C1D1Ev,_ZTv0_n36_N8S20773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20773C1D0Ev,_ZTv0_n36_N8S20773C1D0Ev),
  ABISELECT(944,468),
  ABISELECT(-7632,-3836),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  ABISELECT(-7664,-3848),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
  0,
  0,
  ABISELECT(-8576,-4304),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  ABISELECT(-8752,-4392),
  ABISELECT(-176,-88),
  ABISELECT(-8752,-4392),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C1D1Ev,_ZTv0_n16_N8S20773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C1D0Ev,_ZTv0_n16_N8S20773C1D0Ev),
  ABISELECT(-368,-184),
  ABISELECT(-8944,-4488),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  0,
  0,
  0,
  ABISELECT(-8976,-4500),
  (VTBL_ENTRY)&(_ZTI8S20773C1[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S20773C1[];
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C2D1Ev();
extern void _ZN8S20773C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C2__8S20773C1[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C2D0Ev,
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C5D1Ev();
extern void _ZN8S20773C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C58S20773C2__8S20773C1[] = {
  ABISELECT(8784,4392),
  ABISELECT(8560,4284),
  ABISELECT(8384,4196),
  ABISELECT(8752,4380),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__8S20773C58S20773C2__8S20773C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C58S20773C2__8S20773C1[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C5D1Ev,_ZThn4284_N8S20773C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C5D0Ev,_ZThn4284_N8S20773C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20773C4__8S20773C58S20773C2__8S20773C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C7__8S20773C58S20773C2__8S20773C1[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20773C5[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C68S20773C2__A1__8S20773C1[] = {
  ABISELECT(944,468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C68S20773C2__A1__8S20773C1[] = {
  0,
  0,
  ABISELECT(-944,-468),
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C2__8S20773C1[] = {
  0,
  0,
  ABISELECT(-8384,-4196),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20773C2D1Ev,_ZTv0_n16_N8S20773C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C2D1Ev,_ZThn4284_N8S20773C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20773C2D0Ev,_ZTv0_n16_N8S20773C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S20773C2D0Ev,_ZThn4284_N8S20773C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20773C4__8S20773C2__8S20773C1[] = {
  ABISELECT(-8560,-4284),
  ABISELECT(-176,-88),
  ABISELECT(-8560,-4284),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C2D1Ev,_ZTv0_n16_N8S20773C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20773C2D0Ev,_ZTv0_n16_N8S20773C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__8S20773C2__8S20773C1[] = {
  ABISELECT(-368,-184),
  ABISELECT(-8752,-4380),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
extern void _ZN8S20773C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C7__8S20773C2__8S20773C1[] = {
  0,
  0,
  0,
  ABISELECT(-8784,-4392),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20773C72v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__A__8S20773C2__8S20773C1[] = {
  ABISELECT(944,468),
  ABISELECT(-7440,-3728),
  (VTBL_ENTRY)&(_ZTI8S20773C2[0]),
};
extern void _ZN8S20773C4D1Ev();
extern void _ZN8S20773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C4__8S20773C1[] = {
  ABISELECT(-176,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20773C4D0Ev,
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C4__8S20773C1[] = {
  0,
  0,
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S20773C4[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20773C6__8S20773C1[] = {
  ABISELECT(-368,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
};
extern void _ZN8S20773C32v1Ev();
extern void _ZN8S20773C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20773C3__8S20773C6__8S20773C1[] = {
  0,
  0,
  ABISELECT(368,184),
  (VTBL_ENTRY)&(_ZTI8S20773C6[0]),
  (VTBL_ENTRY)&_ZN8S20773C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20773C32v2Ev,
};
static  VTT_ENTRY vtt_S20773C1[] = {
  {&(_ZTV8S20773C1[7]),  7,56},
  {&(_ZTV8S20773C1[21]),  21,56},
  {&(_ZTV8S20773C1[37]),  37,56},
  {&(_ZTV8S20773C1[43]),  43,56},
  {&(_ZTV8S20773C1[48]),  48,56},
  {&(_ZTV8S20773C1[53]),  53,56},
  {&(_ZTV8S20773C1[28]),  28,56},
  {&(_ZTV8S20773C1[30]),  30,56},
  {&(_tg__ZTV8S20773C2__8S20773C1[6]),  6,10},
  {&(_tg__ZTV8S20773C58S20773C2__8S20773C1[6]),  6,10},
  {&(_tg__ZTV8S20773C6__8S20773C58S20773C2__8S20773C1[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C58S20773C2__8S20773C1[4]),  4,6},
  {&(_tg__ZTV8S20773C4__8S20773C58S20773C2__8S20773C1[4]),  4,6},
  {&(_tg__ZTV8S20773C7__8S20773C58S20773C2__8S20773C1[5]),  5,8},
  {&(_tg__ZTV8S20773C68S20773C2__A1__8S20773C1[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C68S20773C2__A1__8S20773C1[4]),  4,6},
  {&(_tg__ZTV8S20773C3__8S20773C2__8S20773C1[4]),  4,6},
  {&(_tg__ZTV8S20773C4__8S20773C2__8S20773C1[4]),  4,6},
  {&(_tg__ZTV8S20773C6__8S20773C2__8S20773C1[3]),  3,3},
  {&(_tg__ZTV8S20773C7__8S20773C2__8S20773C1[5]),  5,8},
  {&(_tg__ZTV8S20773C6__A__8S20773C2__8S20773C1[3]),  3,3},
  {&(_tg__ZTV8S20773C4__8S20773C1[3]),  3,5},
  {&(_tg__ZTV8S20773C3__8S20773C4__8S20773C1[4]),  4,6},
  {&(_tg__ZTV8S20773C6__8S20773C1[3]),  3,3},
  {&(_tg__ZTV8S20773C3__8S20773C6__8S20773C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20773C1[];
extern  VTBL_ENTRY _ZTV8S20773C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20773C1[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C2D0Ev,_ZTv0_n16_N8S20773C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C2D0Ev,_ZThn4284_N8S20773C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C2D1Ev,_ZTv0_n16_N8S20773C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C2D1Ev,_ZThn4284_N8S20773C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C5D0Ev,_ZTv0_n16_N8S20773C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C5D0Ev,_ZThn4284_N8S20773C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C5D1Ev,_ZTv0_n16_N8S20773C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S20773C5D1Ev,_ZThn4284_N8S20773C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C1D0Ev,_ZTv0_n16_N8S20773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8752_N8S20773C1D0Ev,_ZThn4392_N8S20773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20773C1D1Ev,_ZTv0_n16_N8S20773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8752_N8S20773C1D1Ev,_ZThn4392_N8S20773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20773C1D0Ev,_ZTv0_n36_N8S20773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20773C1D0Ev,_ZThn108_N8S20773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20773C1D1Ev,_ZTv0_n36_N8S20773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20773C1D1Ev,_ZThn108_N8S20773C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20773C1 = {  "S20773C1", // class name
  bases_S20773C1, 13,
  &(vtc_S20773C1[0]), // expected_vtbl_contents
  &(vtt_S20773C1[0]), // expected_vtt_contents
  ABISELECT(9872,4948), // object size
  NSPAIRA(_ZTI8S20773C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20773C1),56, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20773C1),25, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4366C3  {
  ::S4224C19_nt s4366c3f0;
  int s4366c3f1[2];
  char s4366c3f2;
  virtual  ~S4366C3(); // _ZN7S4366C3D1Ev
  virtual void  v2(); // _ZN7S4366C32v2Ev
  virtual void  v3(); // _ZN7S4366C32v3Ev
  virtual void  v4(); // _ZN7S4366C32v4Ev
  S4366C3(); // tgen
};
//SIG(-1 S4366C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4366C3 ::~S4366C3(){ note_dtor("S4366C3", this);}
void  S4366C3 ::v2(){vfunc_called(this, "_ZN7S4366C32v2Ev");}
void  S4366C3 ::v3(){vfunc_called(this, "_ZN7S4366C32v3Ev");}
void  S4366C3 ::v4(){vfunc_called(this, "_ZN7S4366C32v4Ev");}
S4366C3 ::S4366C3(){ note_ctor("S4366C3", this);} // tgen

static void Test_S4366C3()
{
  extern Class_Descriptor cd_S4366C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4366C3, buf);
    S4366C3 *dp, &lv = *(dp=new (buf) S4366C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4366C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4366C3)");
    check_field_offset(lv, s4366c3f0, ABISELECT(8,4), "S4366C3.s4366c3f0");
    check_field_offset(lv, s4366c3f1, ABISELECT(24,16), "S4366C3.s4366c3f1");
    check_field_offset(lv, s4366c3f2, ABISELECT(32,24), "S4366C3.s4366c3f2");
    test_class_info(&lv, &cd_S4366C3);
    dp->~S4366C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4366C3(Test_S4366C3, "S4366C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4366C3C1Ev();
extern void _ZN7S4366C3D1Ev();
Name_Map name_map_S4366C3[] = {
  NSPAIR(_ZN7S4366C3C1Ev),
  NSPAIR(_ZN7S4366C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4366C3[];
extern void _ZN7S4366C3D1Ev();
extern void _ZN7S4366C3D0Ev();
extern void _ZN7S4366C32v2Ev();
extern void _ZN7S4366C32v3Ev();
extern void _ZN7S4366C32v4Ev();
static  VTBL_ENTRY vtc_S4366C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4366C3[0]),
  (VTBL_ENTRY)&_ZN7S4366C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4366C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4366C3[];
extern  VTBL_ENTRY _ZTV7S4366C3[];
Class_Descriptor cd_S4366C3 = {  "S4366C3", // class name
  0,0,//no base classes
  &(vtc_S4366C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4366C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4366C3),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  S4366C2  : S4366C3 {
  void *s4366c2f0;
  virtual void  v5(); // _ZN7S4366C22v5Ev
  virtual void  v6(); // _ZN7S4366C22v6Ev
  ~S4366C2(); // tgen
  S4366C2(); // tgen
};
//SIG(-1 S4366C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4366C2 ::v5(){vfunc_called(this, "_ZN7S4366C22v5Ev");}
void  S4366C2 ::v6(){vfunc_called(this, "_ZN7S4366C22v6Ev");}
S4366C2 ::~S4366C2(){ note_dtor("S4366C2", this);} // tgen
S4366C2 ::S4366C2(){ note_ctor("S4366C2", this);} // tgen

static void Test_S4366C2()
{
  extern Class_Descriptor cd_S4366C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4366C2, buf);
    S4366C2 *dp, &lv = *(dp=new (buf) S4366C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4366C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4366C2)");
    check_base_class_offset(lv, (S4366C3*), 0, "S4366C2");
    check_field_offset(lv, s4366c2f0, ABISELECT(40,28), "S4366C2.s4366c2f0");
    test_class_info(&lv, &cd_S4366C2);
    dp->~S4366C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4366C2(Test_S4366C2, "S4366C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4366C2C1Ev();
extern void _ZN7S4366C2D1Ev();
Name_Map name_map_S4366C2[] = {
  NSPAIR(_ZN7S4366C2C1Ev),
  NSPAIR(_ZN7S4366C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4366C3;
extern VTBL_ENTRY _ZTI7S4366C3[];
extern  VTBL_ENTRY _ZTV7S4366C3[];
static Base_Class bases_S4366C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4366C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4366C2[];
extern void _ZN7S4366C2D1Ev();
extern void _ZN7S4366C2D0Ev();
extern void _ZN7S4366C32v2Ev();
extern void _ZN7S4366C32v3Ev();
extern void _ZN7S4366C32v4Ev();
extern void _ZN7S4366C22v5Ev();
extern void _ZN7S4366C22v6Ev();
static  VTBL_ENTRY vtc_S4366C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4366C2[0]),
  (VTBL_ENTRY)&_ZN7S4366C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4366C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4366C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4366C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4366C2[];
extern  VTBL_ENTRY _ZTV7S4366C2[];
Class_Descriptor cd_S4366C2 = {  "S4366C2", // class name
  bases_S4366C2, 1,
  &(vtc_S4366C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4366C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4366C2),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  S4366C1  : S4366C2 {
  ::S4224C19_nt s4366c1f0;
  ::S4224C19_nt s4366c1f1;
  int s4366c1f2[2];
  __tsi64 s4366c1f3;
  ::S4224C19_nt s4366c1f4;
  ::S1702C14 s4366c1f5;
  ::S1702C13 s4366c1f6;
  char s4366c1f7[128];
  int s4366c1f8[2];
  char s4366c1f9;
  void *s4366c1f10;
  virtual void  v1(); // _ZN7S4366C12v1Ev
  ~S4366C1(); // tgen
  S4366C1(); // tgen
};
//SIG(1 S4366C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC4 FC4 Fi[2] FL FC4 FC6{ Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 FC4 FL Fi[2] FC7{ Fc[4]}} FC8{ Fc[1280] FC4 FL Fc[2]} Fc[128] Fi[2] Fc Fp}


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

static void Test_S4366C1()
{
  extern Class_Descriptor cd_S4366C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(216,412)];
    init_test(&cd_S4366C1, buf);
    S4366C1 *dp, &lv = *(dp=new (buf) S4366C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1720,1644), "sizeof(S4366C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4366C1)");
    check_base_class_offset(lv, (S4366C3*)(S4366C2*), 0, "S4366C1");
    check_base_class_offset(lv, (S4366C2*), 0, "S4366C1");
    check_field_offset(lv, s4366c1f0, ABISELECT(48,32), "S4366C1.s4366c1f0");
    check_field_offset(lv, s4366c1f1, ABISELECT(64,44), "S4366C1.s4366c1f1");
    check_field_offset(lv, s4366c1f2, ABISELECT(80,56), "S4366C1.s4366c1f2");
    check_field_offset(lv, s4366c1f3, ABISELECT(88,64), "S4366C1.s4366c1f3");
    check_field_offset(lv, s4366c1f4, ABISELECT(96,72), "S4366C1.s4366c1f4");
    check_field_offset(lv, s4366c1f5, ABISELECT(112,84), "S4366C1.s4366c1f5");
    check_field_offset(lv, s4366c1f6, ABISELECT(256,196), "S4366C1.s4366c1f6");
    check_field_offset(lv, s4366c1f7, ABISELECT(1568,1500), "S4366C1.s4366c1f7");
    check_field_offset(lv, s4366c1f8, ABISELECT(1696,1628), "S4366C1.s4366c1f8");
    check_field_offset(lv, s4366c1f9, ABISELECT(1704,1636), "S4366C1.s4366c1f9");
    check_field_offset(lv, s4366c1f10, ABISELECT(1712,1640), "S4366C1.s4366c1f10");
    test_class_info(&lv, &cd_S4366C1);
    dp->~S4366C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4366C1(Test_S4366C1, "S4366C1", ABISELECT(1720,1644));

#else // __cplusplus

extern void _ZN7S4366C1C1Ev();
extern void _ZN7S4366C1D1Ev();
Name_Map name_map_S4366C1[] = {
  NSPAIR(_ZN7S4366C1C1Ev),
  NSPAIR(_ZN7S4366C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4366C3;
extern VTBL_ENTRY _ZTI7S4366C3[];
extern  VTBL_ENTRY _ZTV7S4366C3[];
extern Class_Descriptor cd_S4366C2;
extern VTBL_ENTRY _ZTI7S4366C2[];
extern  VTBL_ENTRY _ZTV7S4366C2[];
static Base_Class bases_S4366C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4366C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4366C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4366C1[];
extern void _ZN7S4366C1D1Ev();
extern void _ZN7S4366C1D0Ev();
extern void _ZN7S4366C32v2Ev();
extern void _ZN7S4366C32v3Ev();
extern void _ZN7S4366C32v4Ev();
extern void _ZN7S4366C22v5Ev();
extern void _ZN7S4366C22v6Ev();
extern void _ZN7S4366C12v1Ev();
static  VTBL_ENTRY vtc_S4366C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4366C1[0]),
  (VTBL_ENTRY)&_ZN7S4366C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4366C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4366C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4366C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4366C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4366C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4366C1[];
extern  VTBL_ENTRY _ZTV7S4366C1[];
Class_Descriptor cd_S4366C1 = {  "S4366C1", // class name
  bases_S4366C1, 2,
  &(vtc_S4366C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1720,1644), // object size
  NSPAIRA(_ZTI7S4366C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4366C1),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  S4365C3  {
  ::S4224C19_nt s4365c3f0;
  int s4365c3f1[2];
  char s4365c3f2;
  virtual  ~S4365C3(); // _ZN7S4365C3D1Ev
  virtual void  v2(); // _ZN7S4365C32v2Ev
  virtual void  v3(); // _ZN7S4365C32v3Ev
  virtual void  v4(); // _ZN7S4365C32v4Ev
  S4365C3(); // tgen
};
//SIG(-1 S4365C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4365C3 ::~S4365C3(){ note_dtor("S4365C3", this);}
void  S4365C3 ::v2(){vfunc_called(this, "_ZN7S4365C32v2Ev");}
void  S4365C3 ::v3(){vfunc_called(this, "_ZN7S4365C32v3Ev");}
void  S4365C3 ::v4(){vfunc_called(this, "_ZN7S4365C32v4Ev");}
S4365C3 ::S4365C3(){ note_ctor("S4365C3", this);} // tgen

static void Test_S4365C3()
{
  extern Class_Descriptor cd_S4365C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4365C3, buf);
    S4365C3 *dp, &lv = *(dp=new (buf) S4365C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4365C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4365C3)");
    check_field_offset(lv, s4365c3f0, ABISELECT(8,4), "S4365C3.s4365c3f0");
    check_field_offset(lv, s4365c3f1, ABISELECT(24,16), "S4365C3.s4365c3f1");
    check_field_offset(lv, s4365c3f2, ABISELECT(32,24), "S4365C3.s4365c3f2");
    test_class_info(&lv, &cd_S4365C3);
    dp->~S4365C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4365C3(Test_S4365C3, "S4365C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4365C3C1Ev();
extern void _ZN7S4365C3D1Ev();
Name_Map name_map_S4365C3[] = {
  NSPAIR(_ZN7S4365C3C1Ev),
  NSPAIR(_ZN7S4365C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4365C3[];
extern void _ZN7S4365C3D1Ev();
extern void _ZN7S4365C3D0Ev();
extern void _ZN7S4365C32v2Ev();
extern void _ZN7S4365C32v3Ev();
extern void _ZN7S4365C32v4Ev();
static  VTBL_ENTRY vtc_S4365C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4365C3[0]),
  (VTBL_ENTRY)&_ZN7S4365C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4365C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4365C3[];
extern  VTBL_ENTRY _ZTV7S4365C3[];
Class_Descriptor cd_S4365C3 = {  "S4365C3", // class name
  0,0,//no base classes
  &(vtc_S4365C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4365C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4365C3),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  S4365C2  : S4365C3 {
  void *s4365c2f0;
  virtual void  v5(); // _ZN7S4365C22v5Ev
  virtual void  v6(); // _ZN7S4365C22v6Ev
  ~S4365C2(); // tgen
  S4365C2(); // tgen
};
//SIG(-1 S4365C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4365C2 ::v5(){vfunc_called(this, "_ZN7S4365C22v5Ev");}
void  S4365C2 ::v6(){vfunc_called(this, "_ZN7S4365C22v6Ev");}
S4365C2 ::~S4365C2(){ note_dtor("S4365C2", this);} // tgen
S4365C2 ::S4365C2(){ note_ctor("S4365C2", this);} // tgen

static void Test_S4365C2()
{
  extern Class_Descriptor cd_S4365C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4365C2, buf);
    S4365C2 *dp, &lv = *(dp=new (buf) S4365C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4365C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4365C2)");
    check_base_class_offset(lv, (S4365C3*), 0, "S4365C2");
    check_field_offset(lv, s4365c2f0, ABISELECT(40,28), "S4365C2.s4365c2f0");
    test_class_info(&lv, &cd_S4365C2);
    dp->~S4365C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4365C2(Test_S4365C2, "S4365C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4365C2C1Ev();
extern void _ZN7S4365C2D1Ev();
Name_Map name_map_S4365C2[] = {
  NSPAIR(_ZN7S4365C2C1Ev),
  NSPAIR(_ZN7S4365C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4365C3;
extern VTBL_ENTRY _ZTI7S4365C3[];
extern  VTBL_ENTRY _ZTV7S4365C3[];
static Base_Class bases_S4365C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4365C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4365C2[];
extern void _ZN7S4365C2D1Ev();
extern void _ZN7S4365C2D0Ev();
extern void _ZN7S4365C32v2Ev();
extern void _ZN7S4365C32v3Ev();
extern void _ZN7S4365C32v4Ev();
extern void _ZN7S4365C22v5Ev();
extern void _ZN7S4365C22v6Ev();
static  VTBL_ENTRY vtc_S4365C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4365C2[0]),
  (VTBL_ENTRY)&_ZN7S4365C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4365C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4365C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4365C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4365C2[];
extern  VTBL_ENTRY _ZTV7S4365C2[];
Class_Descriptor cd_S4365C2 = {  "S4365C2", // class name
  bases_S4365C2, 1,
  &(vtc_S4365C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4365C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4365C2),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  S4365C1  : S4365C2 {
  ::S4224C19_nt s4365c1f0;
  ::S4224C19_nt s4365c1f1;
  int s4365c1f2[2];
  long s4365c1f3;
  ::S4224C19_nt s4365c1f4;
  ::S1701C14 s4365c1f5;
  ::S1702C13 s4365c1f6;
  char s4365c1f7[128];
  int s4365c1f8[2];
  char s4365c1f9;
  void *s4365c1f10;
  virtual void  v1(); // _ZN7S4365C12v1Ev
  ~S4365C1(); // tgen
  S4365C1(); // tgen
};
//SIG(1 S4365C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC4 FC4 Fi[2] Fl FC4 FC6{ Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 FC4 Fl Fi[2] FC7{ Fc[4]}} FC8{ Fc[1280] FC4 FL Fc[2]} Fc[128] Fi[2] Fc Fp}


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

static void Test_S4365C1()
{
  extern Class_Descriptor cd_S4365C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(216,410)];
    init_test(&cd_S4365C1, buf);
    S4365C1 *dp, &lv = *(dp=new (buf) S4365C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1720,1636), "sizeof(S4365C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4365C1)");
    check_base_class_offset(lv, (S4365C3*)(S4365C2*), 0, "S4365C1");
    check_base_class_offset(lv, (S4365C2*), 0, "S4365C1");
    check_field_offset(lv, s4365c1f0, ABISELECT(48,32), "S4365C1.s4365c1f0");
    check_field_offset(lv, s4365c1f1, ABISELECT(64,44), "S4365C1.s4365c1f1");
    check_field_offset(lv, s4365c1f2, ABISELECT(80,56), "S4365C1.s4365c1f2");
    check_field_offset(lv, s4365c1f3, ABISELECT(88,64), "S4365C1.s4365c1f3");
    check_field_offset(lv, s4365c1f4, ABISELECT(96,68), "S4365C1.s4365c1f4");
    check_field_offset(lv, s4365c1f5, ABISELECT(112,80), "S4365C1.s4365c1f5");
    check_field_offset(lv, s4365c1f6, ABISELECT(256,188), "S4365C1.s4365c1f6");
    check_field_offset(lv, s4365c1f7, ABISELECT(1568,1492), "S4365C1.s4365c1f7");
    check_field_offset(lv, s4365c1f8, ABISELECT(1696,1620), "S4365C1.s4365c1f8");
    check_field_offset(lv, s4365c1f9, ABISELECT(1704,1628), "S4365C1.s4365c1f9");
    check_field_offset(lv, s4365c1f10, ABISELECT(1712,1632), "S4365C1.s4365c1f10");
    test_class_info(&lv, &cd_S4365C1);
    dp->~S4365C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4365C1(Test_S4365C1, "S4365C1", ABISELECT(1720,1636));

#else // __cplusplus

extern void _ZN7S4365C1C1Ev();
extern void _ZN7S4365C1D1Ev();
Name_Map name_map_S4365C1[] = {
  NSPAIR(_ZN7S4365C1C1Ev),
  NSPAIR(_ZN7S4365C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4365C3;
extern VTBL_ENTRY _ZTI7S4365C3[];
extern  VTBL_ENTRY _ZTV7S4365C3[];
extern Class_Descriptor cd_S4365C2;
extern VTBL_ENTRY _ZTI7S4365C2[];
extern  VTBL_ENTRY _ZTV7S4365C2[];
static Base_Class bases_S4365C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4365C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4365C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4365C1[];
extern void _ZN7S4365C1D1Ev();
extern void _ZN7S4365C1D0Ev();
extern void _ZN7S4365C32v2Ev();
extern void _ZN7S4365C32v3Ev();
extern void _ZN7S4365C32v4Ev();
extern void _ZN7S4365C22v5Ev();
extern void _ZN7S4365C22v6Ev();
extern void _ZN7S4365C12v1Ev();
static  VTBL_ENTRY vtc_S4365C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4365C1[0]),
  (VTBL_ENTRY)&_ZN7S4365C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4365C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4365C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4365C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4365C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4365C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4365C1[];
extern  VTBL_ENTRY _ZTV7S4365C1[];
Class_Descriptor cd_S4365C1 = {  "S4365C1", // class name
  bases_S4365C1, 2,
  &(vtc_S4365C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1720,1636), // object size
  NSPAIRA(_ZTI7S4365C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4365C1),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  S19069C4  {
  long double s19069c4f0;
  virtual void  v6(); // _ZN8S19069C42v6Ev
  virtual void  v7(); // _ZN8S19069C42v7Ev
  virtual void  v8(); // _ZN8S19069C42v8Ev
  ~S19069C4(); // tgen
  S19069C4(); // tgen
};
//SIG(-1 S19069C4) C1{ v1 v2 v3 FD}


void  S19069C4 ::v6(){vfunc_called(this, "_ZN8S19069C42v6Ev");}
void  S19069C4 ::v7(){vfunc_called(this, "_ZN8S19069C42v7Ev");}
void  S19069C4 ::v8(){vfunc_called(this, "_ZN8S19069C42v8Ev");}
S19069C4 ::~S19069C4(){ note_dtor("S19069C4", this);} // tgen
S19069C4 ::S19069C4(){ note_ctor("S19069C4", this);} // tgen

static void Test_S19069C4()
{
  extern Class_Descriptor cd_S19069C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S19069C4, buf);
    S19069C4 *dp, &lv = *(dp=new (buf) S19069C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19069C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C4)");
    check_field_offset(lv, s19069c4f0, ABISELECT(16,4), "S19069C4.s19069c4f0");
    test_class_info(&lv, &cd_S19069C4);
    dp->~S19069C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C4(Test_S19069C4, "S19069C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19069C4C1Ev();
extern void _ZN8S19069C4D1Ev();
Name_Map name_map_S19069C4[] = {
  NSPAIR(_ZN8S19069C4C1Ev),
  NSPAIR(_ZN8S19069C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19069C4[];
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY vtc_S19069C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C4[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
Class_Descriptor cd_S19069C4 = {  "S19069C4", // class name
  0,0,//no base classes
  &(vtc_S19069C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19069C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19069C4),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  S19069C3  : S19069C4 {
  void *s19069c3f0;
  virtual void  v9(); // _ZN8S19069C32v9Ev
  virtual void  v10(); // _ZN8S19069C33v10Ev
  ~S19069C3(); // tgen
  S19069C3(); // tgen
};
//SIG(-1 S19069C3) C1{ BC2{ v3 v4 v5 FD} v1 v2 Fp}


void  S19069C3 ::v9(){vfunc_called(this, "_ZN8S19069C32v9Ev");}
void  S19069C3 ::v10(){vfunc_called(this, "_ZN8S19069C33v10Ev");}
S19069C3 ::~S19069C3(){ note_dtor("S19069C3", this);} // tgen
S19069C3 ::S19069C3(){ note_ctor("S19069C3", this);} // tgen

static void Test_S19069C3()
{
  extern Class_Descriptor cd_S19069C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19069C3, buf);
    S19069C3 *dp, &lv = *(dp=new (buf) S19069C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19069C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C3)");
    check_base_class_offset(lv, (S19069C4*), 0, "S19069C3");
    check_field_offset(lv, s19069c3f0, ABISELECT(32,16), "S19069C3.s19069c3f0");
    test_class_info(&lv, &cd_S19069C3);
    dp->~S19069C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C3(Test_S19069C3, "S19069C3", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19069C3C1Ev();
extern void _ZN8S19069C3D1Ev();
Name_Map name_map_S19069C3[] = {
  NSPAIR(_ZN8S19069C3C1Ev),
  NSPAIR(_ZN8S19069C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
static Base_Class bases_S19069C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19069C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19069C3[];
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
extern void _ZN8S19069C32v9Ev();
extern void _ZN8S19069C33v10Ev();
static  VTBL_ENTRY vtc_S19069C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C3[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19069C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19069C3[];
extern  VTBL_ENTRY _ZTV8S19069C3[];
Class_Descriptor cd_S19069C3 = {  "S19069C3", // class name
  bases_S19069C3, 1,
  &(vtc_S19069C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19069C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19069C3),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  S19069C2  : S19069C3 {
  char s19069c2f0;
  virtual void  v11(); // _ZN8S19069C23v11Ev
  virtual void  v12(); // _ZN8S19069C23v12Ev
  virtual void  v13(); // _ZN8S19069C23v13Ev
  virtual void  v14(); // _ZN8S19069C23v14Ev
  ~S19069C2(); // tgen
  S19069C2(); // tgen
};
//SIG(-1 S19069C2) C1{ BC2{ BC3{ v5 v6 v7 FD} v8 v9 Fp} v1 v2 v3 v4 Fc}


void  S19069C2 ::v11(){vfunc_called(this, "_ZN8S19069C23v11Ev");}
void  S19069C2 ::v12(){vfunc_called(this, "_ZN8S19069C23v12Ev");}
void  S19069C2 ::v13(){vfunc_called(this, "_ZN8S19069C23v13Ev");}
void  S19069C2 ::v14(){vfunc_called(this, "_ZN8S19069C23v14Ev");}
S19069C2 ::~S19069C2(){ note_dtor("S19069C2", this);} // tgen
S19069C2 ::S19069C2(){ note_ctor("S19069C2", this);} // tgen

static void Test_S19069C2()
{
  extern Class_Descriptor cd_S19069C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19069C2, buf);
    S19069C2 *dp, &lv = *(dp=new (buf) S19069C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19069C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C2)");
    check_base_class_offset(lv, (S19069C4*)(S19069C3*), 0, "S19069C2");
    check_base_class_offset(lv, (S19069C3*), 0, "S19069C2");
    check_field_offset(lv, s19069c2f0, ABISELECT(40,20), "S19069C2.s19069c2f0");
    test_class_info(&lv, &cd_S19069C2);
    dp->~S19069C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C2(Test_S19069C2, "S19069C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19069C2C1Ev();
extern void _ZN8S19069C2D1Ev();
Name_Map name_map_S19069C2[] = {
  NSPAIR(_ZN8S19069C2C1Ev),
  NSPAIR(_ZN8S19069C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
extern Class_Descriptor cd_S19069C3;
extern VTBL_ENTRY _ZTI8S19069C3[];
extern  VTBL_ENTRY _ZTV8S19069C3[];
static Base_Class bases_S19069C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19069C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19069C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19069C2[];
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
extern void _ZN8S19069C32v9Ev();
extern void _ZN8S19069C33v10Ev();
extern void _ZN8S19069C23v11Ev();
extern void _ZN8S19069C23v12Ev();
extern void _ZN8S19069C23v13Ev();
extern void _ZN8S19069C23v14Ev();
static  VTBL_ENTRY vtc_S19069C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C2[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19069C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S19069C2[];
extern  VTBL_ENTRY _ZTV8S19069C2[];
Class_Descriptor cd_S19069C2 = {  "S19069C2", // class name
  bases_S19069C2, 2,
  &(vtc_S19069C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19069C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19069C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19069C7  {
  virtual void  v15(); // _ZN8S19069C73v15Ev
  virtual void  v16(); // _ZN8S19069C73v16Ev
  virtual void  v17(); // _ZN8S19069C73v17Ev
  virtual void  v18(); // _ZN8S19069C73v18Ev
  ~S19069C7(); // tgen
  S19069C7(); // tgen
};
//SIG(-1 S19069C7) C1{ v1 v2 v3 v4}


void  S19069C7 ::v15(){vfunc_called(this, "_ZN8S19069C73v15Ev");}
void  S19069C7 ::v16(){vfunc_called(this, "_ZN8S19069C73v16Ev");}
void  S19069C7 ::v17(){vfunc_called(this, "_ZN8S19069C73v17Ev");}
void  S19069C7 ::v18(){vfunc_called(this, "_ZN8S19069C73v18Ev");}
S19069C7 ::~S19069C7(){ note_dtor("S19069C7", this);} // tgen
S19069C7 ::S19069C7(){ note_ctor("S19069C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19069C7C1Ev();
extern void _ZN8S19069C7D1Ev();
Name_Map name_map_S19069C7[] = {
  NSPAIR(_ZN8S19069C7C1Ev),
  NSPAIR(_ZN8S19069C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19069C7[];
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
static  VTBL_ENTRY vtc_S19069C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C7[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
};
extern VTBL_ENTRY _ZTI8S19069C7[];
extern  VTBL_ENTRY _ZTV8S19069C7[];
Class_Descriptor cd_S19069C7 = {  "S19069C7", // class name
  0,0,//no base classes
  &(vtc_S19069C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19069C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19069C7),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  S19069C8  : virtual S19069C4 {
  virtual  ~S19069C8(); // _ZN8S19069C8D2Ev
  virtual void  v19(); // _ZN8S19069C83v19Ev
  virtual void  v20(); // _ZN8S19069C83v20Ev
  S19069C8(); // tgen
};
//SIG(-1 S19069C8) C1{ VBC2{ v3 v4 v5 FD} vd v1 v2}


 S19069C8 ::~S19069C8(){ note_dtor("S19069C8", this);}
void  S19069C8 ::v19(){vfunc_called(this, "_ZN8S19069C83v19Ev");}
void  S19069C8 ::v20(){vfunc_called(this, "_ZN8S19069C83v20Ev");}
S19069C8 ::S19069C8(){ note_ctor("S19069C8", this);} // tgen

static void Test_S19069C8()
{
  extern Class_Descriptor cd_S19069C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19069C8, buf);
    S19069C8 *dp, &lv = *(dp=new (buf) S19069C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19069C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C8)");
    check_base_class_offset(lv, (S19069C4*), ABISELECT(16,4), "S19069C8");
    test_class_info(&lv, &cd_S19069C8);
    dp->~S19069C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C8(Test_S19069C8, "S19069C8", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19069C8C1Ev();
extern void _ZN8S19069C8D2Ev();
Name_Map name_map_S19069C8[] = {
  NSPAIR(_ZN8S19069C8C1Ev),
  NSPAIR(_ZN8S19069C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
static Base_Class bases_S19069C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19069C4,    ABISELECT(16,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19069C8[];
extern void _ZN8S19069C8D1Ev();
extern void _ZN8S19069C8D0Ev();
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY vtc_S19069C8[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19069C8[];
static  VTT_ENTRY vtt_S19069C8[] = {
  {&(_ZTV8S19069C8[3]),  3,15},
  {&(_ZTV8S19069C8[12]),  12,15},
};
extern VTBL_ENTRY _ZTI8S19069C8[];
extern  VTBL_ENTRY _ZTV8S19069C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C8[];
Class_Descriptor cd_S19069C8 = {  "S19069C8", // class name
  bases_S19069C8, 1,
  &(vtc_S19069C8[0]), // expected_vtbl_contents
  &(vtt_S19069C8[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19069C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19069C8),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19069C8),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  S19069C6  : S19069C7 , virtual S19069C8 {
  virtual void  v21(); // _ZN8S19069C63v21Ev
  virtual void  v22(); // _ZN8S19069C63v22Ev
  virtual void  v23(); // _ZN8S19069C63v23Ev
  virtual void  v24(); // _ZN8S19069C63v24Ev
  virtual void  v25(); // _ZN8S19069C63v25Ev
  virtual void  v26(); // _ZN8S19069C63v26Ev
  virtual void  v27(); // _ZN8S19069C63v27Ev
  virtual void  v28(); // _ZN8S19069C63v28Ev
  ~S19069C6(); // tgen
  S19069C6(); // tgen
};
//SIG(-1 S19069C6) C1{ BC2{ v9 v10 v11 v12} VBC3{ VBC4{ v13 v14 v15 FD} vd v16 v17} v1 v2 v3 v4 v5 v6 v7 v8}


void  S19069C6 ::v21(){vfunc_called(this, "_ZN8S19069C63v21Ev");}
void  S19069C6 ::v22(){vfunc_called(this, "_ZN8S19069C63v22Ev");}
void  S19069C6 ::v23(){vfunc_called(this, "_ZN8S19069C63v23Ev");}
void  S19069C6 ::v24(){vfunc_called(this, "_ZN8S19069C63v24Ev");}
void  S19069C6 ::v25(){vfunc_called(this, "_ZN8S19069C63v25Ev");}
void  S19069C6 ::v26(){vfunc_called(this, "_ZN8S19069C63v26Ev");}
void  S19069C6 ::v27(){vfunc_called(this, "_ZN8S19069C63v27Ev");}
void  S19069C6 ::v28(){vfunc_called(this, "_ZN8S19069C63v28Ev");}
S19069C6 ::~S19069C6(){ note_dtor("S19069C6", this);} // tgen
S19069C6 ::S19069C6(){ note_ctor("S19069C6", this);} // tgen

static void Test_S19069C6()
{
  extern Class_Descriptor cd_S19069C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19069C6, buf);
    S19069C6 *dp, &lv = *(dp=new (buf) S19069C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19069C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C6)");
    check_base_class_offset(lv, (S19069C7*), 0, "S19069C6");
    check_base_class_offset(lv, (S19069C4*)(S19069C8*), ABISELECT(16,8), "S19069C6");
    check_base_class_offset(lv, (S19069C8*), ABISELECT(8,4), "S19069C6");
    test_class_info(&lv, &cd_S19069C6);
    dp->~S19069C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C6(Test_S19069C6, "S19069C6", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19069C6C1Ev();
extern void _ZN8S19069C6D1Ev();
Name_Map name_map_S19069C6[] = {
  NSPAIR(_ZN8S19069C6C1Ev),
  NSPAIR(_ZN8S19069C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19069C7;
extern VTBL_ENTRY _ZTI8S19069C7[];
extern  VTBL_ENTRY _ZTV8S19069C7[];
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
extern Class_Descriptor cd_S19069C8;
extern VTBL_ENTRY _ZTI8S19069C8[];
extern  VTBL_ENTRY _ZTV8S19069C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C8[];
static Base_Class bases_S19069C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19069C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19069C4,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19069C8,    ABISELECT(8,4), //bcp->offset
    18, //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 _ZTI8S19069C6[];
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
extern void _ZN8S19069C63v21Ev();
extern void _ZN8S19069C63v22Ev();
extern void _ZN8S19069C63v23Ev();
extern void _ZN8S19069C63v24Ev();
extern void _ZN8S19069C63v25Ev();
extern void _ZN8S19069C63v26Ev();
extern void _ZN8S19069C63v27Ev();
extern void _ZN8S19069C63v28Ev();
extern void _ZN8S19069C6D1Ev();
extern void _ZN8S19069C6D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19069C6D1Ev,_ZThn4_N8S19069C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19069C6D0Ev,_ZThn4_N8S19069C6D0Ev)() __attribute__((weak));
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY vtc_S19069C6[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v23Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v24Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v28Ev,
  (VTBL_ENTRY)&_ZN8S19069C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C6D0Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19069C6[];
extern void _ZN8S19069C8D1Ev();
extern void _ZN8S19069C8D0Ev();
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C8__8S19069C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
};
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C4__8S19069C8__8S19069C6[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
static  VTT_ENTRY vtt_S19069C6[] = {
  {&(_ZTV8S19069C6[4]),  4,36},
  {&(_ZTV8S19069C6[24]),  24,36},
  {&(_ZTV8S19069C6[33]),  33,36},
  {&(_tg__ZTV8S19069C8__8S19069C6[3]),  3,7},
  {&(_tg__ZTV8S19069C4__8S19069C8__8S19069C6[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19069C6[];
extern  VTBL_ENTRY _ZTV8S19069C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C6[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19069C6D0Ev,_ZThn4_N8S19069C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19069C6D1Ev,_ZThn4_N8S19069C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19069C6 = {  "S19069C6", // class name
  bases_S19069C6, 3,
  &(vtc_S19069C6[0]), // expected_vtbl_contents
  &(vtt_S19069C6[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19069C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19069C6),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19069C6),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19069C5  : virtual S19069C6 {
  virtual  ~S19069C5(); // _ZN8S19069C5D2Ev
  virtual void  v29(); // _ZN8S19069C53v29Ev
  virtual void  v30(); // _ZN8S19069C53v30Ev
  virtual void  v31(); // _ZN8S19069C53v31Ev
  virtual void  v32(); // _ZN8S19069C53v32Ev
  S19069C5(); // tgen
};
//SIG(-1 S19069C5) C1{ VBC2{ BC3{ v5 v6 v7 v8} VBC4{ VBC5{ v9 v10 v11 FD} vd v12 v13} v14 v15 v16 v17 v18 v19 v20 v21} vd v1 v2 v3 v4}


 S19069C5 ::~S19069C5(){ note_dtor("S19069C5", this);}
void  S19069C5 ::v29(){vfunc_called(this, "_ZN8S19069C53v29Ev");}
void  S19069C5 ::v30(){vfunc_called(this, "_ZN8S19069C53v30Ev");}
void  S19069C5 ::v31(){vfunc_called(this, "_ZN8S19069C53v31Ev");}
void  S19069C5 ::v32(){vfunc_called(this, "_ZN8S19069C53v32Ev");}
S19069C5 ::S19069C5(){ note_ctor("S19069C5", this);} // tgen

static void Test_S19069C5()
{
  extern Class_Descriptor cd_S19069C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19069C5, buf);
    S19069C5 *dp, &lv = *(dp=new (buf) S19069C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19069C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C5)");
    check_base_class_offset(lv, (S19069C7*)(S19069C6*), 0, "S19069C5");
    check_base_class_offset(lv, (S19069C4*)(S19069C8*), ABISELECT(16,8), "S19069C5");
    check_base_class_offset(lv, (S19069C8*)(S19069C6*), ABISELECT(8,4), "S19069C5");
    check_base_class_offset(lv, (S19069C6*), 0, "S19069C5");
    test_class_info(&lv, &cd_S19069C5);
    dp->~S19069C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C5(Test_S19069C5, "S19069C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19069C5C1Ev();
extern void _ZN8S19069C5D2Ev();
Name_Map name_map_S19069C5[] = {
  NSPAIR(_ZN8S19069C5C1Ev),
  NSPAIR(_ZN8S19069C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19069C7;
extern VTBL_ENTRY _ZTI8S19069C7[];
extern  VTBL_ENTRY _ZTV8S19069C7[];
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
extern Class_Descriptor cd_S19069C8;
extern VTBL_ENTRY _ZTI8S19069C8[];
extern  VTBL_ENTRY _ZTV8S19069C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C8[];
extern Class_Descriptor cd_S19069C6;
extern VTBL_ENTRY _ZTI8S19069C6[];
extern  VTBL_ENTRY _ZTV8S19069C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C6[];
static Base_Class bases_S19069C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19069C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19069C4,    ABISELECT(16,8), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19069C8,    ABISELECT(8,4), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19069C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //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 _ZTI8S19069C5[];
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
extern void _ZN8S19069C63v21Ev();
extern void _ZN8S19069C63v22Ev();
extern void _ZN8S19069C63v23Ev();
extern void _ZN8S19069C63v24Ev();
extern void _ZN8S19069C63v25Ev();
extern void _ZN8S19069C63v26Ev();
extern void _ZN8S19069C63v27Ev();
extern void _ZN8S19069C63v28Ev();
extern void _ZN8S19069C5D1Ev();
extern void _ZN8S19069C5D0Ev();
extern void _ZN8S19069C53v29Ev();
extern void _ZN8S19069C53v30Ev();
extern void _ZN8S19069C53v31Ev();
extern void _ZN8S19069C53v32Ev();
extern void ABISELECT(_ZTv0_n32_N8S19069C5D1Ev,_ZTv0_n16_N8S19069C5D1Ev)();
extern void ABISELECT(_ZThn8_N8S19069C5D1Ev,_ZThn4_N8S19069C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19069C5D0Ev,_ZTv0_n16_N8S19069C5D0Ev)();
extern void ABISELECT(_ZThn8_N8S19069C5D0Ev,_ZThn4_N8S19069C5D0Ev)() __attribute__((weak));
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY vtc_S19069C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C5[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v23Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v24Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v28Ev,
  (VTBL_ENTRY)&_ZN8S19069C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v32Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C5D1Ev,_ZTv0_n16_N8S19069C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C5D0Ev,_ZTv0_n16_N8S19069C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19069C5[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19069C5[];
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
extern void _ZN8S19069C63v21Ev();
extern void _ZN8S19069C63v22Ev();
extern void _ZN8S19069C63v23Ev();
extern void _ZN8S19069C63v24Ev();
extern void _ZN8S19069C63v25Ev();
extern void _ZN8S19069C63v26Ev();
extern void _ZN8S19069C63v27Ev();
extern void _ZN8S19069C63v28Ev();
extern void _ZN8S19069C6D1Ev();
extern void _ZN8S19069C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C6__8S19069C5[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v23Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v24Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v28Ev,
  (VTBL_ENTRY)&_ZN8S19069C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C6D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19069C6D1Ev,_ZThn4_N8S19069C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19069C6D0Ev,_ZThn4_N8S19069C6D0Ev)() __attribute__((weak));
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C8__8S19069C6__8S19069C5[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
};
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C4__8S19069C6__8S19069C5[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern void _ZN8S19069C8D1Ev();
extern void _ZN8S19069C8D0Ev();
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C8__8S19069C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
};
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C4__8S19069C8__8S19069C5[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
static  VTT_ENTRY vtt_S19069C5[] = {
  {&(_ZTV8S19069C5[18]),  18,54},
  {&(_ZTV8S19069C5[18]),  18,54},
  {&(_ZTV8S19069C5[42]),  42,54},
  {&(_ZTV8S19069C5[51]),  51,54},
  {&(_tg__ZTV8S19069C6__8S19069C5[4]),  4,18},
  {&(_tg__ZTV8S19069C8__8S19069C6__8S19069C5[6]),  6,10},
  {&(_tg__ZTV8S19069C4__8S19069C6__8S19069C5[5]),  5,8},
  {&(_tg__ZTV8S19069C8__8S19069C5[3]),  3,7},
  {&(_tg__ZTV8S19069C4__8S19069C8__8S19069C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19069C5[];
extern  VTBL_ENTRY _ZTV8S19069C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C5[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19069C6D0Ev,_ZThn4_N8S19069C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19069C6D1Ev,_ZThn4_N8S19069C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C5D0Ev,_ZTv0_n16_N8S19069C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19069C5D0Ev,_ZThn4_N8S19069C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C5D1Ev,_ZTv0_n16_N8S19069C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19069C5D1Ev,_ZThn4_N8S19069C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19069C5 = {  "S19069C5", // class name
  bases_S19069C5, 4,
  &(vtc_S19069C5[0]), // expected_vtbl_contents
  &(vtt_S19069C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19069C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19069C5),54, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19069C5),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19069C1  : virtual S19069C2 , virtual S19069C5 {
  void *s19069c1f0[9];
  virtual  ~S19069C1(); // _ZN8S19069C1D2Ev
  virtual void  v1(); // _ZN8S19069C12v1Ev
  virtual void  v2(); // _ZN8S19069C12v2Ev
  virtual void  v3(); // _ZN8S19069C12v3Ev
  virtual void  v4(); // _ZN8S19069C12v4Ev
  virtual void  v5(); // _ZN8S19069C12v5Ev
  S19069C1(); // tgen
};
//SIG(1 S19069C1) C1{ VBC2{ BC3{ BC4{ v6 v7 v8 FD} v9 v10 Fp} v11 v12 v13 v14 Fc} VBC5{ VBC6{ BC7{ v15 v16 v17 v18} VBC8{ VBC4 vd v19 v20} v21 v22 v23 v24 v25 v26 v27 v28} vd v29 v30 v31 v32} vd v1 v2 v3 v4 v5 Fp[9]}


 S19069C1 ::~S19069C1(){ note_dtor("S19069C1", this);}
void  S19069C1 ::v1(){vfunc_called(this, "_ZN8S19069C12v1Ev");}
void  S19069C1 ::v2(){vfunc_called(this, "_ZN8S19069C12v2Ev");}
void  S19069C1 ::v3(){vfunc_called(this, "_ZN8S19069C12v3Ev");}
void  S19069C1 ::v4(){vfunc_called(this, "_ZN8S19069C12v4Ev");}
void  S19069C1 ::v5(){vfunc_called(this, "_ZN8S19069C12v5Ev");}
S19069C1 ::S19069C1(){ note_ctor("S19069C1", this);} // tgen

static void Test_S19069C1()
{
  extern Class_Descriptor cd_S19069C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,22)];
    init_test(&cd_S19069C1, buf);
    S19069C1 *dp, &lv = *(dp=new (buf) S19069C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,84), "sizeof(S19069C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19069C1)");
    check_base_class_offset(lv, (S19069C4*)(S19069C3*)(S19069C2*), ABISELECT(80,40), "S19069C1");
    check_base_class_offset(lv, (S19069C3*)(S19069C2*), ABISELECT(80,40), "S19069C1");
    check_base_class_offset(lv, (S19069C2*), ABISELECT(80,40), "S19069C1");
    check_base_class_offset(lv, (S19069C7*)(S19069C6*), 0, "S19069C1");
    check_base_class_offset(lv, (S19069C4*)(S19069C8*), ABISELECT(144,68), "S19069C1");
    check_base_class_offset(lv, (S19069C8*)(S19069C6*), ABISELECT(128,64), "S19069C1");
    check_base_class_offset(lv, (S19069C6*)(S19069C5*), 0, "S19069C1");
    check_base_class_offset(lv, (S19069C5*), 0, "S19069C1");
    check_field_offset(lv, s19069c1f0, ABISELECT(8,4), "S19069C1.s19069c1f0");
    test_class_info(&lv, &cd_S19069C1);
    dp->~S19069C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19069C1(Test_S19069C1, "S19069C1", ABISELECT(176,84));

#else // __cplusplus

extern void _ZN8S19069C1C1Ev();
extern void _ZN8S19069C1D2Ev();
Name_Map name_map_S19069C1[] = {
  NSPAIR(_ZN8S19069C1C1Ev),
  NSPAIR(_ZN8S19069C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
extern Class_Descriptor cd_S19069C3;
extern VTBL_ENTRY _ZTI8S19069C3[];
extern  VTBL_ENTRY _ZTV8S19069C3[];
extern Class_Descriptor cd_S19069C2;
extern VTBL_ENTRY _ZTI8S19069C2[];
extern  VTBL_ENTRY _ZTV8S19069C2[];
extern Class_Descriptor cd_S19069C7;
extern VTBL_ENTRY _ZTI8S19069C7[];
extern  VTBL_ENTRY _ZTV8S19069C7[];
extern Class_Descriptor cd_S19069C4;
extern VTBL_ENTRY _ZTI8S19069C4[];
extern  VTBL_ENTRY _ZTV8S19069C4[];
extern Class_Descriptor cd_S19069C8;
extern VTBL_ENTRY _ZTI8S19069C8[];
extern  VTBL_ENTRY _ZTV8S19069C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C8[];
extern Class_Descriptor cd_S19069C6;
extern VTBL_ENTRY _ZTI8S19069C6[];
extern  VTBL_ENTRY _ZTV8S19069C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C6[];
extern Class_Descriptor cd_S19069C5;
extern VTBL_ENTRY _ZTI8S19069C5[];
extern  VTBL_ENTRY _ZTV8S19069C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C5[];
static Base_Class bases_S19069C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19069C4,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19069C3,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19069C2,    ABISELECT(80,40), //bcp->offset
    47, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19069C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19069C4,    ABISELECT(144,68), //bcp->offset
    77, //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
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19069C8,    ABISELECT(128,64), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19069C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19069C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19069C1[];
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
extern void _ZN8S19069C63v21Ev();
extern void _ZN8S19069C63v22Ev();
extern void _ZN8S19069C63v23Ev();
extern void _ZN8S19069C63v24Ev();
extern void _ZN8S19069C63v25Ev();
extern void _ZN8S19069C63v26Ev();
extern void _ZN8S19069C63v27Ev();
extern void _ZN8S19069C63v28Ev();
extern void _ZN8S19069C1D1Ev();
extern void _ZN8S19069C1D0Ev();
extern void _ZN8S19069C53v29Ev();
extern void _ZN8S19069C53v30Ev();
extern void _ZN8S19069C53v31Ev();
extern void _ZN8S19069C53v32Ev();
extern void _ZN8S19069C12v1Ev();
extern void _ZN8S19069C12v2Ev();
extern void _ZN8S19069C12v3Ev();
extern void _ZN8S19069C12v4Ev();
extern void _ZN8S19069C12v5Ev();
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
extern void _ZN8S19069C32v9Ev();
extern void _ZN8S19069C33v10Ev();
extern void _ZN8S19069C23v11Ev();
extern void _ZN8S19069C23v12Ev();
extern void _ZN8S19069C23v13Ev();
extern void _ZN8S19069C23v14Ev();
extern void ABISELECT(_ZTv0_n32_N8S19069C1D1Ev,_ZTv0_n16_N8S19069C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19069C1D1Ev,_ZThn64_N8S19069C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19069C1D0Ev,_ZTv0_n16_N8S19069C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19069C1D0Ev,_ZThn64_N8S19069C1D0Ev)() __attribute__((weak));
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY vtc_S19069C1[] = {
  0,
  ABISELECT(80,40),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,68),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C1[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v23Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v24Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v28Ev,
  (VTBL_ENTRY)&_ZN8S19069C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v32Ev,
  (VTBL_ENTRY)&_ZN8S19069C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19069C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19069C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19069C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19069C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19069C1[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19069C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19069C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19069C23v14Ev,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(16,4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19069C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C1D1Ev,_ZTv0_n16_N8S19069C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C1D0Ev,_ZTv0_n16_N8S19069C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
  0,
  0,
  0,
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI8S19069C1[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19069C1[];
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
extern void _ZN8S19069C63v21Ev();
extern void _ZN8S19069C63v22Ev();
extern void _ZN8S19069C63v23Ev();
extern void _ZN8S19069C63v24Ev();
extern void _ZN8S19069C63v25Ev();
extern void _ZN8S19069C63v26Ev();
extern void _ZN8S19069C63v27Ev();
extern void _ZN8S19069C63v28Ev();
extern void ABISELECT(_ZTv0_n136_N8S19069C5D1Ev,_ZTv0_n68_N8S19069C5D1Ev)();
extern void _ZN8S19069C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19069C5D0Ev,_ZTv0_n68_N8S19069C5D0Ev)();
extern void _ZN8S19069C5D0Ev() __attribute__((weak));
extern void _ZN8S19069C53v29Ev();
extern void _ZN8S19069C53v30Ev();
extern void _ZN8S19069C53v31Ev();
extern void _ZN8S19069C53v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C5__8S19069C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,68),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C5[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v23Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v24Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19069C5D1Ev,_ZTv0_n68_N8S19069C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19069C5D0Ev,_ZTv0_n68_N8S19069C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C53v29Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v30Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v31Ev,
  (VTBL_ENTRY)&_ZN8S19069C53v32Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19069C5D1Ev,_ZTv0_n16_N8S19069C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S19069C5D1Ev,_ZThn64_N8S19069C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19069C5D0Ev,_ZTv0_n16_N8S19069C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S19069C5D0Ev,_ZThn64_N8S19069C5D0Ev)() __attribute__((weak));
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C8__8S19069C5__8S19069C1[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(16,4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19069C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C5D1Ev,_ZTv0_n16_N8S19069C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C5D0Ev,_ZTv0_n16_N8S19069C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
};
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C4__8S19069C5__8S19069C1[] = {
  0,
  0,
  0,
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI8S19069C5[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern void _ZN8S19069C73v15Ev();
extern void _ZN8S19069C73v16Ev();
extern void _ZN8S19069C73v17Ev();
extern void _ZN8S19069C73v18Ev();
extern void _ZN8S19069C63v21Ev();
extern void _ZN8S19069C63v22Ev();
extern void _ZN8S19069C63v23Ev();
extern void _ZN8S19069C63v24Ev();
extern void _ZN8S19069C63v25Ev();
extern void _ZN8S19069C63v26Ev();
extern void _ZN8S19069C63v27Ev();
extern void _ZN8S19069C63v28Ev();
extern void _ZN8S19069C6D1Ev();
extern void _ZN8S19069C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C6__8S19069C1[] = {
  ABISELECT(144,68),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&_ZN8S19069C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19069C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v23Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v24Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v25Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v26Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v27Ev,
  (VTBL_ENTRY)&_ZN8S19069C63v28Ev,
  (VTBL_ENTRY)&_ZN8S19069C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C6D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19069C6D1Ev,_ZThn64_N8S19069C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19069C6D0Ev,_ZThn64_N8S19069C6D0Ev)() __attribute__((weak));
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C8__8S19069C6__8S19069C1[] = {
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(16,4),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
};
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C4__8S19069C6__8S19069C1[] = {
  0,
  0,
  0,
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI8S19069C6[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
extern void _ZN8S19069C8D1Ev();
extern void _ZN8S19069C8D0Ev();
extern void _ZN8S19069C83v19Ev();
extern void _ZN8S19069C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C8__8S19069C1[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19069C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19069C83v20Ev,
};
extern void _ZN8S19069C42v6Ev();
extern void _ZN8S19069C42v7Ev();
extern void _ZN8S19069C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19069C4__8S19069C8__8S19069C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19069C8[0]),
  (VTBL_ENTRY)&_ZN8S19069C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19069C42v8Ev,
};
static  VTT_ENTRY vtt_S19069C1[] = {
  {&(_ZTV8S19069C1[24]),  24,85},
  {&(_ZTV8S19069C1[58]),  58,85},
  {&(_ZTV8S19069C1[24]),  24,85},
  {&(_ZTV8S19069C1[24]),  24,85},
  {&(_ZTV8S19069C1[73]),  73,85},
  {&(_ZTV8S19069C1[82]),  82,85},
  {&(_tg__ZTV8S19069C5__8S19069C1[18]),  18,36},
  {&(_tg__ZTV8S19069C5__8S19069C1[18]),  18,36},
  {&(_tg__ZTV8S19069C8__8S19069C5__8S19069C1[6]),  6,10},
  {&(_tg__ZTV8S19069C4__8S19069C5__8S19069C1[5]),  5,8},
  {&(_tg__ZTV8S19069C6__8S19069C1[4]),  4,18},
  {&(_tg__ZTV8S19069C8__8S19069C6__8S19069C1[6]),  6,10},
  {&(_tg__ZTV8S19069C4__8S19069C6__8S19069C1[5]),  5,8},
  {&(_tg__ZTV8S19069C8__8S19069C1[3]),  3,7},
  {&(_tg__ZTV8S19069C4__8S19069C8__8S19069C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19069C1[];
extern  VTBL_ENTRY _ZTV8S19069C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19069C1[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C6D0Ev,_ZTv0_n16_N8S19069C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19069C6D0Ev,_ZThn64_N8S19069C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C6D1Ev,_ZTv0_n16_N8S19069C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19069C6D1Ev,_ZThn64_N8S19069C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C5D0Ev,_ZTv0_n16_N8S19069C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19069C5D0Ev,_ZThn64_N8S19069C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C5D1Ev,_ZTv0_n16_N8S19069C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19069C5D1Ev,_ZThn64_N8S19069C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19069C5D0Ev,_ZTv0_n68_N8S19069C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19069C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19069C5D1Ev,_ZTv0_n68_N8S19069C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19069C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C1D0Ev,_ZTv0_n16_N8S19069C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19069C1D0Ev,_ZThn64_N8S19069C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19069C1D1Ev,_ZTv0_n16_N8S19069C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19069C1D1Ev,_ZThn64_N8S19069C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19069C1 = {  "S19069C1", // class name
  bases_S19069C1, 8,
  &(vtc_S19069C1[0]), // expected_vtbl_contents
  &(vtt_S19069C1[0]), // expected_vtt_contents
  ABISELECT(176,84), // object size
  NSPAIRA(_ZTI8S19069C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19069C1),85, //virtual function table var
  24, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19069C1),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3197C3  {
  long double s3197c3f0[4];
  char s3197c3f1;
  virtual  ~S3197C3(); // _ZN7S3197C3D1Ev
  virtual void  v4(); // _ZN7S3197C32v4Ev
  virtual void  v5(); // _ZN7S3197C32v5Ev
  virtual void  v6(); // _ZN7S3197C32v6Ev
  virtual void  v7(); // _ZN7S3197C32v7Ev
  S3197C3(); // tgen
};
//SIG(-1 S3197C3) C1{ vd v1 v2 v3 v4 FD[4] Fc}


 S3197C3 ::~S3197C3(){ note_dtor("S3197C3", this);}
void  S3197C3 ::v4(){vfunc_called(this, "_ZN7S3197C32v4Ev");}
void  S3197C3 ::v5(){vfunc_called(this, "_ZN7S3197C32v5Ev");}
void  S3197C3 ::v6(){vfunc_called(this, "_ZN7S3197C32v6Ev");}
void  S3197C3 ::v7(){vfunc_called(this, "_ZN7S3197C32v7Ev");}
S3197C3 ::S3197C3(){ note_ctor("S3197C3", this);} // tgen

static void Test_S3197C3()
{
  extern Class_Descriptor cd_S3197C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,15)];
    init_test(&cd_S3197C3, buf);
    S3197C3 *dp, &lv = *(dp=new (buf) S3197C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S3197C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3197C3)");
    check_field_offset(lv, s3197c3f0, ABISELECT(16,4), "S3197C3.s3197c3f0");
    check_field_offset(lv, s3197c3f1, ABISELECT(80,52), "S3197C3.s3197c3f1");
    test_class_info(&lv, &cd_S3197C3);
    dp->~S3197C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3197C3(Test_S3197C3, "S3197C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S3197C3C1Ev();
extern void _ZN7S3197C3D1Ev();
Name_Map name_map_S3197C3[] = {
  NSPAIR(_ZN7S3197C3C1Ev),
  NSPAIR(_ZN7S3197C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3197C3[];
extern void _ZN7S3197C3D1Ev();
extern void _ZN7S3197C3D0Ev();
extern void _ZN7S3197C32v4Ev();
extern void _ZN7S3197C32v5Ev();
extern void _ZN7S3197C32v6Ev();
extern void _ZN7S3197C32v7Ev();
static  VTBL_ENTRY vtc_S3197C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3197C3[0]),
  (VTBL_ENTRY)&_ZN7S3197C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3197C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S3197C3[];
extern  VTBL_ENTRY _ZTV7S3197C3[];
Class_Descriptor cd_S3197C3 = {  "S3197C3", // class name
  0,0,//no base classes
  &(vtc_S3197C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S3197C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3197C3),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  S3197C2  : S3197C3 {
  void *s3197c2f0[8];
  short s3197c2f1:11;
  short s3197c2f2;
  virtual  ~S3197C2(); // _ZN7S3197C2D1Ev
  virtual void  v8(); // _ZN7S3197C22v8Ev
  virtual void  v9(); // _ZN7S3197C22v9Ev
  virtual void  v10(); // _ZN7S3197C23v10Ev
  virtual void  v11(); // _ZN7S3197C23v11Ev
  virtual void  v12(); // _ZN7S3197C23v12Ev
  virtual void  v13(); // _ZN7S3197C23v13Ev
  S3197C2(); // tgen
};
//SIG(-1 S3197C2) C1{ BC2{ vd v7 v8 v9 v10 FD[4] Fc} vd v1 v2 v3 v4 v5 v6 Fp[8] Fs:11 Fs}


 S3197C2 ::~S3197C2(){ note_dtor("S3197C2", this);}
void  S3197C2 ::v8(){vfunc_called(this, "_ZN7S3197C22v8Ev");}
void  S3197C2 ::v9(){vfunc_called(this, "_ZN7S3197C22v9Ev");}
void  S3197C2 ::v10(){vfunc_called(this, "_ZN7S3197C23v10Ev");}
void  S3197C2 ::v11(){vfunc_called(this, "_ZN7S3197C23v11Ev");}
void  S3197C2 ::v12(){vfunc_called(this, "_ZN7S3197C23v12Ev");}
void  S3197C2 ::v13(){vfunc_called(this, "_ZN7S3197C23v13Ev");}
S3197C2 ::S3197C2(){ note_ctor("S3197C2", this);} // tgen

static void Test_S3197C2()
{
  extern Class_Descriptor cd_S3197C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S3197C2, buf);
    S3197C2 *dp, &lv = *(dp=new (buf) S3197C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S3197C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3197C2)");
    check_base_class_offset(lv, (S3197C3*), 0, "S3197C2");
    check_field_offset(lv, s3197c2f0, ABISELECT(88,56), "S3197C2.s3197c2f0");
    set_bf_and_test(lv, s3197c2f1, ABISELECT(152,88), 0, 11, 1, "S3197C2");
    set_bf_and_test(lv, s3197c2f1, ABISELECT(152,88), 0, 11, hide_sll(1LL<<10), "S3197C2");
    check_field_offset(lv, s3197c2f2, ABISELECT(154,90), "S3197C2.s3197c2f2");
    test_class_info(&lv, &cd_S3197C2);
    dp->~S3197C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3197C2(Test_S3197C2, "S3197C2", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN7S3197C2C1Ev();
extern void _ZN7S3197C2D1Ev();
Name_Map name_map_S3197C2[] = {
  NSPAIR(_ZN7S3197C2C1Ev),
  NSPAIR(_ZN7S3197C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3197C3;
extern VTBL_ENTRY _ZTI7S3197C3[];
extern  VTBL_ENTRY _ZTV7S3197C3[];
static Base_Class bases_S3197C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3197C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3197C2[];
extern void _ZN7S3197C2D1Ev();
extern void _ZN7S3197C2D0Ev();
extern void _ZN7S3197C32v4Ev();
extern void _ZN7S3197C32v5Ev();
extern void _ZN7S3197C32v6Ev();
extern void _ZN7S3197C32v7Ev();
extern void _ZN7S3197C22v8Ev();
extern void _ZN7S3197C22v9Ev();
extern void _ZN7S3197C23v10Ev();
extern void _ZN7S3197C23v11Ev();
extern void _ZN7S3197C23v12Ev();
extern void _ZN7S3197C23v13Ev();
static  VTBL_ENTRY vtc_S3197C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3197C2[0]),
  (VTBL_ENTRY)&_ZN7S3197C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3197C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3197C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3197C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S3197C2[];
extern  VTBL_ENTRY _ZTV7S3197C2[];
Class_Descriptor cd_S3197C2 = {  "S3197C2", // class name
  bases_S3197C2, 1,
  &(vtc_S3197C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI7S3197C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3197C2),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  S3197C5_nt  {
  int s3197c5f0;
  virtual void  v20(); // _ZN10S3197C5_nt3v20Ev
  virtual void  v21(); // _ZN10S3197C5_nt3v21Ev
  virtual void  v22(); // _ZN10S3197C5_nt3v22Ev
  ~S3197C5_nt(); // tgen
  S3197C5_nt(); // tgen
};
//SIG(-1 S3197C5_nt) C1{ v1 v2 v3 Fi}


void  S3197C5_nt ::v20(){vfunc_called(this, "_ZN10S3197C5_nt3v20Ev");}
void  S3197C5_nt ::v21(){vfunc_called(this, "_ZN10S3197C5_nt3v21Ev");}
void  S3197C5_nt ::v22(){vfunc_called(this, "_ZN10S3197C5_nt3v22Ev");}
S3197C5_nt ::~S3197C5_nt(){ note_dtor("S3197C5_nt", this);} // tgen
S3197C5_nt ::S3197C5_nt(){ note_ctor("S3197C5_nt", this);} // tgen

//skip512 S3197C5_nt

#else // __cplusplus

extern void _ZN10S3197C5_ntC1Ev();
extern void _ZN10S3197C5_ntD1Ev();
Name_Map name_map_S3197C5_nt[] = {
  NSPAIR(_ZN10S3197C5_ntC1Ev),
  NSPAIR(_ZN10S3197C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3197C5_nt[];
extern void _ZN10S3197C5_nt3v20Ev();
extern void _ZN10S3197C5_nt3v21Ev();
extern void _ZN10S3197C5_nt3v22Ev();
static  VTBL_ENTRY vtc_S3197C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3197C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3197C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3197C5_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3197C5_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S3197C5_nt[];
VTBL_ENTRY *P__ZTI10S3197C5_nt = _ZTI10S3197C5_nt; 
extern  VTBL_ENTRY _ZTV10S3197C5_nt[];
Class_Descriptor cd_S3197C5_nt = {  "S3197C5_nt", // class name
  0,0,//no base classes
  &(vtc_S3197C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3197C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3197C5_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  S3197C6  {
  __tsi64 s3197c6f0;
  virtual void  v23(); // _ZN7S3197C63v23Ev
  virtual void  v24(); // _ZN7S3197C63v24Ev
  virtual void  v25(); // _ZN7S3197C63v25Ev
  virtual void  v26(); // _ZN7S3197C63v26Ev
  virtual void  v27(); // _ZN7S3197C63v27Ev
  virtual void  v28(); // _ZN7S3197C63v28Ev
  ~S3197C6(); // tgen
  S3197C6(); // tgen
};
//SIG(-1 S3197C6) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S3197C6 ::v23(){vfunc_called(this, "_ZN7S3197C63v23Ev");}
void  S3197C6 ::v24(){vfunc_called(this, "_ZN7S3197C63v24Ev");}
void  S3197C6 ::v25(){vfunc_called(this, "_ZN7S3197C63v25Ev");}
void  S3197C6 ::v26(){vfunc_called(this, "_ZN7S3197C63v26Ev");}
void  S3197C6 ::v27(){vfunc_called(this, "_ZN7S3197C63v27Ev");}
void  S3197C6 ::v28(){vfunc_called(this, "_ZN7S3197C63v28Ev");}
S3197C6 ::~S3197C6(){ note_dtor("S3197C6", this);} // tgen
S3197C6 ::S3197C6(){ note_ctor("S3197C6", this);} // tgen

static void Test_S3197C6()
{
  extern Class_Descriptor cd_S3197C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3197C6, buf);
    S3197C6 *dp, &lv = *(dp=new (buf) S3197C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3197C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3197C6)");
    check_field_offset(lv, s3197c6f0, ABISELECT(8,4), "S3197C6.s3197c6f0");
    test_class_info(&lv, &cd_S3197C6);
    dp->~S3197C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3197C6(Test_S3197C6, "S3197C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3197C6C1Ev();
extern void _ZN7S3197C6D1Ev();
Name_Map name_map_S3197C6[] = {
  NSPAIR(_ZN7S3197C6C1Ev),
  NSPAIR(_ZN7S3197C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3197C6[];
extern void _ZN7S3197C63v23Ev();
extern void _ZN7S3197C63v24Ev();
extern void _ZN7S3197C63v25Ev();
extern void _ZN7S3197C63v26Ev();
extern void _ZN7S3197C63v27Ev();
extern void _ZN7S3197C63v28Ev();
static  VTBL_ENTRY vtc_S3197C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3197C6[0]),
  (VTBL_ENTRY)&_ZN7S3197C63v23Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v24Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v25Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v28Ev,
};
extern VTBL_ENTRY _ZTI7S3197C6[];
extern  VTBL_ENTRY _ZTV7S3197C6[];
Class_Descriptor cd_S3197C6 = {  "S3197C6", // class name
  0,0,//no base classes
  &(vtc_S3197C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3197C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3197C6),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  S3197C4  : virtual S3197C5_nt , S3197C6 {
  int s3197c4f0;
  virtual void  v14(); // _ZN7S3197C43v14Ev
  virtual void  v15(); // _ZN7S3197C43v15Ev
  virtual void  v16(); // _ZN7S3197C43v16Ev
  virtual void  v17(); // _ZN7S3197C43v17Ev
  virtual void  v18(); // _ZN7S3197C43v18Ev
  virtual void  v19(); // _ZN7S3197C43v19Ev
  ~S3197C4(); // tgen
  S3197C4(); // tgen
};
//SIG(-1 S3197C4) C1{ VBC2{ v7 v8 v9 Fi} BC3{ v10 v11 v12 v13 v14 v15 FL} v1 v2 v3 v4 v5 v6 Fi}


void  S3197C4 ::v14(){vfunc_called(this, "_ZN7S3197C43v14Ev");}
void  S3197C4 ::v15(){vfunc_called(this, "_ZN7S3197C43v15Ev");}
void  S3197C4 ::v16(){vfunc_called(this, "_ZN7S3197C43v16Ev");}
void  S3197C4 ::v17(){vfunc_called(this, "_ZN7S3197C43v17Ev");}
void  S3197C4 ::v18(){vfunc_called(this, "_ZN7S3197C43v18Ev");}
void  S3197C4 ::v19(){vfunc_called(this, "_ZN7S3197C43v19Ev");}
S3197C4 ::~S3197C4(){ note_dtor("S3197C4", this);} // tgen
S3197C4 ::S3197C4(){ note_ctor("S3197C4", this);} // tgen

static void Test_S3197C4()
{
  extern Class_Descriptor cd_S3197C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S3197C4, buf);
    S3197C4 *dp, &lv = *(dp=new (buf) S3197C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3197C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3197C4)");
    check_base_class_offset(lv, (S3197C5_nt*), ABISELECT(24,16), "S3197C4");
    check_base_class_offset(lv, (S3197C6*), 0, "S3197C4");
    check_field_offset(lv, s3197c4f0, ABISELECT(16,12), "S3197C4.s3197c4f0");
    test_class_info(&lv, &cd_S3197C4);
    dp->~S3197C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3197C4(Test_S3197C4, "S3197C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S3197C4C1Ev();
extern void _ZN7S3197C4D1Ev();
Name_Map name_map_S3197C4[] = {
  NSPAIR(_ZN7S3197C4C1Ev),
  NSPAIR(_ZN7S3197C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3197C5_nt;
extern VTBL_ENTRY _ZTI10S3197C5_nt[];
extern  VTBL_ENTRY _ZTV10S3197C5_nt[];
extern Class_Descriptor cd_S3197C6;
extern VTBL_ENTRY _ZTI7S3197C6[];
extern  VTBL_ENTRY _ZTV7S3197C6[];
static Base_Class bases_S3197C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3197C5_nt,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3197C4[];
extern void _ZN7S3197C63v23Ev();
extern void _ZN7S3197C63v24Ev();
extern void _ZN7S3197C63v25Ev();
extern void _ZN7S3197C63v26Ev();
extern void _ZN7S3197C63v27Ev();
extern void _ZN7S3197C63v28Ev();
extern void _ZN7S3197C43v14Ev();
extern void _ZN7S3197C43v15Ev();
extern void _ZN7S3197C43v16Ev();
extern void _ZN7S3197C43v17Ev();
extern void _ZN7S3197C43v18Ev();
extern void _ZN7S3197C43v19Ev();
extern void _ZN10S3197C5_nt3v20Ev();
extern void _ZN10S3197C5_nt3v21Ev();
extern void _ZN10S3197C5_nt3v22Ev();
static  VTBL_ENTRY vtc_S3197C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3197C4[0]),
  (VTBL_ENTRY)&_ZN7S3197C63v23Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v24Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v25Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3197C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3197C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3197C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3197C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3197C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3197C43v18Ev,
  (VTBL_ENTRY)&_ZN7S3197C43v19Ev,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3197C4[0]),
  (VTBL_ENTRY)&_ZN10S3197C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3197C5_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3197C5_nt3v22Ev,
};
extern VTBL_ENTRY _ZTV7S3197C4[];
static  VTT_ENTRY vtt_S3197C4[] = {
  {&(_ZTV7S3197C4[3]),  3,23},
  {&(_ZTV7S3197C4[20]),  20,23},
};
extern VTBL_ENTRY _ZTI7S3197C4[];
extern  VTBL_ENTRY _ZTV7S3197C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3197C4[];
Class_Descriptor cd_S3197C4 = {  "S3197C4", // class name
  bases_S3197C4, 2,
  &(vtc_S3197C4[0]), // expected_vtbl_contents
  &(vtt_S3197C4[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3197C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3197C4),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3197C4),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  S3197C1  : S3197C2 , virtual S3197C3 {
  ::S3197C4 s3197c1f0;
  int s3197c1f1;
  virtual  ~S3197C1(); // _ZN7S3197C1D2Ev
  virtual void  v1(); // _ZN7S3197C12v1Ev
  virtual void  v2(); // _ZN7S3197C12v2Ev
  virtual void  v3(); // _ZN7S3197C12v3Ev
  S3197C1(); // tgen
};
//SIG(1 S3197C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 FD[4] Fc} vd v8 v9 v10 v11 v12 v13 Fp[8] Fs:11 Fs} VBC3 vd v1 v2 v3 FC4{ VBC5{ v20 v21 v22 Fi} BC6{ v23 v24 v25 v26 v27 v28 FL} v14 v15 v16 v17 v18 v19 Fi} Fi}


 S3197C1 ::~S3197C1(){ note_dtor("S3197C1", this);}
void  S3197C1 ::v1(){vfunc_called(this, "_ZN7S3197C12v1Ev");}
void  S3197C1 ::v2(){vfunc_called(this, "_ZN7S3197C12v2Ev");}
void  S3197C1 ::v3(){vfunc_called(this, "_ZN7S3197C12v3Ev");}
S3197C1 ::S3197C1(){ note_ctor("S3197C1", this);} // tgen

static void Test_S3197C1()
{
  extern Class_Descriptor cd_S3197C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,45)];
    init_test(&cd_S3197C1, buf);
    S3197C1 *dp, &lv = *(dp=new (buf) S3197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,176), "sizeof(S3197C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3197C1)");
    check_base_class_offset(lv, (S3197C3*)(S3197C2*), 0, "S3197C1");
    check_base_class_offset(lv, (S3197C2*), 0, "S3197C1");
    /*is_ambiguous_... S3197C1::S3197C3 */ AMB_check_base_class_offset(lv, (S3197C3*), ABISELECT(208,120), "S3197C1");
    check_field_offset(lv, s3197c1f0, ABISELECT(160,92), "S3197C1.s3197c1f0");
    check_field_offset(lv, s3197c1f1, ABISELECT(200,116), "S3197C1.s3197c1f1");
    test_class_info(&lv, &cd_S3197C1);
    dp->~S3197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3197C1(Test_S3197C1, "S3197C1", ABISELECT(304,176));

#else // __cplusplus

extern void _ZN7S3197C1C1Ev();
extern void _ZN7S3197C1D2Ev();
Name_Map name_map_S3197C1[] = {
  NSPAIR(_ZN7S3197C1C1Ev),
  NSPAIR(_ZN7S3197C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3197C3;
extern VTBL_ENTRY _ZTI7S3197C3[];
extern  VTBL_ENTRY _ZTV7S3197C3[];
extern Class_Descriptor cd_S3197C2;
extern VTBL_ENTRY _ZTI7S3197C2[];
extern  VTBL_ENTRY _ZTV7S3197C2[];
extern Class_Descriptor cd_S3197C3;
extern VTBL_ENTRY _ZTI7S3197C3[];
extern  VTBL_ENTRY _ZTV7S3197C3[];
static Base_Class bases_S3197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3197C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S3197C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3197C3,    ABISELECT(208,120), //bcp->offset
    18, //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 _ZTI7S3197C1[];
extern void _ZN7S3197C1D1Ev();
extern void _ZN7S3197C1D0Ev();
extern void _ZN7S3197C32v4Ev();
extern void _ZN7S3197C32v5Ev();
extern void _ZN7S3197C32v6Ev();
extern void _ZN7S3197C32v7Ev();
extern void _ZN7S3197C22v8Ev();
extern void _ZN7S3197C22v9Ev();
extern void _ZN7S3197C23v10Ev();
extern void _ZN7S3197C23v11Ev();
extern void _ZN7S3197C23v12Ev();
extern void _ZN7S3197C23v13Ev();
extern void _ZN7S3197C12v1Ev();
extern void _ZN7S3197C12v2Ev();
extern void _ZN7S3197C12v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S3197C1D1Ev,_ZTv0_n12_N7S3197C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S3197C1D1Ev,_ZThn120_N7S3197C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3197C1D0Ev,_ZTv0_n12_N7S3197C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S3197C1D0Ev,_ZThn120_N7S3197C1D0Ev)() __attribute__((weak));
extern void _ZN7S3197C32v4Ev();
extern void _ZN7S3197C32v5Ev();
extern void _ZN7S3197C32v6Ev();
extern void _ZN7S3197C32v7Ev();
static  VTBL_ENTRY vtc_S3197C1[] = {
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3197C1[0]),
  (VTBL_ENTRY)&_ZN7S3197C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3197C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3197C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3197C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3197C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3197C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3197C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3197C12v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S3197C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3197C1D1Ev,_ZTv0_n12_N7S3197C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3197C1D0Ev,_ZTv0_n12_N7S3197C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3197C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3197C32v7Ev,
};
extern VTBL_ENTRY _ZTV7S3197C1[];
static  VTT_ENTRY vtt_S3197C1[] = {
  {&(_ZTV7S3197C1[3]),  3,31},
  {&(_ZTV7S3197C1[25]),  25,31},
};
extern VTBL_ENTRY _ZTI7S3197C1[];
extern  VTBL_ENTRY _ZTV7S3197C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3197C1[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3197C1D0Ev,_ZTv0_n12_N7S3197C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3197C1D0Ev,_ZThn120_N7S3197C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3197C1D1Ev,_ZTv0_n12_N7S3197C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3197C1D1Ev,_ZThn120_N7S3197C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3197C1 = {  "S3197C1", // class name
  bases_S3197C1, 3,
  &(vtc_S3197C1[0]), // expected_vtbl_contents
  &(vtt_S3197C1[0]), // expected_vtt_contents
  ABISELECT(304,176), // object size
  NSPAIRA(_ZTI7S3197C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3197C1),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3197C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8624C2_nt  {
  virtual  ~S8624C2_nt(); // _ZN10S8624C2_ntD1Ev
  virtual void  v15(); // _ZN10S8624C2_nt3v15Ev
  virtual void  v16(); // _ZN10S8624C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8624C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8624C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8624C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8624C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8624C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8624C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8624C2_nt3v23Ev
  virtual void  v24(); // _ZN10S8624C2_nt3v24Ev
  virtual void  v25(); // _ZN10S8624C2_nt3v25Ev
  virtual void  v26(); // _ZN10S8624C2_nt3v26Ev
  virtual void  v27(); // _ZN10S8624C2_nt3v27Ev
  virtual void  v28(); // _ZN10S8624C2_nt3v28Ev
  S8624C2_nt(); // tgen
};
//SIG(-1 S8624C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14}


 S8624C2_nt ::~S8624C2_nt(){ note_dtor("S8624C2_nt", this);}
void  S8624C2_nt ::v15(){vfunc_called(this, "_ZN10S8624C2_nt3v15Ev");}
void  S8624C2_nt ::v16(){vfunc_called(this, "_ZN10S8624C2_nt3v16Ev");}
void  S8624C2_nt ::v17(){vfunc_called(this, "_ZN10S8624C2_nt3v17Ev");}
void  S8624C2_nt ::v18(){vfunc_called(this, "_ZN10S8624C2_nt3v18Ev");}
void  S8624C2_nt ::v19(){vfunc_called(this, "_ZN10S8624C2_nt3v19Ev");}
void  S8624C2_nt ::v20(){vfunc_called(this, "_ZN10S8624C2_nt3v20Ev");}
void  S8624C2_nt ::v21(){vfunc_called(this, "_ZN10S8624C2_nt3v21Ev");}
void  S8624C2_nt ::v22(){vfunc_called(this, "_ZN10S8624C2_nt3v22Ev");}
void  S8624C2_nt ::v23(){vfunc_called(this, "_ZN10S8624C2_nt3v23Ev");}
void  S8624C2_nt ::v24(){vfunc_called(this, "_ZN10S8624C2_nt3v24Ev");}
void  S8624C2_nt ::v25(){vfunc_called(this, "_ZN10S8624C2_nt3v25Ev");}
void  S8624C2_nt ::v26(){vfunc_called(this, "_ZN10S8624C2_nt3v26Ev");}
void  S8624C2_nt ::v27(){vfunc_called(this, "_ZN10S8624C2_nt3v27Ev");}
void  S8624C2_nt ::v28(){vfunc_called(this, "_ZN10S8624C2_nt3v28Ev");}
S8624C2_nt ::S8624C2_nt(){ note_ctor("S8624C2_nt", this);} // tgen

//skip512 S8624C2_nt

#else // __cplusplus

extern void _ZN10S8624C2_ntC1Ev();
extern void _ZN10S8624C2_ntD1Ev();
Name_Map name_map_S8624C2_nt[] = {
  NSPAIR(_ZN10S8624C2_ntC1Ev),
  NSPAIR(_ZN10S8624C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8624C2_nt[];
extern void _ZN10S8624C2_ntD1Ev();
extern void _ZN10S8624C2_ntD0Ev();
extern void _ZN10S8624C2_nt3v15Ev();
extern void _ZN10S8624C2_nt3v16Ev();
extern void _ZN10S8624C2_nt3v17Ev();
extern void _ZN10S8624C2_nt3v18Ev();
extern void _ZN10S8624C2_nt3v19Ev();
extern void _ZN10S8624C2_nt3v20Ev();
extern void _ZN10S8624C2_nt3v21Ev();
extern void _ZN10S8624C2_nt3v22Ev();
extern void _ZN10S8624C2_nt3v23Ev();
extern void _ZN10S8624C2_nt3v24Ev();
extern void _ZN10S8624C2_nt3v25Ev();
extern void _ZN10S8624C2_nt3v26Ev();
extern void _ZN10S8624C2_nt3v27Ev();
extern void _ZN10S8624C2_nt3v28Ev();
static  VTBL_ENTRY vtc_S8624C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8624C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8624C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S8624C2_nt[];
VTBL_ENTRY *P__ZTI10S8624C2_nt = _ZTI10S8624C2_nt; 
extern  VTBL_ENTRY _ZTV10S8624C2_nt[];
Class_Descriptor cd_S8624C2_nt = {  "S8624C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8624C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8624C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8624C2_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  S8624C6_nt  : S15502C5_nt {
};
//SIG(1 S8624C6_nt) C1{ BC2{ m Fc[16]}}



//skip512 S8624C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S15502C5_nt;
static Base_Class bases_S8624C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15502C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S8624C3  {
  ::S15502C4_nt s8624c3f0;
  ::S8624C6_nt s8624c3f1[3];
};
//SIG(-1 S8624C3) C1{ FC2{ BC3{ m Fc[16]}} FC4{ BC3}[3]}



static void Test_S8624C3()
{
  {
    init_simple_test("S8624C3");
    S8624C3 lv;
    check2(sizeof(lv), 64, "sizeof(S8624C3)");
    check2(__alignof__(lv), 1, "__alignof__(S8624C3)");
    check_field_offset(lv, s8624c3f0, 0, "S8624C3.s8624c3f0");
    check_field_offset(lv, s8624c3f1, 16, "S8624C3.s8624c3f1");
  }
}
static Arrange_To_Call_Me vS8624C3(Test_S8624C3, "S8624C3", 64);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8624C1  : S8624C2_nt {
  ::S8624C3 s8624c1f0;
  virtual void  v1(); // _ZN7S8624C12v1Ev
  virtual void  v2(); // _ZN7S8624C12v2Ev
  virtual void  v3(); // _ZN7S8624C12v3Ev
  virtual void  v4(); // _ZN7S8624C12v4Ev
  virtual void  v5(); // _ZN7S8624C12v5Ev
  virtual void  v6(); // _ZN7S8624C12v6Ev
  virtual void  v7(); // _ZN7S8624C12v7Ev
  virtual void  v8(); // _ZN7S8624C12v8Ev
  virtual void  v9(); // _ZN7S8624C12v9Ev
  virtual void  v10(); // _ZN7S8624C13v10Ev
  virtual void  v11(); // _ZN7S8624C13v11Ev
  virtual void  v12(); // _ZN7S8624C13v12Ev
  virtual void  v13(); // _ZN7S8624C13v13Ev
  virtual void  v14(); // _ZN7S8624C13v14Ev
  ~S8624C1(); // tgen
  S8624C1(); // tgen
};
//SIG(1 S8624C1) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 FC3{ FC4{ BC5{ m Fc[16]}} FC6{ BC5}[3]}}


void  S8624C1 ::v1(){vfunc_called(this, "_ZN7S8624C12v1Ev");}
void  S8624C1 ::v2(){vfunc_called(this, "_ZN7S8624C12v2Ev");}
void  S8624C1 ::v3(){vfunc_called(this, "_ZN7S8624C12v3Ev");}
void  S8624C1 ::v4(){vfunc_called(this, "_ZN7S8624C12v4Ev");}
void  S8624C1 ::v5(){vfunc_called(this, "_ZN7S8624C12v5Ev");}
void  S8624C1 ::v6(){vfunc_called(this, "_ZN7S8624C12v6Ev");}
void  S8624C1 ::v7(){vfunc_called(this, "_ZN7S8624C12v7Ev");}
void  S8624C1 ::v8(){vfunc_called(this, "_ZN7S8624C12v8Ev");}
void  S8624C1 ::v9(){vfunc_called(this, "_ZN7S8624C12v9Ev");}
void  S8624C1 ::v10(){vfunc_called(this, "_ZN7S8624C13v10Ev");}
void  S8624C1 ::v11(){vfunc_called(this, "_ZN7S8624C13v11Ev");}
void  S8624C1 ::v12(){vfunc_called(this, "_ZN7S8624C13v12Ev");}
void  S8624C1 ::v13(){vfunc_called(this, "_ZN7S8624C13v13Ev");}
void  S8624C1 ::v14(){vfunc_called(this, "_ZN7S8624C13v14Ev");}
S8624C1 ::~S8624C1(){ note_dtor("S8624C1", this);} // tgen
S8624C1 ::S8624C1(){ note_ctor("S8624C1", this);} // tgen

static void Test_S8624C1()
{
  extern Class_Descriptor cd_S8624C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,18)];
    init_test(&cd_S8624C1, buf);
    S8624C1 *dp, &lv = *(dp=new (buf) S8624C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,68), "sizeof(S8624C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8624C1)");
    check_base_class_offset(lv, (S8624C2_nt*), 0, "S8624C1");
    check_field_offset(lv, s8624c1f0, ABISELECT(8,4), "S8624C1.s8624c1f0");
    test_class_info(&lv, &cd_S8624C1);
    dp->~S8624C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8624C1(Test_S8624C1, "S8624C1", ABISELECT(72,68));

#else // __cplusplus

extern void _ZN7S8624C1C1Ev();
extern void _ZN7S8624C1D1Ev();
Name_Map name_map_S8624C1[] = {
  NSPAIR(_ZN7S8624C1C1Ev),
  NSPAIR(_ZN7S8624C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8624C2_nt;
extern VTBL_ENTRY _ZTI10S8624C2_nt[];
extern  VTBL_ENTRY _ZTV10S8624C2_nt[];
static Base_Class bases_S8624C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8624C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8624C1[];
extern void _ZN7S8624C1D1Ev();
extern void _ZN7S8624C1D0Ev();
extern void _ZN10S8624C2_nt3v15Ev();
extern void _ZN10S8624C2_nt3v16Ev();
extern void _ZN10S8624C2_nt3v17Ev();
extern void _ZN10S8624C2_nt3v18Ev();
extern void _ZN10S8624C2_nt3v19Ev();
extern void _ZN10S8624C2_nt3v20Ev();
extern void _ZN10S8624C2_nt3v21Ev();
extern void _ZN10S8624C2_nt3v22Ev();
extern void _ZN10S8624C2_nt3v23Ev();
extern void _ZN10S8624C2_nt3v24Ev();
extern void _ZN10S8624C2_nt3v25Ev();
extern void _ZN10S8624C2_nt3v26Ev();
extern void _ZN10S8624C2_nt3v27Ev();
extern void _ZN10S8624C2_nt3v28Ev();
extern void _ZN7S8624C12v1Ev();
extern void _ZN7S8624C12v2Ev();
extern void _ZN7S8624C12v3Ev();
extern void _ZN7S8624C12v4Ev();
extern void _ZN7S8624C12v5Ev();
extern void _ZN7S8624C12v6Ev();
extern void _ZN7S8624C12v7Ev();
extern void _ZN7S8624C12v8Ev();
extern void _ZN7S8624C12v9Ev();
extern void _ZN7S8624C13v10Ev();
extern void _ZN7S8624C13v11Ev();
extern void _ZN7S8624C13v12Ev();
extern void _ZN7S8624C13v13Ev();
extern void _ZN7S8624C13v14Ev();
static  VTBL_ENTRY vtc_S8624C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8624C1[0]),
  (VTBL_ENTRY)&_ZN7S8624C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8624C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8624C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8624C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8624C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8624C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8624C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8624C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8624C13v14Ev,
};
extern VTBL_ENTRY _ZTI7S8624C1[];
extern  VTBL_ENTRY _ZTV7S8624C1[];
Class_Descriptor cd_S8624C1 = {  "S8624C1", // class name
  bases_S8624C1, 1,
  &(vtc_S8624C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,68), // object size
  NSPAIRA(_ZTI7S8624C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8624C1),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  S4792C3  {
  ::S4224C19_nt s4792c3f0;
  int s4792c3f1[2];
  char s4792c3f2;
  virtual  ~S4792C3(); // _ZN7S4792C3D1Ev
  virtual void  v3(); // _ZN7S4792C32v3Ev
  virtual void  v4(); // _ZN7S4792C32v4Ev
  virtual void  v5(); // _ZN7S4792C32v5Ev
  S4792C3(); // tgen
};
//SIG(-1 S4792C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4792C3 ::~S4792C3(){ note_dtor("S4792C3", this);}
void  S4792C3 ::v3(){vfunc_called(this, "_ZN7S4792C32v3Ev");}
void  S4792C3 ::v4(){vfunc_called(this, "_ZN7S4792C32v4Ev");}
void  S4792C3 ::v5(){vfunc_called(this, "_ZN7S4792C32v5Ev");}
S4792C3 ::S4792C3(){ note_ctor("S4792C3", this);} // tgen

static void Test_S4792C3()
{
  extern Class_Descriptor cd_S4792C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4792C3, buf);
    S4792C3 *dp, &lv = *(dp=new (buf) S4792C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4792C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4792C3)");
    check_field_offset(lv, s4792c3f0, ABISELECT(8,4), "S4792C3.s4792c3f0");
    check_field_offset(lv, s4792c3f1, ABISELECT(24,16), "S4792C3.s4792c3f1");
    check_field_offset(lv, s4792c3f2, ABISELECT(32,24), "S4792C3.s4792c3f2");
    test_class_info(&lv, &cd_S4792C3);
    dp->~S4792C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4792C3(Test_S4792C3, "S4792C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4792C3C1Ev();
extern void _ZN7S4792C3D1Ev();
Name_Map name_map_S4792C3[] = {
  NSPAIR(_ZN7S4792C3C1Ev),
  NSPAIR(_ZN7S4792C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4792C3[];
extern void _ZN7S4792C3D1Ev();
extern void _ZN7S4792C3D0Ev();
extern void _ZN7S4792C32v3Ev();
extern void _ZN7S4792C32v4Ev();
extern void _ZN7S4792C32v5Ev();
static  VTBL_ENTRY vtc_S4792C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4792C3[0]),
  (VTBL_ENTRY)&_ZN7S4792C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4792C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4792C3[];
extern  VTBL_ENTRY _ZTV7S4792C3[];
Class_Descriptor cd_S4792C3 = {  "S4792C3", // class name
  0,0,//no base classes
  &(vtc_S4792C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4792C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4792C3),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  S4792C2  : S4792C3 {
  void *s4792c2f0;
  virtual void  v6(); // _ZN7S4792C22v6Ev
  virtual void  v7(); // _ZN7S4792C22v7Ev
  ~S4792C2(); // tgen
  S4792C2(); // tgen
};
//SIG(-1 S4792C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4792C2 ::v6(){vfunc_called(this, "_ZN7S4792C22v6Ev");}
void  S4792C2 ::v7(){vfunc_called(this, "_ZN7S4792C22v7Ev");}
S4792C2 ::~S4792C2(){ note_dtor("S4792C2", this);} // tgen
S4792C2 ::S4792C2(){ note_ctor("S4792C2", this);} // tgen

static void Test_S4792C2()
{
  extern Class_Descriptor cd_S4792C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4792C2, buf);
    S4792C2 *dp, &lv = *(dp=new (buf) S4792C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4792C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4792C2)");
    check_base_class_offset(lv, (S4792C3*), 0, "S4792C2");
    check_field_offset(lv, s4792c2f0, ABISELECT(40,28), "S4792C2.s4792c2f0");
    test_class_info(&lv, &cd_S4792C2);
    dp->~S4792C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4792C2(Test_S4792C2, "S4792C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4792C2C1Ev();
extern void _ZN7S4792C2D1Ev();
Name_Map name_map_S4792C2[] = {
  NSPAIR(_ZN7S4792C2C1Ev),
  NSPAIR(_ZN7S4792C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4792C3;
extern VTBL_ENTRY _ZTI7S4792C3[];
extern  VTBL_ENTRY _ZTV7S4792C3[];
static Base_Class bases_S4792C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4792C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4792C2[];
extern void _ZN7S4792C2D1Ev();
extern void _ZN7S4792C2D0Ev();
extern void _ZN7S4792C32v3Ev();
extern void _ZN7S4792C32v4Ev();
extern void _ZN7S4792C32v5Ev();
extern void _ZN7S4792C22v6Ev();
extern void _ZN7S4792C22v7Ev();
static  VTBL_ENTRY vtc_S4792C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4792C2[0]),
  (VTBL_ENTRY)&_ZN7S4792C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4792C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4792C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4792C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4792C2[];
extern  VTBL_ENTRY _ZTV7S4792C2[];
Class_Descriptor cd_S4792C2 = {  "S4792C2", // class name
  bases_S4792C2, 1,
  &(vtc_S4792C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4792C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4792C2),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  S4792C7_nt  {
  __tsi64 s4792c7f0[3];
  void *s4792c7f1[2];
  __tsi64 s4792c7f2[2];
  void  mf4792c7(); // _ZN10S4792C7_nt8mf4792c7Ev
};
//SIG(-1 S4792C7_nt) C1{ m FL[3] Fp[2] FL[2]}


void  S4792C7_nt ::mf4792c7(){}

//skip512 S4792C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4792C6_nt  {
  __tsi64 s4792c6f0;
  ::S4792C7_nt s4792c6f1;
  void *s4792c6f2;
  int s4792c6f3;
  __tsi64 s4792c6f4;
  int s4792c6f5;
  void  mf4792c6(); // _ZN10S4792C6_nt8mf4792c6Ev
};
//SIG(-1 S4792C6_nt) C1{ m FL FC2{ m FL[3] Fp[2] FL[2]} Fp Fi FL Fi}


void  S4792C6_nt ::mf4792c6(){}

//skip512 S4792C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4792C1  : S4792C2 {
  void *s4792c1f0;
  ::S4792C6_nt s4792c1f1;
  void *s4792c1f2[2];
  int s4792c1f3;
  void *s4792c1f4;
  char s4792c1f5;
  int s4792c1f6;
  ::S5309C7_nt s4792c1f7;
  char s4792c1f8;
  ::S4224C43_nt s4792c1f9;
  virtual  ~S4792C1(); // _ZN7S4792C1D1Ev
  virtual void  v1(); // _ZN7S4792C12v1Ev
  virtual void  v2(); // _ZN7S4792C12v2Ev
  S4792C1(); // tgen
};
//SIG(1 S4792C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 Fp FC6{ m FL FC7{ m FL[3] Fp[2] FL[2]} Fp Fi FL Fi} Fp[2] Fi Fp Fc Fi FC8{ m FC9{ Fl[4]}} Fc FC10{ m Fp}}


 S4792C1 ::~S4792C1(){ note_dtor("S4792C1", this);}
void  S4792C1 ::v1(){vfunc_called(this, "_ZN7S4792C12v1Ev");}
void  S4792C1 ::v2(){vfunc_called(this, "_ZN7S4792C12v2Ev");}
S4792C1 ::S4792C1(){ note_ctor("S4792C1", this);} // tgen

static void Test_S4792C1()
{
  extern Class_Descriptor cd_S4792C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S4792C1, buf);
    S4792C1 *dp, &lv = *(dp=new (buf) S4792C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S4792C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4792C1)");
    check_base_class_offset(lv, (S4792C3*)(S4792C2*), 0, "S4792C1");
    check_base_class_offset(lv, (S4792C2*), 0, "S4792C1");
    check_field_offset(lv, s4792c1f0, ABISELECT(48,32), "S4792C1.s4792c1f0");
    check_field_offset(lv, s4792c1f1, ABISELECT(56,36), "S4792C1.s4792c1f1");
    check_field_offset(lv, s4792c1f2, ABISELECT(152,112), "S4792C1.s4792c1f2");
    check_field_offset(lv, s4792c1f3, ABISELECT(168,120), "S4792C1.s4792c1f3");
    check_field_offset(lv, s4792c1f4, ABISELECT(176,124), "S4792C1.s4792c1f4");
    check_field_offset(lv, s4792c1f5, ABISELECT(184,128), "S4792C1.s4792c1f5");
    check_field_offset(lv, s4792c1f6, ABISELECT(188,132), "S4792C1.s4792c1f6");
    check_field_offset(lv, s4792c1f7, ABISELECT(192,136), "S4792C1.s4792c1f7");
    check_field_offset(lv, s4792c1f8, ABISELECT(224,152), "S4792C1.s4792c1f8");
    check_field_offset(lv, s4792c1f9, ABISELECT(232,156), "S4792C1.s4792c1f9");
    test_class_info(&lv, &cd_S4792C1);
    dp->~S4792C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4792C1(Test_S4792C1, "S4792C1", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S4792C1C1Ev();
extern void _ZN7S4792C1D1Ev();
Name_Map name_map_S4792C1[] = {
  NSPAIR(_ZN7S4792C1C1Ev),
  NSPAIR(_ZN7S4792C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4792C3;
extern VTBL_ENTRY _ZTI7S4792C3[];
extern  VTBL_ENTRY _ZTV7S4792C3[];
extern Class_Descriptor cd_S4792C2;
extern VTBL_ENTRY _ZTI7S4792C2[];
extern  VTBL_ENTRY _ZTV7S4792C2[];
static Base_Class bases_S4792C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4792C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4792C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4792C1[];
extern void _ZN7S4792C1D1Ev();
extern void _ZN7S4792C1D0Ev();
extern void _ZN7S4792C32v3Ev();
extern void _ZN7S4792C32v4Ev();
extern void _ZN7S4792C32v5Ev();
extern void _ZN7S4792C22v6Ev();
extern void _ZN7S4792C22v7Ev();
extern void _ZN7S4792C12v1Ev();
extern void _ZN7S4792C12v2Ev();
static  VTBL_ENTRY vtc_S4792C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4792C1[0]),
  (VTBL_ENTRY)&_ZN7S4792C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4792C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4792C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4792C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4792C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4792C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4792C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4792C1[];
extern  VTBL_ENTRY _ZTV7S4792C1[];
Class_Descriptor cd_S4792C1 = {  "S4792C1", // class name
  bases_S4792C1, 2,
  &(vtc_S4792C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S4792C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4792C1),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  S876C5  {
  char s876c5f0;
  int s876c5f1;
  virtual  ~S876C5(); // _ZN6S876C5D1Ev
  virtual void  v2(); // _ZN6S876C52v2Ev
  virtual void  v3(); // _ZN6S876C52v3Ev
  virtual void  v4(); // _ZN6S876C52v4Ev
  virtual void  v5(); // _ZN6S876C52v5Ev
  S876C5(); // tgen
};
//SIG(-1 S876C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S876C5 ::~S876C5(){ note_dtor("S876C5", this);}
void  S876C5 ::v2(){vfunc_called(this, "_ZN6S876C52v2Ev");}
void  S876C5 ::v3(){vfunc_called(this, "_ZN6S876C52v3Ev");}
void  S876C5 ::v4(){vfunc_called(this, "_ZN6S876C52v4Ev");}
void  S876C5 ::v5(){vfunc_called(this, "_ZN6S876C52v5Ev");}
S876C5 ::S876C5(){ note_ctor("S876C5", this);} // tgen

static void Test_S876C5()
{
  extern Class_Descriptor cd_S876C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S876C5, buf);
    S876C5 *dp, &lv = *(dp=new (buf) S876C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S876C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S876C5)");
    check_field_offset(lv, s876c5f0, ABISELECT(8,4), "S876C5.s876c5f0");
    check_field_offset(lv, s876c5f1, ABISELECT(12,8), "S876C5.s876c5f1");
    test_class_info(&lv, &cd_S876C5);
    dp->~S876C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS876C5(Test_S876C5, "S876C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S876C5C1Ev();
extern void _ZN6S876C5D1Ev();
Name_Map name_map_S876C5[] = {
  NSPAIR(_ZN6S876C5C1Ev),
  NSPAIR(_ZN6S876C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S876C5[];
extern void _ZN6S876C5D1Ev();
extern void _ZN6S876C5D0Ev();
extern void _ZN6S876C52v2Ev();
extern void _ZN6S876C52v3Ev();
extern void _ZN6S876C52v4Ev();
extern void _ZN6S876C52v5Ev();
static  VTBL_ENTRY vtc_S876C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S876C5[0]),
  (VTBL_ENTRY)&_ZN6S876C5D1Ev,
  (VTBL_ENTRY)&_ZN6S876C5D0Ev,
  (VTBL_ENTRY)&_ZN6S876C52v2Ev,
  (VTBL_ENTRY)&_ZN6S876C52v3Ev,
  (VTBL_ENTRY)&_ZN6S876C52v4Ev,
  (VTBL_ENTRY)&_ZN6S876C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S876C5[];
extern  VTBL_ENTRY _ZTV6S876C5[];
Class_Descriptor cd_S876C5 = {  "S876C5", // class name
  0,0,//no base classes
  &(vtc_S876C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S876C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S876C5),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  S876C4  : S876C5 {
  ::S4224C24 s876c4f0[8];
  ::S5309C14_nt s876c4f1[8];
  int s876c4f2;
  virtual  ~S876C4(); // _ZN6S876C4D1Ev
  virtual void  v6(); // _ZN6S876C42v6Ev
  virtual void  v7(); // _ZN6S876C42v7Ev
  virtual void  v8(); // _ZN6S876C42v8Ev
  S876C4(); // tgen
};
//SIG(-1 S876C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S876C4 ::~S876C4(){ note_dtor("S876C4", this);}
void  S876C4 ::v6(){vfunc_called(this, "_ZN6S876C42v6Ev");}
void  S876C4 ::v7(){vfunc_called(this, "_ZN6S876C42v7Ev");}
void  S876C4 ::v8(){vfunc_called(this, "_ZN6S876C42v8Ev");}
S876C4 ::S876C4(){ note_ctor("S876C4", this);} // tgen

static void Test_S876C4()
{
  extern Class_Descriptor cd_S876C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S876C4, buf);
    S876C4 *dp, &lv = *(dp=new (buf) S876C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S876C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S876C4)");
    check_base_class_offset(lv, (S876C5*), 0, "S876C4");
    check_field_offset(lv, s876c4f0, ABISELECT(16,12), "S876C4.s876c4f0");
    check_field_offset(lv, s876c4f1, ABISELECT(144,108), "S876C4.s876c4f1");
    check_field_offset(lv, s876c4f2, ABISELECT(272,172), "S876C4.s876c4f2");
    test_class_info(&lv, &cd_S876C4);
    dp->~S876C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS876C4(Test_S876C4, "S876C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S876C4C1Ev();
extern void _ZN6S876C4D1Ev();
Name_Map name_map_S876C4[] = {
  NSPAIR(_ZN6S876C4C1Ev),
  NSPAIR(_ZN6S876C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S876C5;
extern VTBL_ENTRY _ZTI6S876C5[];
extern  VTBL_ENTRY _ZTV6S876C5[];
static Base_Class bases_S876C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S876C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S876C4[];
extern void _ZN6S876C4D1Ev();
extern void _ZN6S876C4D0Ev();
extern void _ZN6S876C52v2Ev();
extern void _ZN6S876C52v3Ev();
extern void _ZN6S876C52v4Ev();
extern void _ZN6S876C52v5Ev();
extern void _ZN6S876C42v6Ev();
extern void _ZN6S876C42v7Ev();
extern void _ZN6S876C42v8Ev();
static  VTBL_ENTRY vtc_S876C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S876C4[0]),
  (VTBL_ENTRY)&_ZN6S876C4D1Ev,
  (VTBL_ENTRY)&_ZN6S876C4D0Ev,
  (VTBL_ENTRY)&_ZN6S876C52v2Ev,
  (VTBL_ENTRY)&_ZN6S876C52v3Ev,
  (VTBL_ENTRY)&_ZN6S876C52v4Ev,
  (VTBL_ENTRY)&_ZN6S876C52v5Ev,
  (VTBL_ENTRY)&_ZN6S876C42v6Ev,
  (VTBL_ENTRY)&_ZN6S876C42v7Ev,
  (VTBL_ENTRY)&_ZN6S876C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S876C4[];
extern  VTBL_ENTRY _ZTV6S876C4[];
Class_Descriptor cd_S876C4 = {  "S876C4", // class name
  bases_S876C4, 1,
  &(vtc_S876C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S876C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S876C4),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  S876C3  : S876C4 {
  void *s876c3f0[9];
  virtual  ~S876C3(); // _ZN6S876C3D1Ev
  virtual void  v9(); // _ZN6S876C32v9Ev
  S876C3(); // tgen
};
//SIG(-1 S876C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S876C3()
{
  extern Class_Descriptor cd_S876C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S876C3, buf);
    S876C3 *dp, &lv = *(dp=new (buf) S876C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S876C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S876C3)");
    check_base_class_offset(lv, (S876C5*)(S876C4*), 0, "S876C3");
    check_base_class_offset(lv, (S876C4*), 0, "S876C3");
    check_field_offset(lv, s876c3f0, ABISELECT(280,176), "S876C3.s876c3f0");
    test_class_info(&lv, &cd_S876C3);
    dp->~S876C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS876C3(Test_S876C3, "S876C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S876C3C1Ev();
extern void _ZN6S876C3D1Ev();
Name_Map name_map_S876C3[] = {
  NSPAIR(_ZN6S876C3C1Ev),
  NSPAIR(_ZN6S876C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S876C5;
extern VTBL_ENTRY _ZTI6S876C5[];
extern  VTBL_ENTRY _ZTV6S876C5[];
extern Class_Descriptor cd_S876C4;
extern VTBL_ENTRY _ZTI6S876C4[];
extern  VTBL_ENTRY _ZTV6S876C4[];
static Base_Class bases_S876C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S876C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S876C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S876C3[];
extern void _ZN6S876C3D1Ev();
extern void _ZN6S876C3D0Ev();
extern void _ZN6S876C52v2Ev();
extern void _ZN6S876C52v3Ev();
extern void _ZN6S876C52v4Ev();
extern void _ZN6S876C52v5Ev();
extern void _ZN6S876C42v6Ev();
extern void _ZN6S876C42v7Ev();
extern void _ZN6S876C42v8Ev();
extern void _ZN6S876C32v9Ev();
static  VTBL_ENTRY vtc_S876C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S876C3[0]),
  (VTBL_ENTRY)&_ZN6S876C3D1Ev,
  (VTBL_ENTRY)&_ZN6S876C3D0Ev,
  (VTBL_ENTRY)&_ZN6S876C52v2Ev,
  (VTBL_ENTRY)&_ZN6S876C52v3Ev,
  (VTBL_ENTRY)&_ZN6S876C52v4Ev,
  (VTBL_ENTRY)&_ZN6S876C52v5Ev,
  (VTBL_ENTRY)&_ZN6S876C42v6Ev,
  (VTBL_ENTRY)&_ZN6S876C42v7Ev,
  (VTBL_ENTRY)&_ZN6S876C42v8Ev,
  (VTBL_ENTRY)&_ZN6S876C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S876C3[];
extern  VTBL_ENTRY _ZTV6S876C3[];
Class_Descriptor cd_S876C3 = {  "S876C3", // class name
  bases_S876C3, 2,
  &(vtc_S876C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S876C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S876C3),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  S876C2  : S876C3 {
  int s876c2f0[4];
  char s876c2f1;
  int s876c2f2;
  virtual  ~S876C2(); // _ZN6S876C2D1Ev
  virtual void  v10(); // _ZN6S876C23v10Ev
  virtual void  v11(); // _ZN6S876C23v11Ev
  virtual void  v12(); // _ZN6S876C23v12Ev
  virtual void  v13(); // _ZN6S876C23v13Ev
  S876C2(); // tgen
};
//SIG(-1 S876C2) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 Fc Fi} vd v9 v10 v11 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v12 Fp[9]} vd v1 v2 v3 v4 Fi[4] Fc Fi}


 S876C2 ::~S876C2(){ note_dtor("S876C2", this);}
void  S876C2 ::v10(){vfunc_called(this, "_ZN6S876C23v10Ev");}
void  S876C2 ::v11(){vfunc_called(this, "_ZN6S876C23v11Ev");}
void  S876C2 ::v12(){vfunc_called(this, "_ZN6S876C23v12Ev");}
void  S876C2 ::v13(){vfunc_called(this, "_ZN6S876C23v13Ev");}
S876C2 ::S876C2(){ note_ctor("S876C2", this);} // tgen

static void Test_S876C2()
{
  extern Class_Descriptor cd_S876C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,60)];
    init_test(&cd_S876C2, buf);
    S876C2 *dp, &lv = *(dp=new (buf) S876C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,236), "sizeof(S876C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S876C2)");
    check_base_class_offset(lv, (S876C5*)(S876C4*)(S876C3*), 0, "S876C2");
    check_base_class_offset(lv, (S876C4*)(S876C3*), 0, "S876C2");
    check_base_class_offset(lv, (S876C3*), 0, "S876C2");
    check_field_offset(lv, s876c2f0, ABISELECT(352,212), "S876C2.s876c2f0");
    check_field_offset(lv, s876c2f1, ABISELECT(368,228), "S876C2.s876c2f1");
    check_field_offset(lv, s876c2f2, ABISELECT(372,232), "S876C2.s876c2f2");
    test_class_info(&lv, &cd_S876C2);
    dp->~S876C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS876C2(Test_S876C2, "S876C2", ABISELECT(376,236));

#else // __cplusplus

extern void _ZN6S876C2C1Ev();
extern void _ZN6S876C2D1Ev();
Name_Map name_map_S876C2[] = {
  NSPAIR(_ZN6S876C2C1Ev),
  NSPAIR(_ZN6S876C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S876C5;
extern VTBL_ENTRY _ZTI6S876C5[];
extern  VTBL_ENTRY _ZTV6S876C5[];
extern Class_Descriptor cd_S876C4;
extern VTBL_ENTRY _ZTI6S876C4[];
extern  VTBL_ENTRY _ZTV6S876C4[];
extern Class_Descriptor cd_S876C3;
extern VTBL_ENTRY _ZTI6S876C3[];
extern  VTBL_ENTRY _ZTV6S876C3[];
static Base_Class bases_S876C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S876C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S876C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S876C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S876C2[];
extern void _ZN6S876C2D1Ev();
extern void _ZN6S876C2D0Ev();
extern void _ZN6S876C52v2Ev();
extern void _ZN6S876C52v3Ev();
extern void _ZN6S876C52v4Ev();
extern void _ZN6S876C52v5Ev();
extern void _ZN6S876C42v6Ev();
extern void _ZN6S876C42v7Ev();
extern void _ZN6S876C42v8Ev();
extern void _ZN6S876C32v9Ev();
extern void _ZN6S876C23v10Ev();
extern void _ZN6S876C23v11Ev();
extern void _ZN6S876C23v12Ev();
extern void _ZN6S876C23v13Ev();
static  VTBL_ENTRY vtc_S876C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S876C2[0]),
  (VTBL_ENTRY)&_ZN6S876C2D1Ev,
  (VTBL_ENTRY)&_ZN6S876C2D0Ev,
  (VTBL_ENTRY)&_ZN6S876C52v2Ev,
  (VTBL_ENTRY)&_ZN6S876C52v3Ev,
  (VTBL_ENTRY)&_ZN6S876C52v4Ev,
  (VTBL_ENTRY)&_ZN6S876C52v5Ev,
  (VTBL_ENTRY)&_ZN6S876C42v6Ev,
  (VTBL_ENTRY)&_ZN6S876C42v7Ev,
  (VTBL_ENTRY)&_ZN6S876C42v8Ev,
  (VTBL_ENTRY)&_ZN6S876C32v9Ev,
  (VTBL_ENTRY)&_ZN6S876C23v10Ev,
  (VTBL_ENTRY)&_ZN6S876C23v11Ev,
  (VTBL_ENTRY)&_ZN6S876C23v12Ev,
  (VTBL_ENTRY)&_ZN6S876C23v13Ev,
};
extern VTBL_ENTRY _ZTI6S876C2[];
extern  VTBL_ENTRY _ZTV6S876C2[];
Class_Descriptor cd_S876C2 = {  "S876C2", // class name
  bases_S876C2, 3,
  &(vtc_S876C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,236), // object size
  NSPAIRA(_ZTI6S876C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S876C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S876C1  : S876C2 {
  void *s876c1f0;
  char s876c1f1;
  virtual  ~S876C1(); // _ZN6S876C1D1Ev
  virtual void  v1(); // _ZN6S876C12v1Ev
  S876C1(); // tgen
};
//SIG(1 S876C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10 v11 v12 v13 Fi[4] Fc Fi} vd v1 Fp Fc}


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

static void Test_S876C1()
{
  extern Class_Descriptor cd_S876C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,62)];
    init_test(&cd_S876C1, buf);
    S876C1 *dp, &lv = *(dp=new (buf) S876C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,244), "sizeof(S876C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S876C1)");
    check_base_class_offset(lv, (S876C5*)(S876C4*)(S876C3*)(S876C2*), 0, "S876C1");
    check_base_class_offset(lv, (S876C4*)(S876C3*)(S876C2*), 0, "S876C1");
    check_base_class_offset(lv, (S876C3*)(S876C2*), 0, "S876C1");
    check_base_class_offset(lv, (S876C2*), 0, "S876C1");
    check_field_offset(lv, s876c1f0, ABISELECT(376,236), "S876C1.s876c1f0");
    check_field_offset(lv, s876c1f1, ABISELECT(384,240), "S876C1.s876c1f1");
    test_class_info(&lv, &cd_S876C1);
    dp->~S876C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS876C1(Test_S876C1, "S876C1", ABISELECT(392,244));

#else // __cplusplus

extern void _ZN6S876C1C1Ev();
extern void _ZN6S876C1D1Ev();
Name_Map name_map_S876C1[] = {
  NSPAIR(_ZN6S876C1C1Ev),
  NSPAIR(_ZN6S876C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S876C5;
extern VTBL_ENTRY _ZTI6S876C5[];
extern  VTBL_ENTRY _ZTV6S876C5[];
extern Class_Descriptor cd_S876C4;
extern VTBL_ENTRY _ZTI6S876C4[];
extern  VTBL_ENTRY _ZTV6S876C4[];
extern Class_Descriptor cd_S876C3;
extern VTBL_ENTRY _ZTI6S876C3[];
extern  VTBL_ENTRY _ZTV6S876C3[];
extern Class_Descriptor cd_S876C2;
extern VTBL_ENTRY _ZTI6S876C2[];
extern  VTBL_ENTRY _ZTV6S876C2[];
static Base_Class bases_S876C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S876C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S876C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S876C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S876C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S876C1[];
extern void _ZN6S876C1D1Ev();
extern void _ZN6S876C1D0Ev();
extern void _ZN6S876C52v2Ev();
extern void _ZN6S876C52v3Ev();
extern void _ZN6S876C52v4Ev();
extern void _ZN6S876C52v5Ev();
extern void _ZN6S876C42v6Ev();
extern void _ZN6S876C42v7Ev();
extern void _ZN6S876C42v8Ev();
extern void _ZN6S876C32v9Ev();
extern void _ZN6S876C23v10Ev();
extern void _ZN6S876C23v11Ev();
extern void _ZN6S876C23v12Ev();
extern void _ZN6S876C23v13Ev();
extern void _ZN6S876C12v1Ev();
static  VTBL_ENTRY vtc_S876C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S876C1[0]),
  (VTBL_ENTRY)&_ZN6S876C1D1Ev,
  (VTBL_ENTRY)&_ZN6S876C1D0Ev,
  (VTBL_ENTRY)&_ZN6S876C52v2Ev,
  (VTBL_ENTRY)&_ZN6S876C52v3Ev,
  (VTBL_ENTRY)&_ZN6S876C52v4Ev,
  (VTBL_ENTRY)&_ZN6S876C52v5Ev,
  (VTBL_ENTRY)&_ZN6S876C42v6Ev,
  (VTBL_ENTRY)&_ZN6S876C42v7Ev,
  (VTBL_ENTRY)&_ZN6S876C42v8Ev,
  (VTBL_ENTRY)&_ZN6S876C32v9Ev,
  (VTBL_ENTRY)&_ZN6S876C23v10Ev,
  (VTBL_ENTRY)&_ZN6S876C23v11Ev,
  (VTBL_ENTRY)&_ZN6S876C23v12Ev,
  (VTBL_ENTRY)&_ZN6S876C23v13Ev,
  (VTBL_ENTRY)&_ZN6S876C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S876C1[];
extern  VTBL_ENTRY _ZTV6S876C1[];
Class_Descriptor cd_S876C1 = {  "S876C1", // class name
  bases_S876C1, 4,
  &(vtc_S876C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,244), // object size
  NSPAIRA(_ZTI6S876C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S876C1),17, //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  S4794C3  {
  ::S4224C19_nt s4794c3f0;
  int s4794c3f1[2];
  char s4794c3f2;
  virtual  ~S4794C3(); // _ZN7S4794C3D1Ev
  virtual void  v3(); // _ZN7S4794C32v3Ev
  virtual void  v4(); // _ZN7S4794C32v4Ev
  virtual void  v5(); // _ZN7S4794C32v5Ev
  S4794C3(); // tgen
};
//SIG(-1 S4794C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4794C3 ::~S4794C3(){ note_dtor("S4794C3", this);}
void  S4794C3 ::v3(){vfunc_called(this, "_ZN7S4794C32v3Ev");}
void  S4794C3 ::v4(){vfunc_called(this, "_ZN7S4794C32v4Ev");}
void  S4794C3 ::v5(){vfunc_called(this, "_ZN7S4794C32v5Ev");}
S4794C3 ::S4794C3(){ note_ctor("S4794C3", this);} // tgen

static void Test_S4794C3()
{
  extern Class_Descriptor cd_S4794C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4794C3, buf);
    S4794C3 *dp, &lv = *(dp=new (buf) S4794C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4794C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4794C3)");
    check_field_offset(lv, s4794c3f0, ABISELECT(8,4), "S4794C3.s4794c3f0");
    check_field_offset(lv, s4794c3f1, ABISELECT(24,16), "S4794C3.s4794c3f1");
    check_field_offset(lv, s4794c3f2, ABISELECT(32,24), "S4794C3.s4794c3f2");
    test_class_info(&lv, &cd_S4794C3);
    dp->~S4794C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4794C3(Test_S4794C3, "S4794C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4794C3C1Ev();
extern void _ZN7S4794C3D1Ev();
Name_Map name_map_S4794C3[] = {
  NSPAIR(_ZN7S4794C3C1Ev),
  NSPAIR(_ZN7S4794C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4794C3[];
extern void _ZN7S4794C3D1Ev();
extern void _ZN7S4794C3D0Ev();
extern void _ZN7S4794C32v3Ev();
extern void _ZN7S4794C32v4Ev();
extern void _ZN7S4794C32v5Ev();
static  VTBL_ENTRY vtc_S4794C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4794C3[0]),
  (VTBL_ENTRY)&_ZN7S4794C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4794C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4794C3[];
extern  VTBL_ENTRY _ZTV7S4794C3[];
Class_Descriptor cd_S4794C3 = {  "S4794C3", // class name
  0,0,//no base classes
  &(vtc_S4794C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4794C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4794C3),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  S4794C2  : S4794C3 {
  void *s4794c2f0;
  virtual void  v6(); // _ZN7S4794C22v6Ev
  virtual void  v7(); // _ZN7S4794C22v7Ev
  ~S4794C2(); // tgen
  S4794C2(); // tgen
};
//SIG(-1 S4794C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4794C2 ::v6(){vfunc_called(this, "_ZN7S4794C22v6Ev");}
void  S4794C2 ::v7(){vfunc_called(this, "_ZN7S4794C22v7Ev");}
S4794C2 ::~S4794C2(){ note_dtor("S4794C2", this);} // tgen
S4794C2 ::S4794C2(){ note_ctor("S4794C2", this);} // tgen

static void Test_S4794C2()
{
  extern Class_Descriptor cd_S4794C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4794C2, buf);
    S4794C2 *dp, &lv = *(dp=new (buf) S4794C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4794C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4794C2)");
    check_base_class_offset(lv, (S4794C3*), 0, "S4794C2");
    check_field_offset(lv, s4794c2f0, ABISELECT(40,28), "S4794C2.s4794c2f0");
    test_class_info(&lv, &cd_S4794C2);
    dp->~S4794C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4794C2(Test_S4794C2, "S4794C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4794C2C1Ev();
extern void _ZN7S4794C2D1Ev();
Name_Map name_map_S4794C2[] = {
  NSPAIR(_ZN7S4794C2C1Ev),
  NSPAIR(_ZN7S4794C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4794C3;
extern VTBL_ENTRY _ZTI7S4794C3[];
extern  VTBL_ENTRY _ZTV7S4794C3[];
static Base_Class bases_S4794C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4794C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4794C2[];
extern void _ZN7S4794C2D1Ev();
extern void _ZN7S4794C2D0Ev();
extern void _ZN7S4794C32v3Ev();
extern void _ZN7S4794C32v4Ev();
extern void _ZN7S4794C32v5Ev();
extern void _ZN7S4794C22v6Ev();
extern void _ZN7S4794C22v7Ev();
static  VTBL_ENTRY vtc_S4794C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4794C2[0]),
  (VTBL_ENTRY)&_ZN7S4794C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4794C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4794C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4794C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4794C2[];
extern  VTBL_ENTRY _ZTV7S4794C2[];
Class_Descriptor cd_S4794C2 = {  "S4794C2", // class name
  bases_S4794C2, 1,
  &(vtc_S4794C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4794C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4794C2),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  S4794C8_nt  {
  __tsi64 s4794c8f0[4];
  void  mf4794c8(); // _ZN10S4794C8_nt8mf4794c8Ev
};
//SIG(-1 S4794C8_nt) C1{ m FL[4]}


void  S4794C8_nt ::mf4794c8(){}

//skip512 S4794C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4794C1  : S4794C2 {
  void *s4794c1f0;
  ::S4792C6_nt s4794c1f1;
  void *s4794c1f2[2];
  int s4794c1f3;
  void *s4794c1f4;
  char s4794c1f5;
  int s4794c1f6;
  ::S4794C8_nt s4794c1f7;
  char s4794c1f8;
  ::S4224C43_nt s4794c1f9;
  virtual  ~S4794C1(); // _ZN7S4794C1D1Ev
  virtual void  v1(); // _ZN7S4794C12v1Ev
  virtual void  v2(); // _ZN7S4794C12v2Ev
  S4794C1(); // tgen
};
//SIG(1 S4794C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 Fp FC6{ m FL FC7{ m FL[3] Fp[2] FL[2]} Fp Fi FL Fi} Fp[2] Fi Fp Fc Fi FC8{ m FL[4]} Fc FC9{ m Fp}}


 S4794C1 ::~S4794C1(){ note_dtor("S4794C1", this);}
void  S4794C1 ::v1(){vfunc_called(this, "_ZN7S4794C12v1Ev");}
void  S4794C1 ::v2(){vfunc_called(this, "_ZN7S4794C12v2Ev");}
S4794C1 ::S4794C1(){ note_ctor("S4794C1", this);} // tgen

static void Test_S4794C1()
{
  extern Class_Descriptor cd_S4794C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,45)];
    init_test(&cd_S4794C1, buf);
    S4794C1 *dp, &lv = *(dp=new (buf) S4794C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,176), "sizeof(S4794C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4794C1)");
    check_base_class_offset(lv, (S4794C3*)(S4794C2*), 0, "S4794C1");
    check_base_class_offset(lv, (S4794C2*), 0, "S4794C1");
    check_field_offset(lv, s4794c1f0, ABISELECT(48,32), "S4794C1.s4794c1f0");
    check_field_offset(lv, s4794c1f1, ABISELECT(56,36), "S4794C1.s4794c1f1");
    check_field_offset(lv, s4794c1f2, ABISELECT(152,112), "S4794C1.s4794c1f2");
    check_field_offset(lv, s4794c1f3, ABISELECT(168,120), "S4794C1.s4794c1f3");
    check_field_offset(lv, s4794c1f4, ABISELECT(176,124), "S4794C1.s4794c1f4");
    check_field_offset(lv, s4794c1f5, ABISELECT(184,128), "S4794C1.s4794c1f5");
    check_field_offset(lv, s4794c1f6, ABISELECT(188,132), "S4794C1.s4794c1f6");
    check_field_offset(lv, s4794c1f7, ABISELECT(192,136), "S4794C1.s4794c1f7");
    check_field_offset(lv, s4794c1f8, ABISELECT(224,168), "S4794C1.s4794c1f8");
    check_field_offset(lv, s4794c1f9, ABISELECT(232,172), "S4794C1.s4794c1f9");
    test_class_info(&lv, &cd_S4794C1);
    dp->~S4794C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4794C1(Test_S4794C1, "S4794C1", ABISELECT(240,176));

#else // __cplusplus

extern void _ZN7S4794C1C1Ev();
extern void _ZN7S4794C1D1Ev();
Name_Map name_map_S4794C1[] = {
  NSPAIR(_ZN7S4794C1C1Ev),
  NSPAIR(_ZN7S4794C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4794C3;
extern VTBL_ENTRY _ZTI7S4794C3[];
extern  VTBL_ENTRY _ZTV7S4794C3[];
extern Class_Descriptor cd_S4794C2;
extern VTBL_ENTRY _ZTI7S4794C2[];
extern  VTBL_ENTRY _ZTV7S4794C2[];
static Base_Class bases_S4794C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4794C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4794C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4794C1[];
extern void _ZN7S4794C1D1Ev();
extern void _ZN7S4794C1D0Ev();
extern void _ZN7S4794C32v3Ev();
extern void _ZN7S4794C32v4Ev();
extern void _ZN7S4794C32v5Ev();
extern void _ZN7S4794C22v6Ev();
extern void _ZN7S4794C22v7Ev();
extern void _ZN7S4794C12v1Ev();
extern void _ZN7S4794C12v2Ev();
static  VTBL_ENTRY vtc_S4794C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4794C1[0]),
  (VTBL_ENTRY)&_ZN7S4794C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4794C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4794C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4794C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4794C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4794C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4794C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4794C1[];
extern  VTBL_ENTRY _ZTV7S4794C1[];
Class_Descriptor cd_S4794C1 = {  "S4794C1", // class name
  bases_S4794C1, 2,
  &(vtc_S4794C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,176), // object size
  NSPAIRA(_ZTI7S4794C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4794C1),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  S894C5  {
  char s894c5f0;
  int s894c5f1;
  virtual  ~S894C5(); // _ZN6S894C5D1Ev
  virtual void  v3(); // _ZN6S894C52v3Ev
  virtual void  v4(); // _ZN6S894C52v4Ev
  virtual void  v5(); // _ZN6S894C52v5Ev
  virtual void  v6(); // _ZN6S894C52v6Ev
  S894C5(); // tgen
};
//SIG(-1 S894C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S894C5 ::~S894C5(){ note_dtor("S894C5", this);}
void  S894C5 ::v3(){vfunc_called(this, "_ZN6S894C52v3Ev");}
void  S894C5 ::v4(){vfunc_called(this, "_ZN6S894C52v4Ev");}
void  S894C5 ::v5(){vfunc_called(this, "_ZN6S894C52v5Ev");}
void  S894C5 ::v6(){vfunc_called(this, "_ZN6S894C52v6Ev");}
S894C5 ::S894C5(){ note_ctor("S894C5", this);} // tgen

static void Test_S894C5()
{
  extern Class_Descriptor cd_S894C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S894C5, buf);
    S894C5 *dp, &lv = *(dp=new (buf) S894C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S894C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S894C5)");
    check_field_offset(lv, s894c5f0, ABISELECT(8,4), "S894C5.s894c5f0");
    check_field_offset(lv, s894c5f1, ABISELECT(12,8), "S894C5.s894c5f1");
    test_class_info(&lv, &cd_S894C5);
    dp->~S894C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS894C5(Test_S894C5, "S894C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S894C5C1Ev();
extern void _ZN6S894C5D1Ev();
Name_Map name_map_S894C5[] = {
  NSPAIR(_ZN6S894C5C1Ev),
  NSPAIR(_ZN6S894C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S894C5[];
extern void _ZN6S894C5D1Ev();
extern void _ZN6S894C5D0Ev();
extern void _ZN6S894C52v3Ev();
extern void _ZN6S894C52v4Ev();
extern void _ZN6S894C52v5Ev();
extern void _ZN6S894C52v6Ev();
static  VTBL_ENTRY vtc_S894C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S894C5[0]),
  (VTBL_ENTRY)&_ZN6S894C5D1Ev,
  (VTBL_ENTRY)&_ZN6S894C5D0Ev,
  (VTBL_ENTRY)&_ZN6S894C52v3Ev,
  (VTBL_ENTRY)&_ZN6S894C52v4Ev,
  (VTBL_ENTRY)&_ZN6S894C52v5Ev,
  (VTBL_ENTRY)&_ZN6S894C52v6Ev,
};
extern VTBL_ENTRY _ZTI6S894C5[];
extern  VTBL_ENTRY _ZTV6S894C5[];
Class_Descriptor cd_S894C5 = {  "S894C5", // class name
  0,0,//no base classes
  &(vtc_S894C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S894C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S894C5),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  S894C4  : S894C5 {
  ::S4224C24 s894c4f0[8];
  ::S5309C14_nt s894c4f1[8];
  int s894c4f2;
  virtual  ~S894C4(); // _ZN6S894C4D1Ev
  virtual void  v7(); // _ZN6S894C42v7Ev
  virtual void  v8(); // _ZN6S894C42v8Ev
  virtual void  v9(); // _ZN6S894C42v9Ev
  S894C4(); // tgen
};
//SIG(-1 S894C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S894C4 ::~S894C4(){ note_dtor("S894C4", this);}
void  S894C4 ::v7(){vfunc_called(this, "_ZN6S894C42v7Ev");}
void  S894C4 ::v8(){vfunc_called(this, "_ZN6S894C42v8Ev");}
void  S894C4 ::v9(){vfunc_called(this, "_ZN6S894C42v9Ev");}
S894C4 ::S894C4(){ note_ctor("S894C4", this);} // tgen

static void Test_S894C4()
{
  extern Class_Descriptor cd_S894C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S894C4, buf);
    S894C4 *dp, &lv = *(dp=new (buf) S894C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S894C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S894C4)");
    check_base_class_offset(lv, (S894C5*), 0, "S894C4");
    check_field_offset(lv, s894c4f0, ABISELECT(16,12), "S894C4.s894c4f0");
    check_field_offset(lv, s894c4f1, ABISELECT(144,108), "S894C4.s894c4f1");
    check_field_offset(lv, s894c4f2, ABISELECT(272,172), "S894C4.s894c4f2");
    test_class_info(&lv, &cd_S894C4);
    dp->~S894C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS894C4(Test_S894C4, "S894C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S894C4C1Ev();
extern void _ZN6S894C4D1Ev();
Name_Map name_map_S894C4[] = {
  NSPAIR(_ZN6S894C4C1Ev),
  NSPAIR(_ZN6S894C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S894C5;
extern VTBL_ENTRY _ZTI6S894C5[];
extern  VTBL_ENTRY _ZTV6S894C5[];
static Base_Class bases_S894C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S894C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S894C4[];
extern void _ZN6S894C4D1Ev();
extern void _ZN6S894C4D0Ev();
extern void _ZN6S894C52v3Ev();
extern void _ZN6S894C52v4Ev();
extern void _ZN6S894C52v5Ev();
extern void _ZN6S894C52v6Ev();
extern void _ZN6S894C42v7Ev();
extern void _ZN6S894C42v8Ev();
extern void _ZN6S894C42v9Ev();
static  VTBL_ENTRY vtc_S894C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S894C4[0]),
  (VTBL_ENTRY)&_ZN6S894C4D1Ev,
  (VTBL_ENTRY)&_ZN6S894C4D0Ev,
  (VTBL_ENTRY)&_ZN6S894C52v3Ev,
  (VTBL_ENTRY)&_ZN6S894C52v4Ev,
  (VTBL_ENTRY)&_ZN6S894C52v5Ev,
  (VTBL_ENTRY)&_ZN6S894C52v6Ev,
  (VTBL_ENTRY)&_ZN6S894C42v7Ev,
  (VTBL_ENTRY)&_ZN6S894C42v8Ev,
  (VTBL_ENTRY)&_ZN6S894C42v9Ev,
};
extern VTBL_ENTRY _ZTI6S894C4[];
extern  VTBL_ENTRY _ZTV6S894C4[];
Class_Descriptor cd_S894C4 = {  "S894C4", // class name
  bases_S894C4, 1,
  &(vtc_S894C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S894C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S894C4),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  S894C3  : S894C4 {
  void *s894c3f0[9];
  virtual  ~S894C3(); // _ZN6S894C3D1Ev
  virtual void  v10(); // _ZN6S894C33v10Ev
  S894C3(); // tgen
};
//SIG(-1 S894C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S894C3()
{
  extern Class_Descriptor cd_S894C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S894C3, buf);
    S894C3 *dp, &lv = *(dp=new (buf) S894C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S894C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S894C3)");
    check_base_class_offset(lv, (S894C5*)(S894C4*), 0, "S894C3");
    check_base_class_offset(lv, (S894C4*), 0, "S894C3");
    check_field_offset(lv, s894c3f0, ABISELECT(280,176), "S894C3.s894c3f0");
    test_class_info(&lv, &cd_S894C3);
    dp->~S894C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS894C3(Test_S894C3, "S894C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S894C3C1Ev();
extern void _ZN6S894C3D1Ev();
Name_Map name_map_S894C3[] = {
  NSPAIR(_ZN6S894C3C1Ev),
  NSPAIR(_ZN6S894C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S894C5;
extern VTBL_ENTRY _ZTI6S894C5[];
extern  VTBL_ENTRY _ZTV6S894C5[];
extern Class_Descriptor cd_S894C4;
extern VTBL_ENTRY _ZTI6S894C4[];
extern  VTBL_ENTRY _ZTV6S894C4[];
static Base_Class bases_S894C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S894C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S894C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S894C3[];
extern void _ZN6S894C3D1Ev();
extern void _ZN6S894C3D0Ev();
extern void _ZN6S894C52v3Ev();
extern void _ZN6S894C52v4Ev();
extern void _ZN6S894C52v5Ev();
extern void _ZN6S894C52v6Ev();
extern void _ZN6S894C42v7Ev();
extern void _ZN6S894C42v8Ev();
extern void _ZN6S894C42v9Ev();
extern void _ZN6S894C33v10Ev();
static  VTBL_ENTRY vtc_S894C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S894C3[0]),
  (VTBL_ENTRY)&_ZN6S894C3D1Ev,
  (VTBL_ENTRY)&_ZN6S894C3D0Ev,
  (VTBL_ENTRY)&_ZN6S894C52v3Ev,
  (VTBL_ENTRY)&_ZN6S894C52v4Ev,
  (VTBL_ENTRY)&_ZN6S894C52v5Ev,
  (VTBL_ENTRY)&_ZN6S894C52v6Ev,
  (VTBL_ENTRY)&_ZN6S894C42v7Ev,
  (VTBL_ENTRY)&_ZN6S894C42v8Ev,
  (VTBL_ENTRY)&_ZN6S894C42v9Ev,
  (VTBL_ENTRY)&_ZN6S894C33v10Ev,
};
extern VTBL_ENTRY _ZTI6S894C3[];
extern  VTBL_ENTRY _ZTV6S894C3[];
Class_Descriptor cd_S894C3 = {  "S894C3", // class name
  bases_S894C3, 2,
  &(vtc_S894C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S894C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S894C3),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  S894C2  : S894C3 {
  int s894c2f0[4];
  char s894c2f1;
  int s894c2f2;
  virtual  ~S894C2(); // _ZN6S894C2D1Ev
  virtual void  v11(); // _ZN6S894C23v11Ev
  virtual void  v12(); // _ZN6S894C23v12Ev
  virtual void  v13(); // _ZN6S894C23v13Ev
  virtual void  v14(); // _ZN6S894C23v14Ev
  S894C2(); // tgen
};
//SIG(-1 S894C2) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 Fc Fi} vd v9 v10 v11 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v12 Fp[9]} vd v1 v2 v3 v4 Fi[4] Fc Fi}


 S894C2 ::~S894C2(){ note_dtor("S894C2", this);}
void  S894C2 ::v11(){vfunc_called(this, "_ZN6S894C23v11Ev");}
void  S894C2 ::v12(){vfunc_called(this, "_ZN6S894C23v12Ev");}
void  S894C2 ::v13(){vfunc_called(this, "_ZN6S894C23v13Ev");}
void  S894C2 ::v14(){vfunc_called(this, "_ZN6S894C23v14Ev");}
S894C2 ::S894C2(){ note_ctor("S894C2", this);} // tgen

static void Test_S894C2()
{
  extern Class_Descriptor cd_S894C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,60)];
    init_test(&cd_S894C2, buf);
    S894C2 *dp, &lv = *(dp=new (buf) S894C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,236), "sizeof(S894C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S894C2)");
    check_base_class_offset(lv, (S894C5*)(S894C4*)(S894C3*), 0, "S894C2");
    check_base_class_offset(lv, (S894C4*)(S894C3*), 0, "S894C2");
    check_base_class_offset(lv, (S894C3*), 0, "S894C2");
    check_field_offset(lv, s894c2f0, ABISELECT(352,212), "S894C2.s894c2f0");
    check_field_offset(lv, s894c2f1, ABISELECT(368,228), "S894C2.s894c2f1");
    check_field_offset(lv, s894c2f2, ABISELECT(372,232), "S894C2.s894c2f2");
    test_class_info(&lv, &cd_S894C2);
    dp->~S894C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS894C2(Test_S894C2, "S894C2", ABISELECT(376,236));

#else // __cplusplus

extern void _ZN6S894C2C1Ev();
extern void _ZN6S894C2D1Ev();
Name_Map name_map_S894C2[] = {
  NSPAIR(_ZN6S894C2C1Ev),
  NSPAIR(_ZN6S894C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S894C5;
extern VTBL_ENTRY _ZTI6S894C5[];
extern  VTBL_ENTRY _ZTV6S894C5[];
extern Class_Descriptor cd_S894C4;
extern VTBL_ENTRY _ZTI6S894C4[];
extern  VTBL_ENTRY _ZTV6S894C4[];
extern Class_Descriptor cd_S894C3;
extern VTBL_ENTRY _ZTI6S894C3[];
extern  VTBL_ENTRY _ZTV6S894C3[];
static Base_Class bases_S894C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S894C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S894C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S894C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S894C2[];
extern void _ZN6S894C2D1Ev();
extern void _ZN6S894C2D0Ev();
extern void _ZN6S894C52v3Ev();
extern void _ZN6S894C52v4Ev();
extern void _ZN6S894C52v5Ev();
extern void _ZN6S894C52v6Ev();
extern void _ZN6S894C42v7Ev();
extern void _ZN6S894C42v8Ev();
extern void _ZN6S894C42v9Ev();
extern void _ZN6S894C33v10Ev();
extern void _ZN6S894C23v11Ev();
extern void _ZN6S894C23v12Ev();
extern void _ZN6S894C23v13Ev();
extern void _ZN6S894C23v14Ev();
static  VTBL_ENTRY vtc_S894C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S894C2[0]),
  (VTBL_ENTRY)&_ZN6S894C2D1Ev,
  (VTBL_ENTRY)&_ZN6S894C2D0Ev,
  (VTBL_ENTRY)&_ZN6S894C52v3Ev,
  (VTBL_ENTRY)&_ZN6S894C52v4Ev,
  (VTBL_ENTRY)&_ZN6S894C52v5Ev,
  (VTBL_ENTRY)&_ZN6S894C52v6Ev,
  (VTBL_ENTRY)&_ZN6S894C42v7Ev,
  (VTBL_ENTRY)&_ZN6S894C42v8Ev,
  (VTBL_ENTRY)&_ZN6S894C42v9Ev,
  (VTBL_ENTRY)&_ZN6S894C33v10Ev,
  (VTBL_ENTRY)&_ZN6S894C23v11Ev,
  (VTBL_ENTRY)&_ZN6S894C23v12Ev,
  (VTBL_ENTRY)&_ZN6S894C23v13Ev,
  (VTBL_ENTRY)&_ZN6S894C23v14Ev,
};
extern VTBL_ENTRY _ZTI6S894C2[];
extern  VTBL_ENTRY _ZTV6S894C2[];
Class_Descriptor cd_S894C2 = {  "S894C2", // class name
  bases_S894C2, 3,
  &(vtc_S894C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,236), // object size
  NSPAIRA(_ZTI6S894C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S894C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S894C1  : S894C2 {
  virtual  ~S894C1(); // _ZN6S894C1D1Ev
  virtual void  v1(); // _ZN6S894C12v1Ev
  virtual void  v2(); // _ZN6S894C12v2Ev
  S894C1(); // tgen
};
//SIG(1 S894C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v3 v4 v5 v6 Fc Fi} vd v7 v8 v9 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v10 Fp[9]} vd v11 v12 v13 v14 Fi[4] Fc Fi} vd v1 v2}


 S894C1 ::~S894C1(){ note_dtor("S894C1", this);}
void  S894C1 ::v1(){vfunc_called(this, "_ZN6S894C12v1Ev");}
void  S894C1 ::v2(){vfunc_called(this, "_ZN6S894C12v2Ev");}
S894C1 ::S894C1(){ note_ctor("S894C1", this);} // tgen

static void Test_S894C1()
{
  extern Class_Descriptor cd_S894C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,60)];
    init_test(&cd_S894C1, buf);
    S894C1 *dp, &lv = *(dp=new (buf) S894C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,236), "sizeof(S894C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S894C1)");
    check_base_class_offset(lv, (S894C5*)(S894C4*)(S894C3*)(S894C2*), 0, "S894C1");
    check_base_class_offset(lv, (S894C4*)(S894C3*)(S894C2*), 0, "S894C1");
    check_base_class_offset(lv, (S894C3*)(S894C2*), 0, "S894C1");
    check_base_class_offset(lv, (S894C2*), 0, "S894C1");
    test_class_info(&lv, &cd_S894C1);
    dp->~S894C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS894C1(Test_S894C1, "S894C1", ABISELECT(376,236));

#else // __cplusplus

extern void _ZN6S894C1C1Ev();
extern void _ZN6S894C1D1Ev();
Name_Map name_map_S894C1[] = {
  NSPAIR(_ZN6S894C1C1Ev),
  NSPAIR(_ZN6S894C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S894C5;
extern VTBL_ENTRY _ZTI6S894C5[];
extern  VTBL_ENTRY _ZTV6S894C5[];
extern Class_Descriptor cd_S894C4;
extern VTBL_ENTRY _ZTI6S894C4[];
extern  VTBL_ENTRY _ZTV6S894C4[];
extern Class_Descriptor cd_S894C3;
extern VTBL_ENTRY _ZTI6S894C3[];
extern  VTBL_ENTRY _ZTV6S894C3[];
extern Class_Descriptor cd_S894C2;
extern VTBL_ENTRY _ZTI6S894C2[];
extern  VTBL_ENTRY _ZTV6S894C2[];
static Base_Class bases_S894C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S894C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S894C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S894C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S894C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S894C1[];
extern void _ZN6S894C1D1Ev();
extern void _ZN6S894C1D0Ev();
extern void _ZN6S894C52v3Ev();
extern void _ZN6S894C52v4Ev();
extern void _ZN6S894C52v5Ev();
extern void _ZN6S894C52v6Ev();
extern void _ZN6S894C42v7Ev();
extern void _ZN6S894C42v8Ev();
extern void _ZN6S894C42v9Ev();
extern void _ZN6S894C33v10Ev();
extern void _ZN6S894C23v11Ev();
extern void _ZN6S894C23v12Ev();
extern void _ZN6S894C23v13Ev();
extern void _ZN6S894C23v14Ev();
extern void _ZN6S894C12v1Ev();
extern void _ZN6S894C12v2Ev();
static  VTBL_ENTRY vtc_S894C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S894C1[0]),
  (VTBL_ENTRY)&_ZN6S894C1D1Ev,
  (VTBL_ENTRY)&_ZN6S894C1D0Ev,
  (VTBL_ENTRY)&_ZN6S894C52v3Ev,
  (VTBL_ENTRY)&_ZN6S894C52v4Ev,
  (VTBL_ENTRY)&_ZN6S894C52v5Ev,
  (VTBL_ENTRY)&_ZN6S894C52v6Ev,
  (VTBL_ENTRY)&_ZN6S894C42v7Ev,
  (VTBL_ENTRY)&_ZN6S894C42v8Ev,
  (VTBL_ENTRY)&_ZN6S894C42v9Ev,
  (VTBL_ENTRY)&_ZN6S894C33v10Ev,
  (VTBL_ENTRY)&_ZN6S894C23v11Ev,
  (VTBL_ENTRY)&_ZN6S894C23v12Ev,
  (VTBL_ENTRY)&_ZN6S894C23v13Ev,
  (VTBL_ENTRY)&_ZN6S894C23v14Ev,
  (VTBL_ENTRY)&_ZN6S894C12v1Ev,
  (VTBL_ENTRY)&_ZN6S894C12v2Ev,
};
extern VTBL_ENTRY _ZTI6S894C1[];
extern  VTBL_ENTRY _ZTV6S894C1[];
Class_Descriptor cd_S894C1 = {  "S894C1", // class name
  bases_S894C1, 4,
  &(vtc_S894C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,236), // object size
  NSPAIRA(_ZTI6S894C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S894C1),18, //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  S8205C5  {
  int s8205c5f0;
  virtual  ~S8205C5(); // _ZN7S8205C5D1Ev
  virtual void  v9(); // _ZN7S8205C52v9Ev
  virtual void  v10(); // _ZN7S8205C53v10Ev
  virtual void  v11(); // _ZN7S8205C53v11Ev
  virtual void  v12(); // _ZN7S8205C53v12Ev
  S8205C5(); // tgen
};
//SIG(-1 S8205C5) C1{ vd v1 v2 v3 v4 Fi}


 S8205C5 ::~S8205C5(){ note_dtor("S8205C5", this);}
void  S8205C5 ::v9(){vfunc_called(this, "_ZN7S8205C52v9Ev");}
void  S8205C5 ::v10(){vfunc_called(this, "_ZN7S8205C53v10Ev");}
void  S8205C5 ::v11(){vfunc_called(this, "_ZN7S8205C53v11Ev");}
void  S8205C5 ::v12(){vfunc_called(this, "_ZN7S8205C53v12Ev");}
S8205C5 ::S8205C5(){ note_ctor("S8205C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8205C5C1Ev();
extern void _ZN7S8205C5D1Ev();
Name_Map name_map_S8205C5[] = {
  NSPAIR(_ZN7S8205C5C1Ev),
  NSPAIR(_ZN7S8205C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8205C5[];
extern void _ZN7S8205C5D1Ev();
extern void _ZN7S8205C5D0Ev();
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY vtc_S8205C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C5[0]),
  (VTBL_ENTRY)&_ZN7S8205C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C5D0Ev,
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
extern VTBL_ENTRY _ZTI7S8205C5[];
extern  VTBL_ENTRY _ZTV7S8205C5[];
Class_Descriptor cd_S8205C5 = {  "S8205C5", // class name
  0,0,//no base classes
  &(vtc_S8205C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8205C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8205C5),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  S8205C4  : virtual S8205C5 {
  __tsi64 s8205c4f0;
  int s8205c4f1;
  virtual void  v13(); // _ZN7S8205C43v13Ev
  virtual void  v14(); // _ZN7S8205C43v14Ev
  virtual void  v15(); // _ZN7S8205C43v15Ev
  virtual void  v16(); // _ZN7S8205C43v16Ev
  virtual void  v17(); // _ZN7S8205C43v17Ev
  virtual void  v18(); // _ZN7S8205C43v18Ev
  virtual void  v19(); // _ZN7S8205C43v19Ev
  ~S8205C4(); // tgen
  S8205C4(); // tgen
};
//SIG(-1 S8205C4) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S8205C4 ::v13(){vfunc_called(this, "_ZN7S8205C43v13Ev");}
void  S8205C4 ::v14(){vfunc_called(this, "_ZN7S8205C43v14Ev");}
void  S8205C4 ::v15(){vfunc_called(this, "_ZN7S8205C43v15Ev");}
void  S8205C4 ::v16(){vfunc_called(this, "_ZN7S8205C43v16Ev");}
void  S8205C4 ::v17(){vfunc_called(this, "_ZN7S8205C43v17Ev");}
void  S8205C4 ::v18(){vfunc_called(this, "_ZN7S8205C43v18Ev");}
void  S8205C4 ::v19(){vfunc_called(this, "_ZN7S8205C43v19Ev");}
S8205C4 ::~S8205C4(){ note_dtor("S8205C4", this);} // tgen
S8205C4 ::S8205C4(){ note_ctor("S8205C4", this);} // tgen

static void Test_S8205C4()
{
  extern Class_Descriptor cd_S8205C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S8205C4, buf);
    S8205C4 *dp, &lv = *(dp=new (buf) S8205C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S8205C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8205C4)");
    check_base_class_offset(lv, (S8205C5*), ABISELECT(24,16), "S8205C4");
    check_field_offset(lv, s8205c4f0, ABISELECT(8,4), "S8205C4.s8205c4f0");
    check_field_offset(lv, s8205c4f1, ABISELECT(16,12), "S8205C4.s8205c4f1");
    test_class_info(&lv, &cd_S8205C4);
    dp->~S8205C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8205C4(Test_S8205C4, "S8205C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S8205C4C1Ev();
extern void _ZN7S8205C4D1Ev();
Name_Map name_map_S8205C4[] = {
  NSPAIR(_ZN7S8205C4C1Ev),
  NSPAIR(_ZN7S8205C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8205C5;
extern VTBL_ENTRY _ZTI7S8205C5[];
extern  VTBL_ENTRY _ZTV7S8205C5[];
static Base_Class bases_S8205C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8205C5,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI7S8205C4[];
extern void _ZN7S8205C43v13Ev();
extern void _ZN7S8205C43v14Ev();
extern void _ZN7S8205C43v15Ev();
extern void _ZN7S8205C43v16Ev();
extern void _ZN7S8205C43v17Ev();
extern void _ZN7S8205C43v18Ev();
extern void _ZN7S8205C43v19Ev();
extern void _ZN7S8205C4D1Ev();
extern void _ZN7S8205C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S8205C4D1Ev,_ZThn16_N7S8205C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S8205C4D0Ev,_ZThn16_N7S8205C4D0Ev)() __attribute__((weak));
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY vtc_S8205C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C4[0]),
  (VTBL_ENTRY)&_ZN7S8205C43v13Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v14Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v16Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v17Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v18Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v19Ev,
  (VTBL_ENTRY)&_ZN7S8205C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C4D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S8205C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
extern VTBL_ENTRY _ZTV7S8205C4[];
static  VTT_ENTRY vtt_S8205C4[] = {
  {&(_ZTV7S8205C4[3]),  3,25},
  {&(_ZTV7S8205C4[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S8205C4[];
extern  VTBL_ENTRY _ZTV7S8205C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8205C4[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8205C4D0Ev,_ZThn16_N7S8205C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8205C4D1Ev,_ZThn16_N7S8205C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8205C4 = {  "S8205C4", // class name
  bases_S8205C4, 1,
  &(vtc_S8205C4[0]), // expected_vtbl_contents
  &(vtt_S8205C4[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S8205C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S8205C4),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8205C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8205C3  : virtual S8205C4 {
  ::S7688C10 s8205c3f0;
  virtual  ~S8205C3(); // _ZN7S8205C3D2Ev
  virtual void  v20(); // _ZN7S8205C33v20Ev
  virtual void  v21(); // _ZN7S8205C33v21Ev
  virtual void  v22(); // _ZN7S8205C33v22Ev
  virtual void  v23(); // _ZN7S8205C33v23Ev
  virtual void  v24(); // _ZN7S8205C33v24Ev
  virtual void  v25(); // _ZN7S8205C33v25Ev
  virtual void  v26(); // _ZN7S8205C33v26Ev
  virtual void  v27(); // _ZN7S8205C33v27Ev
  virtual void  v28(); // _ZN7S8205C33v28Ev
  S8205C3(); // tgen
};
//SIG(-1 S8205C3) C1{ VBC2{ VBC3{ vd v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 FL Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ vd m Fp[9]}}


 S8205C3 ::~S8205C3(){ note_dtor("S8205C3", this);}
void  S8205C3 ::v20(){vfunc_called(this, "_ZN7S8205C33v20Ev");}
void  S8205C3 ::v21(){vfunc_called(this, "_ZN7S8205C33v21Ev");}
void  S8205C3 ::v22(){vfunc_called(this, "_ZN7S8205C33v22Ev");}
void  S8205C3 ::v23(){vfunc_called(this, "_ZN7S8205C33v23Ev");}
void  S8205C3 ::v24(){vfunc_called(this, "_ZN7S8205C33v24Ev");}
void  S8205C3 ::v25(){vfunc_called(this, "_ZN7S8205C33v25Ev");}
void  S8205C3 ::v26(){vfunc_called(this, "_ZN7S8205C33v26Ev");}
void  S8205C3 ::v27(){vfunc_called(this, "_ZN7S8205C33v27Ev");}
void  S8205C3 ::v28(){vfunc_called(this, "_ZN7S8205C33v28Ev");}
S8205C3 ::S8205C3(){ note_ctor("S8205C3", this);} // tgen

static void Test_S8205C3()
{
  extern Class_Descriptor cd_S8205C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S8205C3, buf);
    S8205C3 *dp, &lv = *(dp=new (buf) S8205C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S8205C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8205C3)");
    check_base_class_offset(lv, (S8205C5*)(S8205C4*), ABISELECT(112,60), "S8205C3");
    check_base_class_offset(lv, (S8205C4*), ABISELECT(88,44), "S8205C3");
    check_field_offset(lv, s8205c3f0, ABISELECT(8,4), "S8205C3.s8205c3f0");
    test_class_info(&lv, &cd_S8205C3);
    dp->~S8205C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8205C3(Test_S8205C3, "S8205C3", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S8205C3C1Ev();
extern void _ZN7S8205C3D2Ev();
Name_Map name_map_S8205C3[] = {
  NSPAIR(_ZN7S8205C3C1Ev),
  NSPAIR(_ZN7S8205C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8205C5;
extern VTBL_ENTRY _ZTI7S8205C5[];
extern  VTBL_ENTRY _ZTV7S8205C5[];
extern Class_Descriptor cd_S8205C4;
extern VTBL_ENTRY _ZTI7S8205C4[];
extern  VTBL_ENTRY _ZTV7S8205C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8205C4[];
static Base_Class bases_S8205C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8205C5,    ABISELECT(112,60), //bcp->offset
    35, //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
    1, //immediately_derived
  0, 1},
  {&cd_S8205C4,    ABISELECT(88,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //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 _ZTI7S8205C3[];
extern void _ZN7S8205C3D1Ev();
extern void _ZN7S8205C3D0Ev();
extern void _ZN7S8205C33v20Ev();
extern void _ZN7S8205C33v21Ev();
extern void _ZN7S8205C33v22Ev();
extern void _ZN7S8205C33v23Ev();
extern void _ZN7S8205C33v24Ev();
extern void _ZN7S8205C33v25Ev();
extern void _ZN7S8205C33v26Ev();
extern void _ZN7S8205C33v27Ev();
extern void _ZN7S8205C33v28Ev();
extern void _ZN7S8205C43v13Ev();
extern void _ZN7S8205C43v14Ev();
extern void _ZN7S8205C43v15Ev();
extern void _ZN7S8205C43v16Ev();
extern void _ZN7S8205C43v17Ev();
extern void _ZN7S8205C43v18Ev();
extern void _ZN7S8205C43v19Ev();
extern void ABISELECT(_ZTv0_n88_N7S8205C3D1Ev,_ZTv0_n44_N7S8205C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S8205C3D1Ev,_ZThn44_N7S8205C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8205C3D0Ev,_ZTv0_n44_N7S8205C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S8205C3D0Ev,_ZThn44_N7S8205C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C3D1Ev,_ZTv0_n12_N7S8205C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S8205C3D1Ev,_ZThn60_N7S8205C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C3D0Ev,_ZTv0_n12_N7S8205C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S8205C3D0Ev,_ZThn60_N7S8205C3D0Ev)() __attribute__((weak));
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY vtc_S8205C3[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C3[0]),
  (VTBL_ENTRY)&_ZN7S8205C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C3D0Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v20Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v21Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v22Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v23Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v24Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v25Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v26Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v27Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v28Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S8205C3[0]),
  (VTBL_ENTRY)&_ZN7S8205C43v13Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v14Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v16Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v17Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v18Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8205C3D1Ev,_ZTv0_n44_N7S8205C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8205C3D0Ev,_ZTv0_n44_N7S8205C3D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S8205C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C3D1Ev,_ZTv0_n12_N7S8205C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C3D0Ev,_ZTv0_n12_N7S8205C3D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
extern VTBL_ENTRY _ZTV7S8205C3[];
extern void _ZN7S8205C43v13Ev();
extern void _ZN7S8205C43v14Ev();
extern void _ZN7S8205C43v15Ev();
extern void _ZN7S8205C43v16Ev();
extern void _ZN7S8205C43v17Ev();
extern void _ZN7S8205C43v18Ev();
extern void _ZN7S8205C43v19Ev();
extern void _ZN7S8205C4D1Ev();
extern void _ZN7S8205C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8205C4__7S8205C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C4[0]),
  (VTBL_ENTRY)&_ZN7S8205C43v13Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v14Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v16Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v17Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v18Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v19Ev,
  (VTBL_ENTRY)&_ZN7S8205C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S8205C4D1Ev,_ZThn16_N7S8205C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S8205C4D0Ev,_ZThn16_N7S8205C4D0Ev)() __attribute__((weak));
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S8205C5__7S8205C4__7S8205C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S8205C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
static  VTT_ENTRY vtt_S8205C3[] = {
  {&(_ZTV7S8205C3[4]),  4,48},
  {&(_ZTV7S8205C3[26]),  26,48},
  {&(_ZTV7S8205C3[42]),  42,48},
  {&(_tg__ZTV7S8205C4__7S8205C3[3]),  3,12},
  {&(_tg__ZTV7S8205C5__7S8205C4__7S8205C3[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S8205C3[];
extern  VTBL_ENTRY _ZTV7S8205C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8205C3[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8205C4D0Ev,_ZThn16_N7S8205C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8205C4D1Ev,_ZThn16_N7S8205C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C3D0Ev,_ZTv0_n12_N7S8205C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S8205C3D0Ev,_ZThn60_N7S8205C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C3D1Ev,_ZTv0_n12_N7S8205C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S8205C3D1Ev,_ZThn60_N7S8205C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8205C3D0Ev,_ZTv0_n44_N7S8205C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S8205C3D0Ev,_ZThn44_N7S8205C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8205C3D1Ev,_ZTv0_n44_N7S8205C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S8205C3D1Ev,_ZThn44_N7S8205C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8205C3 = {  "S8205C3", // class name
  bases_S8205C3, 2,
  &(vtc_S8205C3[0]), // expected_vtbl_contents
  &(vtt_S8205C3[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S8205C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S8205C3),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8205C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8205C1  : S7688C10 , virtual S8205C3 {
  virtual  ~S8205C1(); // _ZN7S8205C1D2Ev
  virtual void  v1(); // _ZN7S8205C12v1Ev
  virtual void  v2(); // _ZN7S8205C12v2Ev
  virtual void  v3(); // _ZN7S8205C12v3Ev
  virtual void  v4(); // _ZN7S8205C12v4Ev
  virtual void  v5(); // _ZN7S8205C12v5Ev
  virtual void  v6(); // _ZN7S8205C12v6Ev
  virtual void  v7(); // _ZN7S8205C12v7Ev
  virtual void  v8(); // _ZN7S8205C12v8Ev
  S8205C1(); // tgen
};
//SIG(1 S8205C1) C1{ BC2{ vd m Fp[9]} VBC3{ VBC4{ VBC5{ vd v9 v10 v11 v12 Fi} v13 v14 v15 v16 v17 v18 v19 FL Fi} vd v20 v21 v22 v23 v24 v25 v26 v27 v28 FC2} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S8205C1 ::~S8205C1(){ note_dtor("S8205C1", this);}
void  S8205C1 ::v1(){vfunc_called(this, "_ZN7S8205C12v1Ev");}
void  S8205C1 ::v2(){vfunc_called(this, "_ZN7S8205C12v2Ev");}
void  S8205C1 ::v3(){vfunc_called(this, "_ZN7S8205C12v3Ev");}
void  S8205C1 ::v4(){vfunc_called(this, "_ZN7S8205C12v4Ev");}
void  S8205C1 ::v5(){vfunc_called(this, "_ZN7S8205C12v5Ev");}
void  S8205C1 ::v6(){vfunc_called(this, "_ZN7S8205C12v6Ev");}
void  S8205C1 ::v7(){vfunc_called(this, "_ZN7S8205C12v7Ev");}
void  S8205C1 ::v8(){vfunc_called(this, "_ZN7S8205C12v8Ev");}
S8205C1 ::S8205C1(){ note_ctor("S8205C1", this);} // tgen

static void Test_S8205C1()
{
  extern Class_Descriptor cd_S8205C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,28)];
    init_test(&cd_S8205C1, buf);
    S8205C1 *dp, &lv = *(dp=new (buf) S8205C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S8205C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8205C1)");
    check_base_class_offset(lv, (S7688C10*), 0, "S8205C1");
    check_base_class_offset(lv, (S8205C5*)(S8205C4*), ABISELECT(192,100), "S8205C1");
    check_base_class_offset(lv, (S8205C4*)(S8205C3*), ABISELECT(168,84), "S8205C1");
    check_base_class_offset(lv, (S8205C3*), ABISELECT(80,40), "S8205C1");
    test_class_info(&lv, &cd_S8205C1);
    dp->~S8205C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8205C1(Test_S8205C1, "S8205C1", ABISELECT(208,108));

#else // __cplusplus

extern void _ZN7S8205C1C1Ev();
extern void _ZN7S8205C1D2Ev();
Name_Map name_map_S8205C1[] = {
  NSPAIR(_ZN7S8205C1C1Ev),
  NSPAIR(_ZN7S8205C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7688C10;
extern VTBL_ENTRY _ZTI8S7688C10[];
extern  VTBL_ENTRY _ZTV8S7688C10[];
extern Class_Descriptor cd_S8205C5;
extern VTBL_ENTRY _ZTI7S8205C5[];
extern  VTBL_ENTRY _ZTV7S8205C5[];
extern Class_Descriptor cd_S8205C4;
extern VTBL_ENTRY _ZTI7S8205C4[];
extern  VTBL_ENTRY _ZTV7S8205C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8205C4[];
extern Class_Descriptor cd_S8205C3;
extern VTBL_ENTRY _ZTI7S8205C3[];
extern  VTBL_ENTRY _ZTV7S8205C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8205C3[];
static Base_Class bases_S8205C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7688C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8205C5,    ABISELECT(192,100), //bcp->offset
    60, //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_S8205C4,    ABISELECT(168,84), //bcp->offset
    40, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8205C3,    ABISELECT(80,40), //bcp->offset
    15, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S8205C1[];
extern void _ZN7S8205C1D1Ev();
extern void _ZN7S8205C1D0Ev();
extern void _ZN7S8205C12v1Ev();
extern void _ZN7S8205C12v2Ev();
extern void _ZN7S8205C12v3Ev();
extern void _ZN7S8205C12v4Ev();
extern void _ZN7S8205C12v5Ev();
extern void _ZN7S8205C12v6Ev();
extern void _ZN7S8205C12v7Ev();
extern void _ZN7S8205C12v8Ev();
extern void ABISELECT(_ZTv0_n40_N7S8205C1D1Ev,_ZTv0_n20_N7S8205C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S8205C1D1Ev,_ZThn40_N7S8205C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8205C1D0Ev,_ZTv0_n20_N7S8205C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S8205C1D0Ev,_ZThn40_N7S8205C1D0Ev)() __attribute__((weak));
extern void _ZN7S8205C33v20Ev();
extern void _ZN7S8205C33v21Ev();
extern void _ZN7S8205C33v22Ev();
extern void _ZN7S8205C33v23Ev();
extern void _ZN7S8205C33v24Ev();
extern void _ZN7S8205C33v25Ev();
extern void _ZN7S8205C33v26Ev();
extern void _ZN7S8205C33v27Ev();
extern void _ZN7S8205C33v28Ev();
extern void _ZN7S8205C43v13Ev();
extern void _ZN7S8205C43v14Ev();
extern void _ZN7S8205C43v15Ev();
extern void _ZN7S8205C43v16Ev();
extern void _ZN7S8205C43v17Ev();
extern void _ZN7S8205C43v18Ev();
extern void _ZN7S8205C43v19Ev();
extern void ABISELECT(_ZTv0_n88_N7S8205C1D1Ev,_ZTv0_n44_N7S8205C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S8205C1D1Ev,_ZThn84_N7S8205C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8205C1D0Ev,_ZTv0_n44_N7S8205C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S8205C1D0Ev,_ZThn84_N7S8205C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C1D1Ev,_ZTv0_n12_N7S8205C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S8205C1D1Ev,_ZThn100_N7S8205C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C1D0Ev,_ZTv0_n12_N7S8205C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S8205C1D0Ev,_ZThn100_N7S8205C1D0Ev)() __attribute__((weak));
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY vtc_S8205C1[] = {
  ABISELECT(192,100),
  ABISELECT(168,84),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C1[0]),
  (VTBL_ENTRY)&_ZN7S8205C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8205C12v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-40),
  ABISELECT(112,60),
  ABISELECT(88,44),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S8205C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8205C1D1Ev,_ZTv0_n20_N7S8205C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8205C1D0Ev,_ZTv0_n20_N7S8205C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C33v20Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v21Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v22Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v23Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v24Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v25Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v26Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v27Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v28Ev,
  ABISELECT(-168,-84),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S8205C1[0]),
  (VTBL_ENTRY)&_ZN7S8205C43v13Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v14Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v16Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v17Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v18Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8205C1D1Ev,_ZTv0_n44_N7S8205C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8205C1D0Ev,_ZTv0_n44_N7S8205C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S8205C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C1D1Ev,_ZTv0_n12_N7S8205C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C1D0Ev,_ZTv0_n12_N7S8205C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
extern VTBL_ENTRY _ZTV7S8205C1[];
extern void _ZN7S8205C3D1Ev();
extern void _ZN7S8205C3D0Ev();
extern void _ZN7S8205C33v20Ev();
extern void _ZN7S8205C33v21Ev();
extern void _ZN7S8205C33v22Ev();
extern void _ZN7S8205C33v23Ev();
extern void _ZN7S8205C33v24Ev();
extern void _ZN7S8205C33v25Ev();
extern void _ZN7S8205C33v26Ev();
extern void _ZN7S8205C33v27Ev();
extern void _ZN7S8205C33v28Ev();
static  VTBL_ENTRY _tg__ZTV7S8205C3__7S8205C1[] = {
  ABISELECT(112,60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C3[0]),
  (VTBL_ENTRY)&_ZN7S8205C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C3D0Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v20Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v21Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v22Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v23Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v24Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v25Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v26Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v27Ev,
  (VTBL_ENTRY)&_ZN7S8205C33v28Ev,
};
extern void _ZN7S8205C43v13Ev();
extern void _ZN7S8205C43v14Ev();
extern void _ZN7S8205C43v15Ev();
extern void _ZN7S8205C43v16Ev();
extern void _ZN7S8205C43v17Ev();
extern void _ZN7S8205C43v18Ev();
extern void _ZN7S8205C43v19Ev();
extern void ABISELECT(_ZTv0_n88_N7S8205C3D1Ev,_ZTv0_n44_N7S8205C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S8205C3D1Ev,_ZThn44_N7S8205C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8205C3D0Ev,_ZTv0_n44_N7S8205C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S8205C3D0Ev,_ZThn44_N7S8205C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8205C4__7S8205C3__7S8205C1[] = {
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S8205C3[0]),
  (VTBL_ENTRY)&_ZN7S8205C43v13Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v14Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v16Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v17Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v18Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8205C3D1Ev,_ZTv0_n44_N7S8205C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8205C3D0Ev,_ZTv0_n44_N7S8205C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8205C3D1Ev,_ZTv0_n12_N7S8205C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S8205C3D1Ev,_ZThn60_N7S8205C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C3D0Ev,_ZTv0_n12_N7S8205C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S8205C3D0Ev,_ZThn60_N7S8205C3D0Ev)() __attribute__((weak));
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S8205C5__7S8205C3__7S8205C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S8205C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C3D1Ev,_ZTv0_n12_N7S8205C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C3D0Ev,_ZTv0_n12_N7S8205C3D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
extern void _ZN7S8205C43v13Ev();
extern void _ZN7S8205C43v14Ev();
extern void _ZN7S8205C43v15Ev();
extern void _ZN7S8205C43v16Ev();
extern void _ZN7S8205C43v17Ev();
extern void _ZN7S8205C43v18Ev();
extern void _ZN7S8205C43v19Ev();
extern void _ZN7S8205C4D1Ev();
extern void _ZN7S8205C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8205C4__7S8205C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8205C4[0]),
  (VTBL_ENTRY)&_ZN7S8205C43v13Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v14Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v16Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v17Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v18Ev,
  (VTBL_ENTRY)&_ZN7S8205C43v19Ev,
  (VTBL_ENTRY)&_ZN7S8205C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8205C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S8205C4D1Ev,_ZThn16_N7S8205C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S8205C4D0Ev,_ZThn16_N7S8205C4D0Ev)() __attribute__((weak));
extern void _ZN7S8205C52v9Ev();
extern void _ZN7S8205C53v10Ev();
extern void _ZN7S8205C53v11Ev();
extern void _ZN7S8205C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S8205C5__7S8205C4__7S8205C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S8205C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev),
  (VTBL_ENTRY)&_ZN7S8205C52v9Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v10Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v11Ev,
  (VTBL_ENTRY)&_ZN7S8205C53v12Ev,
};
static  VTT_ENTRY vtt_S8205C1[] = {
  {&(_ZTV7S8205C1[5]),  5,73},
  {&(_ZTV7S8205C1[29]),  29,73},
  {&(_ZTV7S8205C1[51]),  51,73},
  {&(_ZTV7S8205C1[67]),  67,73},
  {&(_tg__ZTV7S8205C3__7S8205C1[4]),  4,15},
  {&(_tg__ZTV7S8205C4__7S8205C3__7S8205C1[11]),  11,20},
  {&(_tg__ZTV7S8205C5__7S8205C3__7S8205C1[7]),  7,13},
  {&(_tg__ZTV7S8205C4__7S8205C1[3]),  3,12},
  {&(_tg__ZTV7S8205C5__7S8205C4__7S8205C1[7]),  7,13},
};
extern VTBL_ENTRY _ZTI7S8205C1[];
extern  VTBL_ENTRY _ZTV7S8205C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8205C1[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C4D0Ev,_ZTv0_n12_N7S8205C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8205C4D0Ev,_ZThn16_N7S8205C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C4D1Ev,_ZTv0_n12_N7S8205C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S8205C4D1Ev,_ZThn16_N7S8205C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C3D0Ev,_ZTv0_n12_N7S8205C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S8205C3D0Ev,_ZThn60_N7S8205C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C3D1Ev,_ZTv0_n12_N7S8205C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S8205C3D1Ev,_ZThn60_N7S8205C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8205C3D0Ev,_ZTv0_n44_N7S8205C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S8205C3D0Ev,_ZThn44_N7S8205C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8205C3D1Ev,_ZTv0_n44_N7S8205C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S8205C3D1Ev,_ZThn44_N7S8205C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C1D0Ev,_ZTv0_n12_N7S8205C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S8205C1D0Ev,_ZThn100_N7S8205C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8205C1D1Ev,_ZTv0_n12_N7S8205C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S8205C1D1Ev,_ZThn100_N7S8205C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8205C1D0Ev,_ZTv0_n44_N7S8205C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S8205C1D0Ev,_ZThn84_N7S8205C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8205C1D1Ev,_ZTv0_n44_N7S8205C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S8205C1D1Ev,_ZThn84_N7S8205C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8205C1D0Ev,_ZTv0_n20_N7S8205C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S8205C1D0Ev,_ZThn40_N7S8205C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8205C1D1Ev,_ZTv0_n20_N7S8205C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S8205C1D1Ev,_ZThn40_N7S8205C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8205C1 = {  "S8205C1", // class name
  bases_S8205C1, 4,
  &(vtc_S8205C1[0]), // expected_vtbl_contents
  &(vtt_S8205C1[0]), // expected_vtt_contents
  ABISELECT(208,108), // object size
  NSPAIRA(_ZTI7S8205C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8205C1),73, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8205C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S877C5  {
  char s877c5f0;
  int s877c5f1;
  virtual  ~S877C5(); // _ZN6S877C5D1Ev
  virtual void  v2(); // _ZN6S877C52v2Ev
  virtual void  v3(); // _ZN6S877C52v3Ev
  virtual void  v4(); // _ZN6S877C52v4Ev
  virtual void  v5(); // _ZN6S877C52v5Ev
  S877C5(); // tgen
};
//SIG(-1 S877C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S877C5 ::~S877C5(){ note_dtor("S877C5", this);}
void  S877C5 ::v2(){vfunc_called(this, "_ZN6S877C52v2Ev");}
void  S877C5 ::v3(){vfunc_called(this, "_ZN6S877C52v3Ev");}
void  S877C5 ::v4(){vfunc_called(this, "_ZN6S877C52v4Ev");}
void  S877C5 ::v5(){vfunc_called(this, "_ZN6S877C52v5Ev");}
S877C5 ::S877C5(){ note_ctor("S877C5", this);} // tgen

static void Test_S877C5()
{
  extern Class_Descriptor cd_S877C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S877C5, buf);
    S877C5 *dp, &lv = *(dp=new (buf) S877C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S877C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S877C5)");
    check_field_offset(lv, s877c5f0, ABISELECT(8,4), "S877C5.s877c5f0");
    check_field_offset(lv, s877c5f1, ABISELECT(12,8), "S877C5.s877c5f1");
    test_class_info(&lv, &cd_S877C5);
    dp->~S877C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS877C5(Test_S877C5, "S877C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S877C5C1Ev();
extern void _ZN6S877C5D1Ev();
Name_Map name_map_S877C5[] = {
  NSPAIR(_ZN6S877C5C1Ev),
  NSPAIR(_ZN6S877C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S877C5[];
extern void _ZN6S877C5D1Ev();
extern void _ZN6S877C5D0Ev();
extern void _ZN6S877C52v2Ev();
extern void _ZN6S877C52v3Ev();
extern void _ZN6S877C52v4Ev();
extern void _ZN6S877C52v5Ev();
static  VTBL_ENTRY vtc_S877C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S877C5[0]),
  (VTBL_ENTRY)&_ZN6S877C5D1Ev,
  (VTBL_ENTRY)&_ZN6S877C5D0Ev,
  (VTBL_ENTRY)&_ZN6S877C52v2Ev,
  (VTBL_ENTRY)&_ZN6S877C52v3Ev,
  (VTBL_ENTRY)&_ZN6S877C52v4Ev,
  (VTBL_ENTRY)&_ZN6S877C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S877C5[];
extern  VTBL_ENTRY _ZTV6S877C5[];
Class_Descriptor cd_S877C5 = {  "S877C5", // class name
  0,0,//no base classes
  &(vtc_S877C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S877C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S877C5),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  S877C4  : S877C5 {
  ::S4224C24 s877c4f0[8];
  ::S5309C14_nt s877c4f1[8];
  int s877c4f2;
  virtual  ~S877C4(); // _ZN6S877C4D1Ev
  virtual void  v6(); // _ZN6S877C42v6Ev
  virtual void  v7(); // _ZN6S877C42v7Ev
  virtual void  v8(); // _ZN6S877C42v8Ev
  S877C4(); // tgen
};
//SIG(-1 S877C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S877C4 ::~S877C4(){ note_dtor("S877C4", this);}
void  S877C4 ::v6(){vfunc_called(this, "_ZN6S877C42v6Ev");}
void  S877C4 ::v7(){vfunc_called(this, "_ZN6S877C42v7Ev");}
void  S877C4 ::v8(){vfunc_called(this, "_ZN6S877C42v8Ev");}
S877C4 ::S877C4(){ note_ctor("S877C4", this);} // tgen

static void Test_S877C4()
{
  extern Class_Descriptor cd_S877C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S877C4, buf);
    S877C4 *dp, &lv = *(dp=new (buf) S877C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S877C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S877C4)");
    check_base_class_offset(lv, (S877C5*), 0, "S877C4");
    check_field_offset(lv, s877c4f0, ABISELECT(16,12), "S877C4.s877c4f0");
    check_field_offset(lv, s877c4f1, ABISELECT(144,108), "S877C4.s877c4f1");
    check_field_offset(lv, s877c4f2, ABISELECT(272,172), "S877C4.s877c4f2");
    test_class_info(&lv, &cd_S877C4);
    dp->~S877C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS877C4(Test_S877C4, "S877C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S877C4C1Ev();
extern void _ZN6S877C4D1Ev();
Name_Map name_map_S877C4[] = {
  NSPAIR(_ZN6S877C4C1Ev),
  NSPAIR(_ZN6S877C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S877C5;
extern VTBL_ENTRY _ZTI6S877C5[];
extern  VTBL_ENTRY _ZTV6S877C5[];
static Base_Class bases_S877C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S877C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S877C4[];
extern void _ZN6S877C4D1Ev();
extern void _ZN6S877C4D0Ev();
extern void _ZN6S877C52v2Ev();
extern void _ZN6S877C52v3Ev();
extern void _ZN6S877C52v4Ev();
extern void _ZN6S877C52v5Ev();
extern void _ZN6S877C42v6Ev();
extern void _ZN6S877C42v7Ev();
extern void _ZN6S877C42v8Ev();
static  VTBL_ENTRY vtc_S877C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S877C4[0]),
  (VTBL_ENTRY)&_ZN6S877C4D1Ev,
  (VTBL_ENTRY)&_ZN6S877C4D0Ev,
  (VTBL_ENTRY)&_ZN6S877C52v2Ev,
  (VTBL_ENTRY)&_ZN6S877C52v3Ev,
  (VTBL_ENTRY)&_ZN6S877C52v4Ev,
  (VTBL_ENTRY)&_ZN6S877C52v5Ev,
  (VTBL_ENTRY)&_ZN6S877C42v6Ev,
  (VTBL_ENTRY)&_ZN6S877C42v7Ev,
  (VTBL_ENTRY)&_ZN6S877C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S877C4[];
extern  VTBL_ENTRY _ZTV6S877C4[];
Class_Descriptor cd_S877C4 = {  "S877C4", // class name
  bases_S877C4, 1,
  &(vtc_S877C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S877C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S877C4),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  S877C3  : S877C4 {
  void *s877c3f0[9];
  virtual  ~S877C3(); // _ZN6S877C3D1Ev
  virtual void  v9(); // _ZN6S877C32v9Ev
  S877C3(); // tgen
};
//SIG(-1 S877C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S877C3()
{
  extern Class_Descriptor cd_S877C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S877C3, buf);
    S877C3 *dp, &lv = *(dp=new (buf) S877C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S877C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S877C3)");
    check_base_class_offset(lv, (S877C5*)(S877C4*), 0, "S877C3");
    check_base_class_offset(lv, (S877C4*), 0, "S877C3");
    check_field_offset(lv, s877c3f0, ABISELECT(280,176), "S877C3.s877c3f0");
    test_class_info(&lv, &cd_S877C3);
    dp->~S877C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS877C3(Test_S877C3, "S877C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S877C3C1Ev();
extern void _ZN6S877C3D1Ev();
Name_Map name_map_S877C3[] = {
  NSPAIR(_ZN6S877C3C1Ev),
  NSPAIR(_ZN6S877C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S877C5;
extern VTBL_ENTRY _ZTI6S877C5[];
extern  VTBL_ENTRY _ZTV6S877C5[];
extern Class_Descriptor cd_S877C4;
extern VTBL_ENTRY _ZTI6S877C4[];
extern  VTBL_ENTRY _ZTV6S877C4[];
static Base_Class bases_S877C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S877C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S877C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S877C3[];
extern void _ZN6S877C3D1Ev();
extern void _ZN6S877C3D0Ev();
extern void _ZN6S877C52v2Ev();
extern void _ZN6S877C52v3Ev();
extern void _ZN6S877C52v4Ev();
extern void _ZN6S877C52v5Ev();
extern void _ZN6S877C42v6Ev();
extern void _ZN6S877C42v7Ev();
extern void _ZN6S877C42v8Ev();
extern void _ZN6S877C32v9Ev();
static  VTBL_ENTRY vtc_S877C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S877C3[0]),
  (VTBL_ENTRY)&_ZN6S877C3D1Ev,
  (VTBL_ENTRY)&_ZN6S877C3D0Ev,
  (VTBL_ENTRY)&_ZN6S877C52v2Ev,
  (VTBL_ENTRY)&_ZN6S877C52v3Ev,
  (VTBL_ENTRY)&_ZN6S877C52v4Ev,
  (VTBL_ENTRY)&_ZN6S877C52v5Ev,
  (VTBL_ENTRY)&_ZN6S877C42v6Ev,
  (VTBL_ENTRY)&_ZN6S877C42v7Ev,
  (VTBL_ENTRY)&_ZN6S877C42v8Ev,
  (VTBL_ENTRY)&_ZN6S877C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S877C3[];
extern  VTBL_ENTRY _ZTV6S877C3[];
Class_Descriptor cd_S877C3 = {  "S877C3", // class name
  bases_S877C3, 2,
  &(vtc_S877C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S877C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S877C3),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  S877C2  : S877C3 {
  int s877c2f0[4];
  char s877c2f1;
  int s877c2f2;
  virtual  ~S877C2(); // _ZN6S877C2D1Ev
  virtual void  v10(); // _ZN6S877C23v10Ev
  virtual void  v11(); // _ZN6S877C23v11Ev
  virtual void  v12(); // _ZN6S877C23v12Ev
  virtual void  v13(); // _ZN6S877C23v13Ev
  S877C2(); // tgen
};
//SIG(-1 S877C2) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 Fc Fi} vd v9 v10 v11 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v12 Fp[9]} vd v1 v2 v3 v4 Fi[4] Fc Fi}


 S877C2 ::~S877C2(){ note_dtor("S877C2", this);}
void  S877C2 ::v10(){vfunc_called(this, "_ZN6S877C23v10Ev");}
void  S877C2 ::v11(){vfunc_called(this, "_ZN6S877C23v11Ev");}
void  S877C2 ::v12(){vfunc_called(this, "_ZN6S877C23v12Ev");}
void  S877C2 ::v13(){vfunc_called(this, "_ZN6S877C23v13Ev");}
S877C2 ::S877C2(){ note_ctor("S877C2", this);} // tgen

static void Test_S877C2()
{
  extern Class_Descriptor cd_S877C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,60)];
    init_test(&cd_S877C2, buf);
    S877C2 *dp, &lv = *(dp=new (buf) S877C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,236), "sizeof(S877C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S877C2)");
    check_base_class_offset(lv, (S877C5*)(S877C4*)(S877C3*), 0, "S877C2");
    check_base_class_offset(lv, (S877C4*)(S877C3*), 0, "S877C2");
    check_base_class_offset(lv, (S877C3*), 0, "S877C2");
    check_field_offset(lv, s877c2f0, ABISELECT(352,212), "S877C2.s877c2f0");
    check_field_offset(lv, s877c2f1, ABISELECT(368,228), "S877C2.s877c2f1");
    check_field_offset(lv, s877c2f2, ABISELECT(372,232), "S877C2.s877c2f2");
    test_class_info(&lv, &cd_S877C2);
    dp->~S877C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS877C2(Test_S877C2, "S877C2", ABISELECT(376,236));

#else // __cplusplus

extern void _ZN6S877C2C1Ev();
extern void _ZN6S877C2D1Ev();
Name_Map name_map_S877C2[] = {
  NSPAIR(_ZN6S877C2C1Ev),
  NSPAIR(_ZN6S877C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S877C5;
extern VTBL_ENTRY _ZTI6S877C5[];
extern  VTBL_ENTRY _ZTV6S877C5[];
extern Class_Descriptor cd_S877C4;
extern VTBL_ENTRY _ZTI6S877C4[];
extern  VTBL_ENTRY _ZTV6S877C4[];
extern Class_Descriptor cd_S877C3;
extern VTBL_ENTRY _ZTI6S877C3[];
extern  VTBL_ENTRY _ZTV6S877C3[];
static Base_Class bases_S877C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S877C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S877C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S877C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S877C2[];
extern void _ZN6S877C2D1Ev();
extern void _ZN6S877C2D0Ev();
extern void _ZN6S877C52v2Ev();
extern void _ZN6S877C52v3Ev();
extern void _ZN6S877C52v4Ev();
extern void _ZN6S877C52v5Ev();
extern void _ZN6S877C42v6Ev();
extern void _ZN6S877C42v7Ev();
extern void _ZN6S877C42v8Ev();
extern void _ZN6S877C32v9Ev();
extern void _ZN6S877C23v10Ev();
extern void _ZN6S877C23v11Ev();
extern void _ZN6S877C23v12Ev();
extern void _ZN6S877C23v13Ev();
static  VTBL_ENTRY vtc_S877C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S877C2[0]),
  (VTBL_ENTRY)&_ZN6S877C2D1Ev,
  (VTBL_ENTRY)&_ZN6S877C2D0Ev,
  (VTBL_ENTRY)&_ZN6S877C52v2Ev,
  (VTBL_ENTRY)&_ZN6S877C52v3Ev,
  (VTBL_ENTRY)&_ZN6S877C52v4Ev,
  (VTBL_ENTRY)&_ZN6S877C52v5Ev,
  (VTBL_ENTRY)&_ZN6S877C42v6Ev,
  (VTBL_ENTRY)&_ZN6S877C42v7Ev,
  (VTBL_ENTRY)&_ZN6S877C42v8Ev,
  (VTBL_ENTRY)&_ZN6S877C32v9Ev,
  (VTBL_ENTRY)&_ZN6S877C23v10Ev,
  (VTBL_ENTRY)&_ZN6S877C23v11Ev,
  (VTBL_ENTRY)&_ZN6S877C23v12Ev,
  (VTBL_ENTRY)&_ZN6S877C23v13Ev,
};
extern VTBL_ENTRY _ZTI6S877C2[];
extern  VTBL_ENTRY _ZTV6S877C2[];
Class_Descriptor cd_S877C2 = {  "S877C2", // class name
  bases_S877C2, 3,
  &(vtc_S877C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,236), // object size
  NSPAIRA(_ZTI6S877C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S877C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S877C1  : S877C2 {
  void *s877c1f0;
  virtual  ~S877C1(); // _ZN6S877C1D1Ev
  virtual void  v1(); // _ZN6S877C12v1Ev
  S877C1(); // tgen
};
//SIG(1 S877C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10 v11 v12 v13 Fi[4] Fc Fi} vd v1 Fp}


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

static void Test_S877C1()
{
  extern Class_Descriptor cd_S877C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,61)];
    init_test(&cd_S877C1, buf);
    S877C1 *dp, &lv = *(dp=new (buf) S877C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,240), "sizeof(S877C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S877C1)");
    check_base_class_offset(lv, (S877C5*)(S877C4*)(S877C3*)(S877C2*), 0, "S877C1");
    check_base_class_offset(lv, (S877C4*)(S877C3*)(S877C2*), 0, "S877C1");
    check_base_class_offset(lv, (S877C3*)(S877C2*), 0, "S877C1");
    check_base_class_offset(lv, (S877C2*), 0, "S877C1");
    check_field_offset(lv, s877c1f0, ABISELECT(376,236), "S877C1.s877c1f0");
    test_class_info(&lv, &cd_S877C1);
    dp->~S877C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS877C1(Test_S877C1, "S877C1", ABISELECT(384,240));

#else // __cplusplus

extern void _ZN6S877C1C1Ev();
extern void _ZN6S877C1D1Ev();
Name_Map name_map_S877C1[] = {
  NSPAIR(_ZN6S877C1C1Ev),
  NSPAIR(_ZN6S877C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S877C5;
extern VTBL_ENTRY _ZTI6S877C5[];
extern  VTBL_ENTRY _ZTV6S877C5[];
extern Class_Descriptor cd_S877C4;
extern VTBL_ENTRY _ZTI6S877C4[];
extern  VTBL_ENTRY _ZTV6S877C4[];
extern Class_Descriptor cd_S877C3;
extern VTBL_ENTRY _ZTI6S877C3[];
extern  VTBL_ENTRY _ZTV6S877C3[];
extern Class_Descriptor cd_S877C2;
extern VTBL_ENTRY _ZTI6S877C2[];
extern  VTBL_ENTRY _ZTV6S877C2[];
static Base_Class bases_S877C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S877C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S877C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S877C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S877C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S877C1[];
extern void _ZN6S877C1D1Ev();
extern void _ZN6S877C1D0Ev();
extern void _ZN6S877C52v2Ev();
extern void _ZN6S877C52v3Ev();
extern void _ZN6S877C52v4Ev();
extern void _ZN6S877C52v5Ev();
extern void _ZN6S877C42v6Ev();
extern void _ZN6S877C42v7Ev();
extern void _ZN6S877C42v8Ev();
extern void _ZN6S877C32v9Ev();
extern void _ZN6S877C23v10Ev();
extern void _ZN6S877C23v11Ev();
extern void _ZN6S877C23v12Ev();
extern void _ZN6S877C23v13Ev();
extern void _ZN6S877C12v1Ev();
static  VTBL_ENTRY vtc_S877C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S877C1[0]),
  (VTBL_ENTRY)&_ZN6S877C1D1Ev,
  (VTBL_ENTRY)&_ZN6S877C1D0Ev,
  (VTBL_ENTRY)&_ZN6S877C52v2Ev,
  (VTBL_ENTRY)&_ZN6S877C52v3Ev,
  (VTBL_ENTRY)&_ZN6S877C52v4Ev,
  (VTBL_ENTRY)&_ZN6S877C52v5Ev,
  (VTBL_ENTRY)&_ZN6S877C42v6Ev,
  (VTBL_ENTRY)&_ZN6S877C42v7Ev,
  (VTBL_ENTRY)&_ZN6S877C42v8Ev,
  (VTBL_ENTRY)&_ZN6S877C32v9Ev,
  (VTBL_ENTRY)&_ZN6S877C23v10Ev,
  (VTBL_ENTRY)&_ZN6S877C23v11Ev,
  (VTBL_ENTRY)&_ZN6S877C23v12Ev,
  (VTBL_ENTRY)&_ZN6S877C23v13Ev,
  (VTBL_ENTRY)&_ZN6S877C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S877C1[];
extern  VTBL_ENTRY _ZTV6S877C1[];
Class_Descriptor cd_S877C1 = {  "S877C1", // class name
  bases_S877C1, 4,
  &(vtc_S877C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,240), // object size
  NSPAIRA(_ZTI6S877C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S877C1),17, //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  S878C5  {
  char s878c5f0;
  int s878c5f1;
  virtual  ~S878C5(); // _ZN6S878C5D1Ev
  virtual void  v2(); // _ZN6S878C52v2Ev
  virtual void  v3(); // _ZN6S878C52v3Ev
  virtual void  v4(); // _ZN6S878C52v4Ev
  virtual void  v5(); // _ZN6S878C52v5Ev
  S878C5(); // tgen
};
//SIG(-1 S878C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S878C5 ::~S878C5(){ note_dtor("S878C5", this);}
void  S878C5 ::v2(){vfunc_called(this, "_ZN6S878C52v2Ev");}
void  S878C5 ::v3(){vfunc_called(this, "_ZN6S878C52v3Ev");}
void  S878C5 ::v4(){vfunc_called(this, "_ZN6S878C52v4Ev");}
void  S878C5 ::v5(){vfunc_called(this, "_ZN6S878C52v5Ev");}
S878C5 ::S878C5(){ note_ctor("S878C5", this);} // tgen

static void Test_S878C5()
{
  extern Class_Descriptor cd_S878C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S878C5, buf);
    S878C5 *dp, &lv = *(dp=new (buf) S878C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S878C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S878C5)");
    check_field_offset(lv, s878c5f0, ABISELECT(8,4), "S878C5.s878c5f0");
    check_field_offset(lv, s878c5f1, ABISELECT(12,8), "S878C5.s878c5f1");
    test_class_info(&lv, &cd_S878C5);
    dp->~S878C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS878C5(Test_S878C5, "S878C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S878C5C1Ev();
extern void _ZN6S878C5D1Ev();
Name_Map name_map_S878C5[] = {
  NSPAIR(_ZN6S878C5C1Ev),
  NSPAIR(_ZN6S878C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S878C5[];
extern void _ZN6S878C5D1Ev();
extern void _ZN6S878C5D0Ev();
extern void _ZN6S878C52v2Ev();
extern void _ZN6S878C52v3Ev();
extern void _ZN6S878C52v4Ev();
extern void _ZN6S878C52v5Ev();
static  VTBL_ENTRY vtc_S878C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S878C5[0]),
  (VTBL_ENTRY)&_ZN6S878C5D1Ev,
  (VTBL_ENTRY)&_ZN6S878C5D0Ev,
  (VTBL_ENTRY)&_ZN6S878C52v2Ev,
  (VTBL_ENTRY)&_ZN6S878C52v3Ev,
  (VTBL_ENTRY)&_ZN6S878C52v4Ev,
  (VTBL_ENTRY)&_ZN6S878C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S878C5[];
extern  VTBL_ENTRY _ZTV6S878C5[];
Class_Descriptor cd_S878C5 = {  "S878C5", // class name
  0,0,//no base classes
  &(vtc_S878C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S878C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S878C5),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  S878C4  : S878C5 {
  ::S4224C24 s878c4f0[8];
  ::S5309C14_nt s878c4f1[8];
  int s878c4f2;
  virtual  ~S878C4(); // _ZN6S878C4D1Ev
  virtual void  v6(); // _ZN6S878C42v6Ev
  virtual void  v7(); // _ZN6S878C42v7Ev
  virtual void  v8(); // _ZN6S878C42v8Ev
  S878C4(); // tgen
};
//SIG(-1 S878C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S878C4 ::~S878C4(){ note_dtor("S878C4", this);}
void  S878C4 ::v6(){vfunc_called(this, "_ZN6S878C42v6Ev");}
void  S878C4 ::v7(){vfunc_called(this, "_ZN6S878C42v7Ev");}
void  S878C4 ::v8(){vfunc_called(this, "_ZN6S878C42v8Ev");}
S878C4 ::S878C4(){ note_ctor("S878C4", this);} // tgen

static void Test_S878C4()
{
  extern Class_Descriptor cd_S878C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S878C4, buf);
    S878C4 *dp, &lv = *(dp=new (buf) S878C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S878C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S878C4)");
    check_base_class_offset(lv, (S878C5*), 0, "S878C4");
    check_field_offset(lv, s878c4f0, ABISELECT(16,12), "S878C4.s878c4f0");
    check_field_offset(lv, s878c4f1, ABISELECT(144,108), "S878C4.s878c4f1");
    check_field_offset(lv, s878c4f2, ABISELECT(272,172), "S878C4.s878c4f2");
    test_class_info(&lv, &cd_S878C4);
    dp->~S878C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS878C4(Test_S878C4, "S878C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S878C4C1Ev();
extern void _ZN6S878C4D1Ev();
Name_Map name_map_S878C4[] = {
  NSPAIR(_ZN6S878C4C1Ev),
  NSPAIR(_ZN6S878C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S878C5;
extern VTBL_ENTRY _ZTI6S878C5[];
extern  VTBL_ENTRY _ZTV6S878C5[];
static Base_Class bases_S878C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S878C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S878C4[];
extern void _ZN6S878C4D1Ev();
extern void _ZN6S878C4D0Ev();
extern void _ZN6S878C52v2Ev();
extern void _ZN6S878C52v3Ev();
extern void _ZN6S878C52v4Ev();
extern void _ZN6S878C52v5Ev();
extern void _ZN6S878C42v6Ev();
extern void _ZN6S878C42v7Ev();
extern void _ZN6S878C42v8Ev();
static  VTBL_ENTRY vtc_S878C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S878C4[0]),
  (VTBL_ENTRY)&_ZN6S878C4D1Ev,
  (VTBL_ENTRY)&_ZN6S878C4D0Ev,
  (VTBL_ENTRY)&_ZN6S878C52v2Ev,
  (VTBL_ENTRY)&_ZN6S878C52v3Ev,
  (VTBL_ENTRY)&_ZN6S878C52v4Ev,
  (VTBL_ENTRY)&_ZN6S878C52v5Ev,
  (VTBL_ENTRY)&_ZN6S878C42v6Ev,
  (VTBL_ENTRY)&_ZN6S878C42v7Ev,
  (VTBL_ENTRY)&_ZN6S878C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S878C4[];
extern  VTBL_ENTRY _ZTV6S878C4[];
Class_Descriptor cd_S878C4 = {  "S878C4", // class name
  bases_S878C4, 1,
  &(vtc_S878C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S878C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S878C4),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  S878C3  : S878C4 {
  void *s878c3f0[9];
  virtual  ~S878C3(); // _ZN6S878C3D1Ev
  virtual void  v9(); // _ZN6S878C32v9Ev
  S878C3(); // tgen
};
//SIG(-1 S878C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S878C3()
{
  extern Class_Descriptor cd_S878C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S878C3, buf);
    S878C3 *dp, &lv = *(dp=new (buf) S878C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S878C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S878C3)");
    check_base_class_offset(lv, (S878C5*)(S878C4*), 0, "S878C3");
    check_base_class_offset(lv, (S878C4*), 0, "S878C3");
    check_field_offset(lv, s878c3f0, ABISELECT(280,176), "S878C3.s878c3f0");
    test_class_info(&lv, &cd_S878C3);
    dp->~S878C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS878C3(Test_S878C3, "S878C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S878C3C1Ev();
extern void _ZN6S878C3D1Ev();
Name_Map name_map_S878C3[] = {
  NSPAIR(_ZN6S878C3C1Ev),
  NSPAIR(_ZN6S878C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S878C5;
extern VTBL_ENTRY _ZTI6S878C5[];
extern  VTBL_ENTRY _ZTV6S878C5[];
extern Class_Descriptor cd_S878C4;
extern VTBL_ENTRY _ZTI6S878C4[];
extern  VTBL_ENTRY _ZTV6S878C4[];
static Base_Class bases_S878C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S878C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S878C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S878C3[];
extern void _ZN6S878C3D1Ev();
extern void _ZN6S878C3D0Ev();
extern void _ZN6S878C52v2Ev();
extern void _ZN6S878C52v3Ev();
extern void _ZN6S878C52v4Ev();
extern void _ZN6S878C52v5Ev();
extern void _ZN6S878C42v6Ev();
extern void _ZN6S878C42v7Ev();
extern void _ZN6S878C42v8Ev();
extern void _ZN6S878C32v9Ev();
static  VTBL_ENTRY vtc_S878C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S878C3[0]),
  (VTBL_ENTRY)&_ZN6S878C3D1Ev,
  (VTBL_ENTRY)&_ZN6S878C3D0Ev,
  (VTBL_ENTRY)&_ZN6S878C52v2Ev,
  (VTBL_ENTRY)&_ZN6S878C52v3Ev,
  (VTBL_ENTRY)&_ZN6S878C52v4Ev,
  (VTBL_ENTRY)&_ZN6S878C52v5Ev,
  (VTBL_ENTRY)&_ZN6S878C42v6Ev,
  (VTBL_ENTRY)&_ZN6S878C42v7Ev,
  (VTBL_ENTRY)&_ZN6S878C42v8Ev,
  (VTBL_ENTRY)&_ZN6S878C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S878C3[];
extern  VTBL_ENTRY _ZTV6S878C3[];
Class_Descriptor cd_S878C3 = {  "S878C3", // class name
  bases_S878C3, 2,
  &(vtc_S878C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S878C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S878C3),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  S878C2  : S878C3 {
  int s878c2f0[4];
  char s878c2f1;
  int s878c2f2;
  virtual  ~S878C2(); // _ZN6S878C2D1Ev
  virtual void  v10(); // _ZN6S878C23v10Ev
  virtual void  v11(); // _ZN6S878C23v11Ev
  virtual void  v12(); // _ZN6S878C23v12Ev
  virtual void  v13(); // _ZN6S878C23v13Ev
  S878C2(); // tgen
};
//SIG(-1 S878C2) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 Fc Fi} vd v9 v10 v11 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v12 Fp[9]} vd v1 v2 v3 v4 Fi[4] Fc Fi}


 S878C2 ::~S878C2(){ note_dtor("S878C2", this);}
void  S878C2 ::v10(){vfunc_called(this, "_ZN6S878C23v10Ev");}
void  S878C2 ::v11(){vfunc_called(this, "_ZN6S878C23v11Ev");}
void  S878C2 ::v12(){vfunc_called(this, "_ZN6S878C23v12Ev");}
void  S878C2 ::v13(){vfunc_called(this, "_ZN6S878C23v13Ev");}
S878C2 ::S878C2(){ note_ctor("S878C2", this);} // tgen

static void Test_S878C2()
{
  extern Class_Descriptor cd_S878C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,60)];
    init_test(&cd_S878C2, buf);
    S878C2 *dp, &lv = *(dp=new (buf) S878C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,236), "sizeof(S878C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S878C2)");
    check_base_class_offset(lv, (S878C5*)(S878C4*)(S878C3*), 0, "S878C2");
    check_base_class_offset(lv, (S878C4*)(S878C3*), 0, "S878C2");
    check_base_class_offset(lv, (S878C3*), 0, "S878C2");
    check_field_offset(lv, s878c2f0, ABISELECT(352,212), "S878C2.s878c2f0");
    check_field_offset(lv, s878c2f1, ABISELECT(368,228), "S878C2.s878c2f1");
    check_field_offset(lv, s878c2f2, ABISELECT(372,232), "S878C2.s878c2f2");
    test_class_info(&lv, &cd_S878C2);
    dp->~S878C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS878C2(Test_S878C2, "S878C2", ABISELECT(376,236));

#else // __cplusplus

extern void _ZN6S878C2C1Ev();
extern void _ZN6S878C2D1Ev();
Name_Map name_map_S878C2[] = {
  NSPAIR(_ZN6S878C2C1Ev),
  NSPAIR(_ZN6S878C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S878C5;
extern VTBL_ENTRY _ZTI6S878C5[];
extern  VTBL_ENTRY _ZTV6S878C5[];
extern Class_Descriptor cd_S878C4;
extern VTBL_ENTRY _ZTI6S878C4[];
extern  VTBL_ENTRY _ZTV6S878C4[];
extern Class_Descriptor cd_S878C3;
extern VTBL_ENTRY _ZTI6S878C3[];
extern  VTBL_ENTRY _ZTV6S878C3[];
static Base_Class bases_S878C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S878C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S878C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S878C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S878C2[];
extern void _ZN6S878C2D1Ev();
extern void _ZN6S878C2D0Ev();
extern void _ZN6S878C52v2Ev();
extern void _ZN6S878C52v3Ev();
extern void _ZN6S878C52v4Ev();
extern void _ZN6S878C52v5Ev();
extern void _ZN6S878C42v6Ev();
extern void _ZN6S878C42v7Ev();
extern void _ZN6S878C42v8Ev();
extern void _ZN6S878C32v9Ev();
extern void _ZN6S878C23v10Ev();
extern void _ZN6S878C23v11Ev();
extern void _ZN6S878C23v12Ev();
extern void _ZN6S878C23v13Ev();
static  VTBL_ENTRY vtc_S878C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S878C2[0]),
  (VTBL_ENTRY)&_ZN6S878C2D1Ev,
  (VTBL_ENTRY)&_ZN6S878C2D0Ev,
  (VTBL_ENTRY)&_ZN6S878C52v2Ev,
  (VTBL_ENTRY)&_ZN6S878C52v3Ev,
  (VTBL_ENTRY)&_ZN6S878C52v4Ev,
  (VTBL_ENTRY)&_ZN6S878C52v5Ev,
  (VTBL_ENTRY)&_ZN6S878C42v6Ev,
  (VTBL_ENTRY)&_ZN6S878C42v7Ev,
  (VTBL_ENTRY)&_ZN6S878C42v8Ev,
  (VTBL_ENTRY)&_ZN6S878C32v9Ev,
  (VTBL_ENTRY)&_ZN6S878C23v10Ev,
  (VTBL_ENTRY)&_ZN6S878C23v11Ev,
  (VTBL_ENTRY)&_ZN6S878C23v12Ev,
  (VTBL_ENTRY)&_ZN6S878C23v13Ev,
};
extern VTBL_ENTRY _ZTI6S878C2[];
extern  VTBL_ENTRY _ZTV6S878C2[];
Class_Descriptor cd_S878C2 = {  "S878C2", // class name
  bases_S878C2, 3,
  &(vtc_S878C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,236), // object size
  NSPAIRA(_ZTI6S878C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S878C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S878C1  : S878C2 {
  virtual  ~S878C1(); // _ZN6S878C1D1Ev
  virtual void  v1(); // _ZN6S878C12v1Ev
  S878C1(); // tgen
};
//SIG(1 S878C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10 v11 v12 v13 Fi[4] Fc Fi} vd v1}


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

static void Test_S878C1()
{
  extern Class_Descriptor cd_S878C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,60)];
    init_test(&cd_S878C1, buf);
    S878C1 *dp, &lv = *(dp=new (buf) S878C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,236), "sizeof(S878C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S878C1)");
    check_base_class_offset(lv, (S878C5*)(S878C4*)(S878C3*)(S878C2*), 0, "S878C1");
    check_base_class_offset(lv, (S878C4*)(S878C3*)(S878C2*), 0, "S878C1");
    check_base_class_offset(lv, (S878C3*)(S878C2*), 0, "S878C1");
    check_base_class_offset(lv, (S878C2*), 0, "S878C1");
    test_class_info(&lv, &cd_S878C1);
    dp->~S878C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS878C1(Test_S878C1, "S878C1", ABISELECT(376,236));

#else // __cplusplus

extern void _ZN6S878C1C1Ev();
extern void _ZN6S878C1D1Ev();
Name_Map name_map_S878C1[] = {
  NSPAIR(_ZN6S878C1C1Ev),
  NSPAIR(_ZN6S878C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S878C5;
extern VTBL_ENTRY _ZTI6S878C5[];
extern  VTBL_ENTRY _ZTV6S878C5[];
extern Class_Descriptor cd_S878C4;
extern VTBL_ENTRY _ZTI6S878C4[];
extern  VTBL_ENTRY _ZTV6S878C4[];
extern Class_Descriptor cd_S878C3;
extern VTBL_ENTRY _ZTI6S878C3[];
extern  VTBL_ENTRY _ZTV6S878C3[];
extern Class_Descriptor cd_S878C2;
extern VTBL_ENTRY _ZTI6S878C2[];
extern  VTBL_ENTRY _ZTV6S878C2[];
static Base_Class bases_S878C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S878C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S878C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S878C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S878C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S878C1[];
extern void _ZN6S878C1D1Ev();
extern void _ZN6S878C1D0Ev();
extern void _ZN6S878C52v2Ev();
extern void _ZN6S878C52v3Ev();
extern void _ZN6S878C52v4Ev();
extern void _ZN6S878C52v5Ev();
extern void _ZN6S878C42v6Ev();
extern void _ZN6S878C42v7Ev();
extern void _ZN6S878C42v8Ev();
extern void _ZN6S878C32v9Ev();
extern void _ZN6S878C23v10Ev();
extern void _ZN6S878C23v11Ev();
extern void _ZN6S878C23v12Ev();
extern void _ZN6S878C23v13Ev();
extern void _ZN6S878C12v1Ev();
static  VTBL_ENTRY vtc_S878C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S878C1[0]),
  (VTBL_ENTRY)&_ZN6S878C1D1Ev,
  (VTBL_ENTRY)&_ZN6S878C1D0Ev,
  (VTBL_ENTRY)&_ZN6S878C52v2Ev,
  (VTBL_ENTRY)&_ZN6S878C52v3Ev,
  (VTBL_ENTRY)&_ZN6S878C52v4Ev,
  (VTBL_ENTRY)&_ZN6S878C52v5Ev,
  (VTBL_ENTRY)&_ZN6S878C42v6Ev,
  (VTBL_ENTRY)&_ZN6S878C42v7Ev,
  (VTBL_ENTRY)&_ZN6S878C42v8Ev,
  (VTBL_ENTRY)&_ZN6S878C32v9Ev,
  (VTBL_ENTRY)&_ZN6S878C23v10Ev,
  (VTBL_ENTRY)&_ZN6S878C23v11Ev,
  (VTBL_ENTRY)&_ZN6S878C23v12Ev,
  (VTBL_ENTRY)&_ZN6S878C23v13Ev,
  (VTBL_ENTRY)&_ZN6S878C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S878C1[];
extern  VTBL_ENTRY _ZTV6S878C1[];
Class_Descriptor cd_S878C1 = {  "S878C1", // class name
  bases_S878C1, 4,
  &(vtc_S878C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,236), // object size
  NSPAIRA(_ZTI6S878C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S878C1),17, //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  S4373C3  {
  ::S4224C19_nt s4373c3f0;
  int s4373c3f1[2];
  char s4373c3f2;
  virtual  ~S4373C3(); // _ZN7S4373C3D1Ev
  virtual void  v2(); // _ZN7S4373C32v2Ev
  virtual void  v3(); // _ZN7S4373C32v3Ev
  virtual void  v4(); // _ZN7S4373C32v4Ev
  S4373C3(); // tgen
};
//SIG(-1 S4373C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4373C3 ::~S4373C3(){ note_dtor("S4373C3", this);}
void  S4373C3 ::v2(){vfunc_called(this, "_ZN7S4373C32v2Ev");}
void  S4373C3 ::v3(){vfunc_called(this, "_ZN7S4373C32v3Ev");}
void  S4373C3 ::v4(){vfunc_called(this, "_ZN7S4373C32v4Ev");}
S4373C3 ::S4373C3(){ note_ctor("S4373C3", this);} // tgen

static void Test_S4373C3()
{
  extern Class_Descriptor cd_S4373C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4373C3, buf);
    S4373C3 *dp, &lv = *(dp=new (buf) S4373C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4373C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4373C3)");
    check_field_offset(lv, s4373c3f0, ABISELECT(8,4), "S4373C3.s4373c3f0");
    check_field_offset(lv, s4373c3f1, ABISELECT(24,16), "S4373C3.s4373c3f1");
    check_field_offset(lv, s4373c3f2, ABISELECT(32,24), "S4373C3.s4373c3f2");
    test_class_info(&lv, &cd_S4373C3);
    dp->~S4373C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4373C3(Test_S4373C3, "S4373C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4373C3C1Ev();
extern void _ZN7S4373C3D1Ev();
Name_Map name_map_S4373C3[] = {
  NSPAIR(_ZN7S4373C3C1Ev),
  NSPAIR(_ZN7S4373C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4373C3[];
extern void _ZN7S4373C3D1Ev();
extern void _ZN7S4373C3D0Ev();
extern void _ZN7S4373C32v2Ev();
extern void _ZN7S4373C32v3Ev();
extern void _ZN7S4373C32v4Ev();
static  VTBL_ENTRY vtc_S4373C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4373C3[0]),
  (VTBL_ENTRY)&_ZN7S4373C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4373C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4373C3[];
extern  VTBL_ENTRY _ZTV7S4373C3[];
Class_Descriptor cd_S4373C3 = {  "S4373C3", // class name
  0,0,//no base classes
  &(vtc_S4373C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4373C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4373C3),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  S4373C2  : S4373C3 {
  void *s4373c2f0;
  virtual void  v5(); // _ZN7S4373C22v5Ev
  virtual void  v6(); // _ZN7S4373C22v6Ev
  ~S4373C2(); // tgen
  S4373C2(); // tgen
};
//SIG(-1 S4373C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4373C2 ::v5(){vfunc_called(this, "_ZN7S4373C22v5Ev");}
void  S4373C2 ::v6(){vfunc_called(this, "_ZN7S4373C22v6Ev");}
S4373C2 ::~S4373C2(){ note_dtor("S4373C2", this);} // tgen
S4373C2 ::S4373C2(){ note_ctor("S4373C2", this);} // tgen

static void Test_S4373C2()
{
  extern Class_Descriptor cd_S4373C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4373C2, buf);
    S4373C2 *dp, &lv = *(dp=new (buf) S4373C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4373C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4373C2)");
    check_base_class_offset(lv, (S4373C3*), 0, "S4373C2");
    check_field_offset(lv, s4373c2f0, ABISELECT(40,28), "S4373C2.s4373c2f0");
    test_class_info(&lv, &cd_S4373C2);
    dp->~S4373C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4373C2(Test_S4373C2, "S4373C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4373C2C1Ev();
extern void _ZN7S4373C2D1Ev();
Name_Map name_map_S4373C2[] = {
  NSPAIR(_ZN7S4373C2C1Ev),
  NSPAIR(_ZN7S4373C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4373C3;
extern VTBL_ENTRY _ZTI7S4373C3[];
extern  VTBL_ENTRY _ZTV7S4373C3[];
static Base_Class bases_S4373C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4373C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4373C2[];
extern void _ZN7S4373C2D1Ev();
extern void _ZN7S4373C2D0Ev();
extern void _ZN7S4373C32v2Ev();
extern void _ZN7S4373C32v3Ev();
extern void _ZN7S4373C32v4Ev();
extern void _ZN7S4373C22v5Ev();
extern void _ZN7S4373C22v6Ev();
static  VTBL_ENTRY vtc_S4373C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4373C2[0]),
  (VTBL_ENTRY)&_ZN7S4373C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4373C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4373C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4373C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4373C2[];
extern  VTBL_ENTRY _ZTV7S4373C2[];
Class_Descriptor cd_S4373C2 = {  "S4373C2", // class name
  bases_S4373C2, 1,
  &(vtc_S4373C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4373C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4373C2),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  S4373C9  {
  ::S4224C19_nt s4373c9f0;
  int s4373c9f1[2];
};
//SIG(-1 S4373C9) C1{ FC2{ m Fp Fi FC3{ m}} Fi[2]}



static void Test_S4373C9()
{
  {
    init_simple_test("S4373C9");
    S4373C9 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S4373C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4373C9)");
    check_field_offset(lv, s4373c9f0, 0, "S4373C9.s4373c9f0");
    check_field_offset(lv, s4373c9f1, ABISELECT(16,12), "S4373C9.s4373c9f1");
  }
}
static Arrange_To_Call_Me vS4373C9(Test_S4373C9, "S4373C9", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4373C1  : S4373C2 {
  ::S4224C19_nt s4373c1f0;
  int s4373c1f1;
  ::S4224C43_nt s4373c1f2;
  ::S1702C14 s4373c1f3;
  ::S4373C9 s4373c1f4;
  void *s4373c1f5;
  virtual void  v1(); // _ZN7S4373C12v1Ev
  ~S4373C1(); // tgen
  S4373C1(); // tgen
};
//SIG(1 S4373C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC4 Fi FC6{ m Fp} FC7{ Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 FC4 FL Fi[2] FC8{ Fc[4]}} FC9{ FC4 Fi[2]} Fp}


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

static void Test_S4373C1()
{
  extern Class_Descriptor cd_S4373C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,48)];
    init_test(&cd_S4373C1, buf);
    S4373C1 *dp, &lv = *(dp=new (buf) S4373C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,188), "sizeof(S4373C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4373C1)");
    check_base_class_offset(lv, (S4373C3*)(S4373C2*), 0, "S4373C1");
    check_base_class_offset(lv, (S4373C2*), 0, "S4373C1");
    check_field_offset(lv, s4373c1f0, ABISELECT(48,32), "S4373C1.s4373c1f0");
    check_field_offset(lv, s4373c1f1, ABISELECT(64,44), "S4373C1.s4373c1f1");
    check_field_offset(lv, s4373c1f2, ABISELECT(72,48), "S4373C1.s4373c1f2");
    check_field_offset(lv, s4373c1f3, ABISELECT(80,52), "S4373C1.s4373c1f3");
    check_field_offset(lv, s4373c1f4, ABISELECT(224,164), "S4373C1.s4373c1f4");
    check_field_offset(lv, s4373c1f5, ABISELECT(248,184), "S4373C1.s4373c1f5");
    test_class_info(&lv, &cd_S4373C1);
    dp->~S4373C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4373C1(Test_S4373C1, "S4373C1", ABISELECT(256,188));

#else // __cplusplus

extern void _ZN7S4373C1C1Ev();
extern void _ZN7S4373C1D1Ev();
Name_Map name_map_S4373C1[] = {
  NSPAIR(_ZN7S4373C1C1Ev),
  NSPAIR(_ZN7S4373C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4373C3;
extern VTBL_ENTRY _ZTI7S4373C3[];
extern  VTBL_ENTRY _ZTV7S4373C3[];
extern Class_Descriptor cd_S4373C2;
extern VTBL_ENTRY _ZTI7S4373C2[];
extern  VTBL_ENTRY _ZTV7S4373C2[];
static Base_Class bases_S4373C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4373C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4373C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4373C1[];
extern void _ZN7S4373C1D1Ev();
extern void _ZN7S4373C1D0Ev();
extern void _ZN7S4373C32v2Ev();
extern void _ZN7S4373C32v3Ev();
extern void _ZN7S4373C32v4Ev();
extern void _ZN7S4373C22v5Ev();
extern void _ZN7S4373C22v6Ev();
extern void _ZN7S4373C12v1Ev();
static  VTBL_ENTRY vtc_S4373C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4373C1[0]),
  (VTBL_ENTRY)&_ZN7S4373C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4373C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4373C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4373C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4373C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4373C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4373C1[];
extern  VTBL_ENTRY _ZTV7S4373C1[];
Class_Descriptor cd_S4373C1 = {  "S4373C1", // class name
  bases_S4373C1, 2,
  &(vtc_S4373C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,188), // object size
  NSPAIRA(_ZTI7S4373C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4373C1),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  S4372C3  {
  ::S4224C19_nt s4372c3f0;
  int s4372c3f1[2];
  char s4372c3f2;
  virtual  ~S4372C3(); // _ZN7S4372C3D1Ev
  virtual void  v2(); // _ZN7S4372C32v2Ev
  virtual void  v3(); // _ZN7S4372C32v3Ev
  virtual void  v4(); // _ZN7S4372C32v4Ev
  S4372C3(); // tgen
};
//SIG(-1 S4372C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4372C3 ::~S4372C3(){ note_dtor("S4372C3", this);}
void  S4372C3 ::v2(){vfunc_called(this, "_ZN7S4372C32v2Ev");}
void  S4372C3 ::v3(){vfunc_called(this, "_ZN7S4372C32v3Ev");}
void  S4372C3 ::v4(){vfunc_called(this, "_ZN7S4372C32v4Ev");}
S4372C3 ::S4372C3(){ note_ctor("S4372C3", this);} // tgen

static void Test_S4372C3()
{
  extern Class_Descriptor cd_S4372C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4372C3, buf);
    S4372C3 *dp, &lv = *(dp=new (buf) S4372C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4372C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4372C3)");
    check_field_offset(lv, s4372c3f0, ABISELECT(8,4), "S4372C3.s4372c3f0");
    check_field_offset(lv, s4372c3f1, ABISELECT(24,16), "S4372C3.s4372c3f1");
    check_field_offset(lv, s4372c3f2, ABISELECT(32,24), "S4372C3.s4372c3f2");
    test_class_info(&lv, &cd_S4372C3);
    dp->~S4372C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4372C3(Test_S4372C3, "S4372C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4372C3C1Ev();
extern void _ZN7S4372C3D1Ev();
Name_Map name_map_S4372C3[] = {
  NSPAIR(_ZN7S4372C3C1Ev),
  NSPAIR(_ZN7S4372C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4372C3[];
extern void _ZN7S4372C3D1Ev();
extern void _ZN7S4372C3D0Ev();
extern void _ZN7S4372C32v2Ev();
extern void _ZN7S4372C32v3Ev();
extern void _ZN7S4372C32v4Ev();
static  VTBL_ENTRY vtc_S4372C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4372C3[0]),
  (VTBL_ENTRY)&_ZN7S4372C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4372C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4372C3[];
extern  VTBL_ENTRY _ZTV7S4372C3[];
Class_Descriptor cd_S4372C3 = {  "S4372C3", // class name
  0,0,//no base classes
  &(vtc_S4372C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4372C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4372C3),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  S4372C2  : S4372C3 {
  void *s4372c2f0;
  virtual void  v5(); // _ZN7S4372C22v5Ev
  virtual void  v6(); // _ZN7S4372C22v6Ev
  ~S4372C2(); // tgen
  S4372C2(); // tgen
};
//SIG(-1 S4372C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4372C2 ::v5(){vfunc_called(this, "_ZN7S4372C22v5Ev");}
void  S4372C2 ::v6(){vfunc_called(this, "_ZN7S4372C22v6Ev");}
S4372C2 ::~S4372C2(){ note_dtor("S4372C2", this);} // tgen
S4372C2 ::S4372C2(){ note_ctor("S4372C2", this);} // tgen

static void Test_S4372C2()
{
  extern Class_Descriptor cd_S4372C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4372C2, buf);
    S4372C2 *dp, &lv = *(dp=new (buf) S4372C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4372C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4372C2)");
    check_base_class_offset(lv, (S4372C3*), 0, "S4372C2");
    check_field_offset(lv, s4372c2f0, ABISELECT(40,28), "S4372C2.s4372c2f0");
    test_class_info(&lv, &cd_S4372C2);
    dp->~S4372C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4372C2(Test_S4372C2, "S4372C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4372C2C1Ev();
extern void _ZN7S4372C2D1Ev();
Name_Map name_map_S4372C2[] = {
  NSPAIR(_ZN7S4372C2C1Ev),
  NSPAIR(_ZN7S4372C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4372C3;
extern VTBL_ENTRY _ZTI7S4372C3[];
extern  VTBL_ENTRY _ZTV7S4372C3[];
static Base_Class bases_S4372C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4372C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4372C2[];
extern void _ZN7S4372C2D1Ev();
extern void _ZN7S4372C2D0Ev();
extern void _ZN7S4372C32v2Ev();
extern void _ZN7S4372C32v3Ev();
extern void _ZN7S4372C32v4Ev();
extern void _ZN7S4372C22v5Ev();
extern void _ZN7S4372C22v6Ev();
static  VTBL_ENTRY vtc_S4372C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4372C2[0]),
  (VTBL_ENTRY)&_ZN7S4372C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4372C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4372C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4372C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4372C2[];
extern  VTBL_ENTRY _ZTV7S4372C2[];
Class_Descriptor cd_S4372C2 = {  "S4372C2", // class name
  bases_S4372C2, 1,
  &(vtc_S4372C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4372C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4372C2),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  S4372C1  : S4372C2 {
  ::S4224C19_nt s4372c1f0;
  int s4372c1f1;
  ::S4224C43_nt s4372c1f2;
  ::S1701C14 s4372c1f3;
  ::S4373C9 s4372c1f4;
  void *s4372c1f5;
  virtual void  v1(); // _ZN7S4372C12v1Ev
  ~S4372C1(); // tgen
  S4372C1(); // tgen
};
//SIG(1 S4372C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC4 Fi FC6{ m Fp} FC7{ Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 FC4 Fl Fi[2] FC8{ Fc[4]}} FC9{ FC4 Fi[2]} Fp}


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

static void Test_S4372C1()
{
  extern Class_Descriptor cd_S4372C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,47)];
    init_test(&cd_S4372C1, buf);
    S4372C1 *dp, &lv = *(dp=new (buf) S4372C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,184), "sizeof(S4372C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4372C1)");
    check_base_class_offset(lv, (S4372C3*)(S4372C2*), 0, "S4372C1");
    check_base_class_offset(lv, (S4372C2*), 0, "S4372C1");
    check_field_offset(lv, s4372c1f0, ABISELECT(48,32), "S4372C1.s4372c1f0");
    check_field_offset(lv, s4372c1f1, ABISELECT(64,44), "S4372C1.s4372c1f1");
    check_field_offset(lv, s4372c1f2, ABISELECT(72,48), "S4372C1.s4372c1f2");
    check_field_offset(lv, s4372c1f3, ABISELECT(80,52), "S4372C1.s4372c1f3");
    check_field_offset(lv, s4372c1f4, ABISELECT(224,160), "S4372C1.s4372c1f4");
    check_field_offset(lv, s4372c1f5, ABISELECT(248,180), "S4372C1.s4372c1f5");
    test_class_info(&lv, &cd_S4372C1);
    dp->~S4372C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4372C1(Test_S4372C1, "S4372C1", ABISELECT(256,184));

#else // __cplusplus

extern void _ZN7S4372C1C1Ev();
extern void _ZN7S4372C1D1Ev();
Name_Map name_map_S4372C1[] = {
  NSPAIR(_ZN7S4372C1C1Ev),
  NSPAIR(_ZN7S4372C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4372C3;
extern VTBL_ENTRY _ZTI7S4372C3[];
extern  VTBL_ENTRY _ZTV7S4372C3[];
extern Class_Descriptor cd_S4372C2;
extern VTBL_ENTRY _ZTI7S4372C2[];
extern  VTBL_ENTRY _ZTV7S4372C2[];
static Base_Class bases_S4372C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4372C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4372C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4372C1[];
extern void _ZN7S4372C1D1Ev();
extern void _ZN7S4372C1D0Ev();
extern void _ZN7S4372C32v2Ev();
extern void _ZN7S4372C32v3Ev();
extern void _ZN7S4372C32v4Ev();
extern void _ZN7S4372C22v5Ev();
extern void _ZN7S4372C22v6Ev();
extern void _ZN7S4372C12v1Ev();
static  VTBL_ENTRY vtc_S4372C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4372C1[0]),
  (VTBL_ENTRY)&_ZN7S4372C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4372C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4372C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4372C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4372C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4372C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4372C1[];
extern  VTBL_ENTRY _ZTV7S4372C1[];
Class_Descriptor cd_S4372C1 = {  "S4372C1", // class name
  bases_S4372C1, 2,
  &(vtc_S4372C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,184), // object size
  NSPAIRA(_ZTI7S4372C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4372C1),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  S875C5  {
  char s875c5f0;
  int s875c5f1;
  virtual  ~S875C5(); // _ZN6S875C5D1Ev
  virtual void  v2(); // _ZN6S875C52v2Ev
  virtual void  v3(); // _ZN6S875C52v3Ev
  virtual void  v4(); // _ZN6S875C52v4Ev
  virtual void  v5(); // _ZN6S875C52v5Ev
  S875C5(); // tgen
};
//SIG(-1 S875C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S875C5 ::~S875C5(){ note_dtor("S875C5", this);}
void  S875C5 ::v2(){vfunc_called(this, "_ZN6S875C52v2Ev");}
void  S875C5 ::v3(){vfunc_called(this, "_ZN6S875C52v3Ev");}
void  S875C5 ::v4(){vfunc_called(this, "_ZN6S875C52v4Ev");}
void  S875C5 ::v5(){vfunc_called(this, "_ZN6S875C52v5Ev");}
S875C5 ::S875C5(){ note_ctor("S875C5", this);} // tgen

static void Test_S875C5()
{
  extern Class_Descriptor cd_S875C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S875C5, buf);
    S875C5 *dp, &lv = *(dp=new (buf) S875C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S875C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S875C5)");
    check_field_offset(lv, s875c5f0, ABISELECT(8,4), "S875C5.s875c5f0");
    check_field_offset(lv, s875c5f1, ABISELECT(12,8), "S875C5.s875c5f1");
    test_class_info(&lv, &cd_S875C5);
    dp->~S875C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS875C5(Test_S875C5, "S875C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S875C5C1Ev();
extern void _ZN6S875C5D1Ev();
Name_Map name_map_S875C5[] = {
  NSPAIR(_ZN6S875C5C1Ev),
  NSPAIR(_ZN6S875C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S875C5[];
extern void _ZN6S875C5D1Ev();
extern void _ZN6S875C5D0Ev();
extern void _ZN6S875C52v2Ev();
extern void _ZN6S875C52v3Ev();
extern void _ZN6S875C52v4Ev();
extern void _ZN6S875C52v5Ev();
static  VTBL_ENTRY vtc_S875C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S875C5[0]),
  (VTBL_ENTRY)&_ZN6S875C5D1Ev,
  (VTBL_ENTRY)&_ZN6S875C5D0Ev,
  (VTBL_ENTRY)&_ZN6S875C52v2Ev,
  (VTBL_ENTRY)&_ZN6S875C52v3Ev,
  (VTBL_ENTRY)&_ZN6S875C52v4Ev,
  (VTBL_ENTRY)&_ZN6S875C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S875C5[];
extern  VTBL_ENTRY _ZTV6S875C5[];
Class_Descriptor cd_S875C5 = {  "S875C5", // class name
  0,0,//no base classes
  &(vtc_S875C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S875C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S875C5),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  S875C4  : S875C5 {
  ::S4224C24 s875c4f0[8];
  ::S5309C14_nt s875c4f1[8];
  int s875c4f2;
  virtual  ~S875C4(); // _ZN6S875C4D1Ev
  virtual void  v6(); // _ZN6S875C42v6Ev
  virtual void  v7(); // _ZN6S875C42v7Ev
  virtual void  v8(); // _ZN6S875C42v8Ev
  S875C4(); // tgen
};
//SIG(-1 S875C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S875C4 ::~S875C4(){ note_dtor("S875C4", this);}
void  S875C4 ::v6(){vfunc_called(this, "_ZN6S875C42v6Ev");}
void  S875C4 ::v7(){vfunc_called(this, "_ZN6S875C42v7Ev");}
void  S875C4 ::v8(){vfunc_called(this, "_ZN6S875C42v8Ev");}
S875C4 ::S875C4(){ note_ctor("S875C4", this);} // tgen

static void Test_S875C4()
{
  extern Class_Descriptor cd_S875C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S875C4, buf);
    S875C4 *dp, &lv = *(dp=new (buf) S875C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S875C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S875C4)");
    check_base_class_offset(lv, (S875C5*), 0, "S875C4");
    check_field_offset(lv, s875c4f0, ABISELECT(16,12), "S875C4.s875c4f0");
    check_field_offset(lv, s875c4f1, ABISELECT(144,108), "S875C4.s875c4f1");
    check_field_offset(lv, s875c4f2, ABISELECT(272,172), "S875C4.s875c4f2");
    test_class_info(&lv, &cd_S875C4);
    dp->~S875C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS875C4(Test_S875C4, "S875C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S875C4C1Ev();
extern void _ZN6S875C4D1Ev();
Name_Map name_map_S875C4[] = {
  NSPAIR(_ZN6S875C4C1Ev),
  NSPAIR(_ZN6S875C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S875C5;
extern VTBL_ENTRY _ZTI6S875C5[];
extern  VTBL_ENTRY _ZTV6S875C5[];
static Base_Class bases_S875C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S875C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S875C4[];
extern void _ZN6S875C4D1Ev();
extern void _ZN6S875C4D0Ev();
extern void _ZN6S875C52v2Ev();
extern void _ZN6S875C52v3Ev();
extern void _ZN6S875C52v4Ev();
extern void _ZN6S875C52v5Ev();
extern void _ZN6S875C42v6Ev();
extern void _ZN6S875C42v7Ev();
extern void _ZN6S875C42v8Ev();
static  VTBL_ENTRY vtc_S875C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S875C4[0]),
  (VTBL_ENTRY)&_ZN6S875C4D1Ev,
  (VTBL_ENTRY)&_ZN6S875C4D0Ev,
  (VTBL_ENTRY)&_ZN6S875C52v2Ev,
  (VTBL_ENTRY)&_ZN6S875C52v3Ev,
  (VTBL_ENTRY)&_ZN6S875C52v4Ev,
  (VTBL_ENTRY)&_ZN6S875C52v5Ev,
  (VTBL_ENTRY)&_ZN6S875C42v6Ev,
  (VTBL_ENTRY)&_ZN6S875C42v7Ev,
  (VTBL_ENTRY)&_ZN6S875C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S875C4[];
extern  VTBL_ENTRY _ZTV6S875C4[];
Class_Descriptor cd_S875C4 = {  "S875C4", // class name
  bases_S875C4, 1,
  &(vtc_S875C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S875C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S875C4),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  S875C3  : S875C4 {
  void *s875c3f0[9];
  virtual  ~S875C3(); // _ZN6S875C3D1Ev
  virtual void  v9(); // _ZN6S875C32v9Ev
  S875C3(); // tgen
};
//SIG(-1 S875C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S875C3()
{
  extern Class_Descriptor cd_S875C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S875C3, buf);
    S875C3 *dp, &lv = *(dp=new (buf) S875C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S875C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S875C3)");
    check_base_class_offset(lv, (S875C5*)(S875C4*), 0, "S875C3");
    check_base_class_offset(lv, (S875C4*), 0, "S875C3");
    check_field_offset(lv, s875c3f0, ABISELECT(280,176), "S875C3.s875c3f0");
    test_class_info(&lv, &cd_S875C3);
    dp->~S875C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS875C3(Test_S875C3, "S875C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S875C3C1Ev();
extern void _ZN6S875C3D1Ev();
Name_Map name_map_S875C3[] = {
  NSPAIR(_ZN6S875C3C1Ev),
  NSPAIR(_ZN6S875C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S875C5;
extern VTBL_ENTRY _ZTI6S875C5[];
extern  VTBL_ENTRY _ZTV6S875C5[];
extern Class_Descriptor cd_S875C4;
extern VTBL_ENTRY _ZTI6S875C4[];
extern  VTBL_ENTRY _ZTV6S875C4[];
static Base_Class bases_S875C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S875C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S875C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S875C3[];
extern void _ZN6S875C3D1Ev();
extern void _ZN6S875C3D0Ev();
extern void _ZN6S875C52v2Ev();
extern void _ZN6S875C52v3Ev();
extern void _ZN6S875C52v4Ev();
extern void _ZN6S875C52v5Ev();
extern void _ZN6S875C42v6Ev();
extern void _ZN6S875C42v7Ev();
extern void _ZN6S875C42v8Ev();
extern void _ZN6S875C32v9Ev();
static  VTBL_ENTRY vtc_S875C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S875C3[0]),
  (VTBL_ENTRY)&_ZN6S875C3D1Ev,
  (VTBL_ENTRY)&_ZN6S875C3D0Ev,
  (VTBL_ENTRY)&_ZN6S875C52v2Ev,
  (VTBL_ENTRY)&_ZN6S875C52v3Ev,
  (VTBL_ENTRY)&_ZN6S875C52v4Ev,
  (VTBL_ENTRY)&_ZN6S875C52v5Ev,
  (VTBL_ENTRY)&_ZN6S875C42v6Ev,
  (VTBL_ENTRY)&_ZN6S875C42v7Ev,
  (VTBL_ENTRY)&_ZN6S875C42v8Ev,
  (VTBL_ENTRY)&_ZN6S875C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S875C3[];
extern  VTBL_ENTRY _ZTV6S875C3[];
Class_Descriptor cd_S875C3 = {  "S875C3", // class name
  bases_S875C3, 2,
  &(vtc_S875C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S875C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S875C3),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  S875C2  : S875C3 {
  int s875c2f0[6];
  void *s875c2f1[2];
  virtual  ~S875C2(); // _ZN6S875C2D1Ev
  virtual void  v10(); // _ZN6S875C23v10Ev
  virtual void  v11(); // _ZN6S875C23v11Ev
  virtual void  v12(); // _ZN6S875C23v12Ev
  S875C2(); // tgen
};
//SIG(-1 S875C2) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 Fc Fi} vd v8 v9 v10 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v11 Fp[9]} vd v1 v2 v3 Fi[6] Fp[2]}


 S875C2 ::~S875C2(){ note_dtor("S875C2", this);}
void  S875C2 ::v10(){vfunc_called(this, "_ZN6S875C23v10Ev");}
void  S875C2 ::v11(){vfunc_called(this, "_ZN6S875C23v11Ev");}
void  S875C2 ::v12(){vfunc_called(this, "_ZN6S875C23v12Ev");}
S875C2 ::S875C2(){ note_ctor("S875C2", this);} // tgen

static void Test_S875C2()
{
  extern Class_Descriptor cd_S875C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,62)];
    init_test(&cd_S875C2, buf);
    S875C2 *dp, &lv = *(dp=new (buf) S875C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,244), "sizeof(S875C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S875C2)");
    check_base_class_offset(lv, (S875C5*)(S875C4*)(S875C3*), 0, "S875C2");
    check_base_class_offset(lv, (S875C4*)(S875C3*), 0, "S875C2");
    check_base_class_offset(lv, (S875C3*), 0, "S875C2");
    check_field_offset(lv, s875c2f0, ABISELECT(352,212), "S875C2.s875c2f0");
    check_field_offset(lv, s875c2f1, ABISELECT(376,236), "S875C2.s875c2f1");
    test_class_info(&lv, &cd_S875C2);
    dp->~S875C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS875C2(Test_S875C2, "S875C2", ABISELECT(392,244));

#else // __cplusplus

extern void _ZN6S875C2C1Ev();
extern void _ZN6S875C2D1Ev();
Name_Map name_map_S875C2[] = {
  NSPAIR(_ZN6S875C2C1Ev),
  NSPAIR(_ZN6S875C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S875C5;
extern VTBL_ENTRY _ZTI6S875C5[];
extern  VTBL_ENTRY _ZTV6S875C5[];
extern Class_Descriptor cd_S875C4;
extern VTBL_ENTRY _ZTI6S875C4[];
extern  VTBL_ENTRY _ZTV6S875C4[];
extern Class_Descriptor cd_S875C3;
extern VTBL_ENTRY _ZTI6S875C3[];
extern  VTBL_ENTRY _ZTV6S875C3[];
static Base_Class bases_S875C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S875C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S875C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S875C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S875C2[];
extern void _ZN6S875C2D1Ev();
extern void _ZN6S875C2D0Ev();
extern void _ZN6S875C52v2Ev();
extern void _ZN6S875C52v3Ev();
extern void _ZN6S875C52v4Ev();
extern void _ZN6S875C52v5Ev();
extern void _ZN6S875C42v6Ev();
extern void _ZN6S875C42v7Ev();
extern void _ZN6S875C42v8Ev();
extern void _ZN6S875C32v9Ev();
extern void _ZN6S875C23v10Ev();
extern void _ZN6S875C23v11Ev();
extern void _ZN6S875C23v12Ev();
static  VTBL_ENTRY vtc_S875C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S875C2[0]),
  (VTBL_ENTRY)&_ZN6S875C2D1Ev,
  (VTBL_ENTRY)&_ZN6S875C2D0Ev,
  (VTBL_ENTRY)&_ZN6S875C52v2Ev,
  (VTBL_ENTRY)&_ZN6S875C52v3Ev,
  (VTBL_ENTRY)&_ZN6S875C52v4Ev,
  (VTBL_ENTRY)&_ZN6S875C52v5Ev,
  (VTBL_ENTRY)&_ZN6S875C42v6Ev,
  (VTBL_ENTRY)&_ZN6S875C42v7Ev,
  (VTBL_ENTRY)&_ZN6S875C42v8Ev,
  (VTBL_ENTRY)&_ZN6S875C32v9Ev,
  (VTBL_ENTRY)&_ZN6S875C23v10Ev,
  (VTBL_ENTRY)&_ZN6S875C23v11Ev,
  (VTBL_ENTRY)&_ZN6S875C23v12Ev,
};
extern VTBL_ENTRY _ZTI6S875C2[];
extern  VTBL_ENTRY _ZTV6S875C2[];
Class_Descriptor cd_S875C2 = {  "S875C2", // class name
  bases_S875C2, 3,
  &(vtc_S875C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,244), // object size
  NSPAIRA(_ZTI6S875C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S875C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S875C1  : S875C2 {
  virtual  ~S875C1(); // _ZN6S875C1D1Ev
  virtual void  v1(); // _ZN6S875C12v1Ev
  S875C1(); // tgen
};
//SIG(1 S875C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10 v11 v12 Fi[6] Fp[2]} vd v1}


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

static void Test_S875C1()
{
  extern Class_Descriptor cd_S875C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,62)];
    init_test(&cd_S875C1, buf);
    S875C1 *dp, &lv = *(dp=new (buf) S875C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,244), "sizeof(S875C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S875C1)");
    check_base_class_offset(lv, (S875C5*)(S875C4*)(S875C3*)(S875C2*), 0, "S875C1");
    check_base_class_offset(lv, (S875C4*)(S875C3*)(S875C2*), 0, "S875C1");
    check_base_class_offset(lv, (S875C3*)(S875C2*), 0, "S875C1");
    check_base_class_offset(lv, (S875C2*), 0, "S875C1");
    test_class_info(&lv, &cd_S875C1);
    dp->~S875C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS875C1(Test_S875C1, "S875C1", ABISELECT(392,244));

#else // __cplusplus

extern void _ZN6S875C1C1Ev();
extern void _ZN6S875C1D1Ev();
Name_Map name_map_S875C1[] = {
  NSPAIR(_ZN6S875C1C1Ev),
  NSPAIR(_ZN6S875C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S875C5;
extern VTBL_ENTRY _ZTI6S875C5[];
extern  VTBL_ENTRY _ZTV6S875C5[];
extern Class_Descriptor cd_S875C4;
extern VTBL_ENTRY _ZTI6S875C4[];
extern  VTBL_ENTRY _ZTV6S875C4[];
extern Class_Descriptor cd_S875C3;
extern VTBL_ENTRY _ZTI6S875C3[];
extern  VTBL_ENTRY _ZTV6S875C3[];
extern Class_Descriptor cd_S875C2;
extern VTBL_ENTRY _ZTI6S875C2[];
extern  VTBL_ENTRY _ZTV6S875C2[];
static Base_Class bases_S875C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S875C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S875C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S875C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S875C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S875C1[];
extern void _ZN6S875C1D1Ev();
extern void _ZN6S875C1D0Ev();
extern void _ZN6S875C52v2Ev();
extern void _ZN6S875C52v3Ev();
extern void _ZN6S875C52v4Ev();
extern void _ZN6S875C52v5Ev();
extern void _ZN6S875C42v6Ev();
extern void _ZN6S875C42v7Ev();
extern void _ZN6S875C42v8Ev();
extern void _ZN6S875C32v9Ev();
extern void _ZN6S875C23v10Ev();
extern void _ZN6S875C23v11Ev();
extern void _ZN6S875C23v12Ev();
extern void _ZN6S875C12v1Ev();
static  VTBL_ENTRY vtc_S875C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S875C1[0]),
  (VTBL_ENTRY)&_ZN6S875C1D1Ev,
  (VTBL_ENTRY)&_ZN6S875C1D0Ev,
  (VTBL_ENTRY)&_ZN6S875C52v2Ev,
  (VTBL_ENTRY)&_ZN6S875C52v3Ev,
  (VTBL_ENTRY)&_ZN6S875C52v4Ev,
  (VTBL_ENTRY)&_ZN6S875C52v5Ev,
  (VTBL_ENTRY)&_ZN6S875C42v6Ev,
  (VTBL_ENTRY)&_ZN6S875C42v7Ev,
  (VTBL_ENTRY)&_ZN6S875C42v8Ev,
  (VTBL_ENTRY)&_ZN6S875C32v9Ev,
  (VTBL_ENTRY)&_ZN6S875C23v10Ev,
  (VTBL_ENTRY)&_ZN6S875C23v11Ev,
  (VTBL_ENTRY)&_ZN6S875C23v12Ev,
  (VTBL_ENTRY)&_ZN6S875C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S875C1[];
extern  VTBL_ENTRY _ZTV6S875C1[];
Class_Descriptor cd_S875C1 = {  "S875C1", // class name
  bases_S875C1, 4,
  &(vtc_S875C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,244), // object size
  NSPAIRA(_ZTI6S875C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S875C1),16, //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  S882C5  {
  char s882c5f0;
  int s882c5f1;
  virtual  ~S882C5(); // _ZN6S882C5D1Ev
  virtual void  v2(); // _ZN6S882C52v2Ev
  virtual void  v3(); // _ZN6S882C52v3Ev
  virtual void  v4(); // _ZN6S882C52v4Ev
  virtual void  v5(); // _ZN6S882C52v5Ev
  S882C5(); // tgen
};
//SIG(-1 S882C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S882C5 ::~S882C5(){ note_dtor("S882C5", this);}
void  S882C5 ::v2(){vfunc_called(this, "_ZN6S882C52v2Ev");}
void  S882C5 ::v3(){vfunc_called(this, "_ZN6S882C52v3Ev");}
void  S882C5 ::v4(){vfunc_called(this, "_ZN6S882C52v4Ev");}
void  S882C5 ::v5(){vfunc_called(this, "_ZN6S882C52v5Ev");}
S882C5 ::S882C5(){ note_ctor("S882C5", this);} // tgen

static void Test_S882C5()
{
  extern Class_Descriptor cd_S882C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S882C5, buf);
    S882C5 *dp, &lv = *(dp=new (buf) S882C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S882C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S882C5)");
    check_field_offset(lv, s882c5f0, ABISELECT(8,4), "S882C5.s882c5f0");
    check_field_offset(lv, s882c5f1, ABISELECT(12,8), "S882C5.s882c5f1");
    test_class_info(&lv, &cd_S882C5);
    dp->~S882C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS882C5(Test_S882C5, "S882C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S882C5C1Ev();
extern void _ZN6S882C5D1Ev();
Name_Map name_map_S882C5[] = {
  NSPAIR(_ZN6S882C5C1Ev),
  NSPAIR(_ZN6S882C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S882C5[];
extern void _ZN6S882C5D1Ev();
extern void _ZN6S882C5D0Ev();
extern void _ZN6S882C52v2Ev();
extern void _ZN6S882C52v3Ev();
extern void _ZN6S882C52v4Ev();
extern void _ZN6S882C52v5Ev();
static  VTBL_ENTRY vtc_S882C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S882C5[0]),
  (VTBL_ENTRY)&_ZN6S882C5D1Ev,
  (VTBL_ENTRY)&_ZN6S882C5D0Ev,
  (VTBL_ENTRY)&_ZN6S882C52v2Ev,
  (VTBL_ENTRY)&_ZN6S882C52v3Ev,
  (VTBL_ENTRY)&_ZN6S882C52v4Ev,
  (VTBL_ENTRY)&_ZN6S882C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S882C5[];
extern  VTBL_ENTRY _ZTV6S882C5[];
Class_Descriptor cd_S882C5 = {  "S882C5", // class name
  0,0,//no base classes
  &(vtc_S882C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S882C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S882C5),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  S882C4  : S882C5 {
  ::S4224C24 s882c4f0[8];
  ::S5309C14_nt s882c4f1[8];
  int s882c4f2;
  virtual  ~S882C4(); // _ZN6S882C4D1Ev
  virtual void  v6(); // _ZN6S882C42v6Ev
  virtual void  v7(); // _ZN6S882C42v7Ev
  virtual void  v8(); // _ZN6S882C42v8Ev
  S882C4(); // tgen
};
//SIG(-1 S882C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S882C4 ::~S882C4(){ note_dtor("S882C4", this);}
void  S882C4 ::v6(){vfunc_called(this, "_ZN6S882C42v6Ev");}
void  S882C4 ::v7(){vfunc_called(this, "_ZN6S882C42v7Ev");}
void  S882C4 ::v8(){vfunc_called(this, "_ZN6S882C42v8Ev");}
S882C4 ::S882C4(){ note_ctor("S882C4", this);} // tgen

static void Test_S882C4()
{
  extern Class_Descriptor cd_S882C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S882C4, buf);
    S882C4 *dp, &lv = *(dp=new (buf) S882C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S882C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S882C4)");
    check_base_class_offset(lv, (S882C5*), 0, "S882C4");
    check_field_offset(lv, s882c4f0, ABISELECT(16,12), "S882C4.s882c4f0");
    check_field_offset(lv, s882c4f1, ABISELECT(144,108), "S882C4.s882c4f1");
    check_field_offset(lv, s882c4f2, ABISELECT(272,172), "S882C4.s882c4f2");
    test_class_info(&lv, &cd_S882C4);
    dp->~S882C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS882C4(Test_S882C4, "S882C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S882C4C1Ev();
extern void _ZN6S882C4D1Ev();
Name_Map name_map_S882C4[] = {
  NSPAIR(_ZN6S882C4C1Ev),
  NSPAIR(_ZN6S882C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S882C5;
extern VTBL_ENTRY _ZTI6S882C5[];
extern  VTBL_ENTRY _ZTV6S882C5[];
static Base_Class bases_S882C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S882C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S882C4[];
extern void _ZN6S882C4D1Ev();
extern void _ZN6S882C4D0Ev();
extern void _ZN6S882C52v2Ev();
extern void _ZN6S882C52v3Ev();
extern void _ZN6S882C52v4Ev();
extern void _ZN6S882C52v5Ev();
extern void _ZN6S882C42v6Ev();
extern void _ZN6S882C42v7Ev();
extern void _ZN6S882C42v8Ev();
static  VTBL_ENTRY vtc_S882C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S882C4[0]),
  (VTBL_ENTRY)&_ZN6S882C4D1Ev,
  (VTBL_ENTRY)&_ZN6S882C4D0Ev,
  (VTBL_ENTRY)&_ZN6S882C52v2Ev,
  (VTBL_ENTRY)&_ZN6S882C52v3Ev,
  (VTBL_ENTRY)&_ZN6S882C52v4Ev,
  (VTBL_ENTRY)&_ZN6S882C52v5Ev,
  (VTBL_ENTRY)&_ZN6S882C42v6Ev,
  (VTBL_ENTRY)&_ZN6S882C42v7Ev,
  (VTBL_ENTRY)&_ZN6S882C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S882C4[];
extern  VTBL_ENTRY _ZTV6S882C4[];
Class_Descriptor cd_S882C4 = {  "S882C4", // class name
  bases_S882C4, 1,
  &(vtc_S882C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S882C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S882C4),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  S882C3  : S882C4 {
  void *s882c3f0[9];
  virtual  ~S882C3(); // _ZN6S882C3D1Ev
  virtual void  v9(); // _ZN6S882C32v9Ev
  S882C3(); // tgen
};
//SIG(-1 S882C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S882C3()
{
  extern Class_Descriptor cd_S882C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S882C3, buf);
    S882C3 *dp, &lv = *(dp=new (buf) S882C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S882C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S882C3)");
    check_base_class_offset(lv, (S882C5*)(S882C4*), 0, "S882C3");
    check_base_class_offset(lv, (S882C4*), 0, "S882C3");
    check_field_offset(lv, s882c3f0, ABISELECT(280,176), "S882C3.s882c3f0");
    test_class_info(&lv, &cd_S882C3);
    dp->~S882C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS882C3(Test_S882C3, "S882C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S882C3C1Ev();
extern void _ZN6S882C3D1Ev();
Name_Map name_map_S882C3[] = {
  NSPAIR(_ZN6S882C3C1Ev),
  NSPAIR(_ZN6S882C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S882C5;
extern VTBL_ENTRY _ZTI6S882C5[];
extern  VTBL_ENTRY _ZTV6S882C5[];
extern Class_Descriptor cd_S882C4;
extern VTBL_ENTRY _ZTI6S882C4[];
extern  VTBL_ENTRY _ZTV6S882C4[];
static Base_Class bases_S882C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S882C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S882C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S882C3[];
extern void _ZN6S882C3D1Ev();
extern void _ZN6S882C3D0Ev();
extern void _ZN6S882C52v2Ev();
extern void _ZN6S882C52v3Ev();
extern void _ZN6S882C52v4Ev();
extern void _ZN6S882C52v5Ev();
extern void _ZN6S882C42v6Ev();
extern void _ZN6S882C42v7Ev();
extern void _ZN6S882C42v8Ev();
extern void _ZN6S882C32v9Ev();
static  VTBL_ENTRY vtc_S882C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S882C3[0]),
  (VTBL_ENTRY)&_ZN6S882C3D1Ev,
  (VTBL_ENTRY)&_ZN6S882C3D0Ev,
  (VTBL_ENTRY)&_ZN6S882C52v2Ev,
  (VTBL_ENTRY)&_ZN6S882C52v3Ev,
  (VTBL_ENTRY)&_ZN6S882C52v4Ev,
  (VTBL_ENTRY)&_ZN6S882C52v5Ev,
  (VTBL_ENTRY)&_ZN6S882C42v6Ev,
  (VTBL_ENTRY)&_ZN6S882C42v7Ev,
  (VTBL_ENTRY)&_ZN6S882C42v8Ev,
  (VTBL_ENTRY)&_ZN6S882C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S882C3[];
extern  VTBL_ENTRY _ZTV6S882C3[];
Class_Descriptor cd_S882C3 = {  "S882C3", // class name
  bases_S882C3, 2,
  &(vtc_S882C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S882C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S882C3),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  S882C2  : S882C3 {
  virtual  ~S882C2(); // _ZN6S882C2D1Ev
  virtual void  v10(); // _ZN6S882C23v10Ev
  S882C2(); // tgen
};
//SIG(-1 S882C2) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v1}


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

static void Test_S882C2()
{
  extern Class_Descriptor cd_S882C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S882C2, buf);
    S882C2 *dp, &lv = *(dp=new (buf) S882C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S882C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S882C2)");
    check_base_class_offset(lv, (S882C5*)(S882C4*)(S882C3*), 0, "S882C2");
    check_base_class_offset(lv, (S882C4*)(S882C3*), 0, "S882C2");
    check_base_class_offset(lv, (S882C3*), 0, "S882C2");
    test_class_info(&lv, &cd_S882C2);
    dp->~S882C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS882C2(Test_S882C2, "S882C2", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S882C2C1Ev();
extern void _ZN6S882C2D1Ev();
Name_Map name_map_S882C2[] = {
  NSPAIR(_ZN6S882C2C1Ev),
  NSPAIR(_ZN6S882C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S882C5;
extern VTBL_ENTRY _ZTI6S882C5[];
extern  VTBL_ENTRY _ZTV6S882C5[];
extern Class_Descriptor cd_S882C4;
extern VTBL_ENTRY _ZTI6S882C4[];
extern  VTBL_ENTRY _ZTV6S882C4[];
extern Class_Descriptor cd_S882C3;
extern VTBL_ENTRY _ZTI6S882C3[];
extern  VTBL_ENTRY _ZTV6S882C3[];
static Base_Class bases_S882C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S882C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S882C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S882C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S882C2[];
extern void _ZN6S882C2D1Ev();
extern void _ZN6S882C2D0Ev();
extern void _ZN6S882C52v2Ev();
extern void _ZN6S882C52v3Ev();
extern void _ZN6S882C52v4Ev();
extern void _ZN6S882C52v5Ev();
extern void _ZN6S882C42v6Ev();
extern void _ZN6S882C42v7Ev();
extern void _ZN6S882C42v8Ev();
extern void _ZN6S882C32v9Ev();
extern void _ZN6S882C23v10Ev();
static  VTBL_ENTRY vtc_S882C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S882C2[0]),
  (VTBL_ENTRY)&_ZN6S882C2D1Ev,
  (VTBL_ENTRY)&_ZN6S882C2D0Ev,
  (VTBL_ENTRY)&_ZN6S882C52v2Ev,
  (VTBL_ENTRY)&_ZN6S882C52v3Ev,
  (VTBL_ENTRY)&_ZN6S882C52v4Ev,
  (VTBL_ENTRY)&_ZN6S882C52v5Ev,
  (VTBL_ENTRY)&_ZN6S882C42v6Ev,
  (VTBL_ENTRY)&_ZN6S882C42v7Ev,
  (VTBL_ENTRY)&_ZN6S882C42v8Ev,
  (VTBL_ENTRY)&_ZN6S882C32v9Ev,
  (VTBL_ENTRY)&_ZN6S882C23v10Ev,
};
extern VTBL_ENTRY _ZTI6S882C2[];
extern  VTBL_ENTRY _ZTV6S882C2[];
Class_Descriptor cd_S882C2 = {  "S882C2", // class name
  bases_S882C2, 3,
  &(vtc_S882C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S882C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S882C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S882C1  : S882C2 {
  void *s882c1f0[2];
  __tsi64 s882c1f1[2];
  int s882c1f2[2];
  virtual  ~S882C1(); // _ZN6S882C1D1Ev
  virtual void  v1(); // _ZN6S882C12v1Ev
  S882C1(); // tgen
};
//SIG(1 S882C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10} vd v1 Fp[2] FL[2] Fi[2]}


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

static void Test_S882C1()
{
  extern Class_Descriptor cd_S882C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,62)];
    init_test(&cd_S882C1, buf);
    S882C1 *dp, &lv = *(dp=new (buf) S882C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,244), "sizeof(S882C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S882C1)");
    check_base_class_offset(lv, (S882C5*)(S882C4*)(S882C3*)(S882C2*), 0, "S882C1");
    check_base_class_offset(lv, (S882C4*)(S882C3*)(S882C2*), 0, "S882C1");
    check_base_class_offset(lv, (S882C3*)(S882C2*), 0, "S882C1");
    check_base_class_offset(lv, (S882C2*), 0, "S882C1");
    check_field_offset(lv, s882c1f0, ABISELECT(352,212), "S882C1.s882c1f0");
    check_field_offset(lv, s882c1f1, ABISELECT(368,220), "S882C1.s882c1f1");
    check_field_offset(lv, s882c1f2, ABISELECT(384,236), "S882C1.s882c1f2");
    test_class_info(&lv, &cd_S882C1);
    dp->~S882C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS882C1(Test_S882C1, "S882C1", ABISELECT(392,244));

#else // __cplusplus

extern void _ZN6S882C1C1Ev();
extern void _ZN6S882C1D1Ev();
Name_Map name_map_S882C1[] = {
  NSPAIR(_ZN6S882C1C1Ev),
  NSPAIR(_ZN6S882C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S882C5;
extern VTBL_ENTRY _ZTI6S882C5[];
extern  VTBL_ENTRY _ZTV6S882C5[];
extern Class_Descriptor cd_S882C4;
extern VTBL_ENTRY _ZTI6S882C4[];
extern  VTBL_ENTRY _ZTV6S882C4[];
extern Class_Descriptor cd_S882C3;
extern VTBL_ENTRY _ZTI6S882C3[];
extern  VTBL_ENTRY _ZTV6S882C3[];
extern Class_Descriptor cd_S882C2;
extern VTBL_ENTRY _ZTI6S882C2[];
extern  VTBL_ENTRY _ZTV6S882C2[];
static Base_Class bases_S882C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S882C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S882C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S882C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S882C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S882C1[];
extern void _ZN6S882C1D1Ev();
extern void _ZN6S882C1D0Ev();
extern void _ZN6S882C52v2Ev();
extern void _ZN6S882C52v3Ev();
extern void _ZN6S882C52v4Ev();
extern void _ZN6S882C52v5Ev();
extern void _ZN6S882C42v6Ev();
extern void _ZN6S882C42v7Ev();
extern void _ZN6S882C42v8Ev();
extern void _ZN6S882C32v9Ev();
extern void _ZN6S882C23v10Ev();
extern void _ZN6S882C12v1Ev();
static  VTBL_ENTRY vtc_S882C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S882C1[0]),
  (VTBL_ENTRY)&_ZN6S882C1D1Ev,
  (VTBL_ENTRY)&_ZN6S882C1D0Ev,
  (VTBL_ENTRY)&_ZN6S882C52v2Ev,
  (VTBL_ENTRY)&_ZN6S882C52v3Ev,
  (VTBL_ENTRY)&_ZN6S882C52v4Ev,
  (VTBL_ENTRY)&_ZN6S882C52v5Ev,
  (VTBL_ENTRY)&_ZN6S882C42v6Ev,
  (VTBL_ENTRY)&_ZN6S882C42v7Ev,
  (VTBL_ENTRY)&_ZN6S882C42v8Ev,
  (VTBL_ENTRY)&_ZN6S882C32v9Ev,
  (VTBL_ENTRY)&_ZN6S882C23v10Ev,
  (VTBL_ENTRY)&_ZN6S882C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S882C1[];
extern  VTBL_ENTRY _ZTV6S882C1[];
Class_Descriptor cd_S882C1 = {  "S882C1", // class name
  bases_S882C1, 4,
  &(vtc_S882C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,244), // object size
  NSPAIRA(_ZTI6S882C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S882C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S880C5  {
  char s880c5f0;
  int s880c5f1;
  virtual  ~S880C5(); // _ZN6S880C5D1Ev
  virtual void  v2(); // _ZN6S880C52v2Ev
  virtual void  v3(); // _ZN6S880C52v3Ev
  virtual void  v4(); // _ZN6S880C52v4Ev
  virtual void  v5(); // _ZN6S880C52v5Ev
  S880C5(); // tgen
};
//SIG(-1 S880C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S880C5 ::~S880C5(){ note_dtor("S880C5", this);}
void  S880C5 ::v2(){vfunc_called(this, "_ZN6S880C52v2Ev");}
void  S880C5 ::v3(){vfunc_called(this, "_ZN6S880C52v3Ev");}
void  S880C5 ::v4(){vfunc_called(this, "_ZN6S880C52v4Ev");}
void  S880C5 ::v5(){vfunc_called(this, "_ZN6S880C52v5Ev");}
S880C5 ::S880C5(){ note_ctor("S880C5", this);} // tgen

static void Test_S880C5()
{
  extern Class_Descriptor cd_S880C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S880C5, buf);
    S880C5 *dp, &lv = *(dp=new (buf) S880C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S880C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S880C5)");
    check_field_offset(lv, s880c5f0, ABISELECT(8,4), "S880C5.s880c5f0");
    check_field_offset(lv, s880c5f1, ABISELECT(12,8), "S880C5.s880c5f1");
    test_class_info(&lv, &cd_S880C5);
    dp->~S880C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS880C5(Test_S880C5, "S880C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S880C5C1Ev();
extern void _ZN6S880C5D1Ev();
Name_Map name_map_S880C5[] = {
  NSPAIR(_ZN6S880C5C1Ev),
  NSPAIR(_ZN6S880C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S880C5[];
extern void _ZN6S880C5D1Ev();
extern void _ZN6S880C5D0Ev();
extern void _ZN6S880C52v2Ev();
extern void _ZN6S880C52v3Ev();
extern void _ZN6S880C52v4Ev();
extern void _ZN6S880C52v5Ev();
static  VTBL_ENTRY vtc_S880C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S880C5[0]),
  (VTBL_ENTRY)&_ZN6S880C5D1Ev,
  (VTBL_ENTRY)&_ZN6S880C5D0Ev,
  (VTBL_ENTRY)&_ZN6S880C52v2Ev,
  (VTBL_ENTRY)&_ZN6S880C52v3Ev,
  (VTBL_ENTRY)&_ZN6S880C52v4Ev,
  (VTBL_ENTRY)&_ZN6S880C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S880C5[];
extern  VTBL_ENTRY _ZTV6S880C5[];
Class_Descriptor cd_S880C5 = {  "S880C5", // class name
  0,0,//no base classes
  &(vtc_S880C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S880C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S880C5),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  S880C4  : S880C5 {
  ::S4224C24 s880c4f0[8];
  ::S5309C14_nt s880c4f1[8];
  int s880c4f2;
  virtual  ~S880C4(); // _ZN6S880C4D1Ev
  virtual void  v6(); // _ZN6S880C42v6Ev
  virtual void  v7(); // _ZN6S880C42v7Ev
  virtual void  v8(); // _ZN6S880C42v8Ev
  S880C4(); // tgen
};
//SIG(-1 S880C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S880C4 ::~S880C4(){ note_dtor("S880C4", this);}
void  S880C4 ::v6(){vfunc_called(this, "_ZN6S880C42v6Ev");}
void  S880C4 ::v7(){vfunc_called(this, "_ZN6S880C42v7Ev");}
void  S880C4 ::v8(){vfunc_called(this, "_ZN6S880C42v8Ev");}
S880C4 ::S880C4(){ note_ctor("S880C4", this);} // tgen

static void Test_S880C4()
{
  extern Class_Descriptor cd_S880C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S880C4, buf);
    S880C4 *dp, &lv = *(dp=new (buf) S880C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S880C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S880C4)");
    check_base_class_offset(lv, (S880C5*), 0, "S880C4");
    check_field_offset(lv, s880c4f0, ABISELECT(16,12), "S880C4.s880c4f0");
    check_field_offset(lv, s880c4f1, ABISELECT(144,108), "S880C4.s880c4f1");
    check_field_offset(lv, s880c4f2, ABISELECT(272,172), "S880C4.s880c4f2");
    test_class_info(&lv, &cd_S880C4);
    dp->~S880C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS880C4(Test_S880C4, "S880C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S880C4C1Ev();
extern void _ZN6S880C4D1Ev();
Name_Map name_map_S880C4[] = {
  NSPAIR(_ZN6S880C4C1Ev),
  NSPAIR(_ZN6S880C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S880C5;
extern VTBL_ENTRY _ZTI6S880C5[];
extern  VTBL_ENTRY _ZTV6S880C5[];
static Base_Class bases_S880C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S880C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S880C4[];
extern void _ZN6S880C4D1Ev();
extern void _ZN6S880C4D0Ev();
extern void _ZN6S880C52v2Ev();
extern void _ZN6S880C52v3Ev();
extern void _ZN6S880C52v4Ev();
extern void _ZN6S880C52v5Ev();
extern void _ZN6S880C42v6Ev();
extern void _ZN6S880C42v7Ev();
extern void _ZN6S880C42v8Ev();
static  VTBL_ENTRY vtc_S880C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S880C4[0]),
  (VTBL_ENTRY)&_ZN6S880C4D1Ev,
  (VTBL_ENTRY)&_ZN6S880C4D0Ev,
  (VTBL_ENTRY)&_ZN6S880C52v2Ev,
  (VTBL_ENTRY)&_ZN6S880C52v3Ev,
  (VTBL_ENTRY)&_ZN6S880C52v4Ev,
  (VTBL_ENTRY)&_ZN6S880C52v5Ev,
  (VTBL_ENTRY)&_ZN6S880C42v6Ev,
  (VTBL_ENTRY)&_ZN6S880C42v7Ev,
  (VTBL_ENTRY)&_ZN6S880C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S880C4[];
extern  VTBL_ENTRY _ZTV6S880C4[];
Class_Descriptor cd_S880C4 = {  "S880C4", // class name
  bases_S880C4, 1,
  &(vtc_S880C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S880C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S880C4),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  S880C3  : S880C4 {
  void *s880c3f0[9];
  virtual  ~S880C3(); // _ZN6S880C3D1Ev
  virtual void  v9(); // _ZN6S880C32v9Ev
  S880C3(); // tgen
};
//SIG(-1 S880C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S880C3()
{
  extern Class_Descriptor cd_S880C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S880C3, buf);
    S880C3 *dp, &lv = *(dp=new (buf) S880C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S880C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S880C3)");
    check_base_class_offset(lv, (S880C5*)(S880C4*), 0, "S880C3");
    check_base_class_offset(lv, (S880C4*), 0, "S880C3");
    check_field_offset(lv, s880c3f0, ABISELECT(280,176), "S880C3.s880c3f0");
    test_class_info(&lv, &cd_S880C3);
    dp->~S880C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS880C3(Test_S880C3, "S880C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S880C3C1Ev();
extern void _ZN6S880C3D1Ev();
Name_Map name_map_S880C3[] = {
  NSPAIR(_ZN6S880C3C1Ev),
  NSPAIR(_ZN6S880C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S880C5;
extern VTBL_ENTRY _ZTI6S880C5[];
extern  VTBL_ENTRY _ZTV6S880C5[];
extern Class_Descriptor cd_S880C4;
extern VTBL_ENTRY _ZTI6S880C4[];
extern  VTBL_ENTRY _ZTV6S880C4[];
static Base_Class bases_S880C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S880C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S880C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S880C3[];
extern void _ZN6S880C3D1Ev();
extern void _ZN6S880C3D0Ev();
extern void _ZN6S880C52v2Ev();
extern void _ZN6S880C52v3Ev();
extern void _ZN6S880C52v4Ev();
extern void _ZN6S880C52v5Ev();
extern void _ZN6S880C42v6Ev();
extern void _ZN6S880C42v7Ev();
extern void _ZN6S880C42v8Ev();
extern void _ZN6S880C32v9Ev();
static  VTBL_ENTRY vtc_S880C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S880C3[0]),
  (VTBL_ENTRY)&_ZN6S880C3D1Ev,
  (VTBL_ENTRY)&_ZN6S880C3D0Ev,
  (VTBL_ENTRY)&_ZN6S880C52v2Ev,
  (VTBL_ENTRY)&_ZN6S880C52v3Ev,
  (VTBL_ENTRY)&_ZN6S880C52v4Ev,
  (VTBL_ENTRY)&_ZN6S880C52v5Ev,
  (VTBL_ENTRY)&_ZN6S880C42v6Ev,
  (VTBL_ENTRY)&_ZN6S880C42v7Ev,
  (VTBL_ENTRY)&_ZN6S880C42v8Ev,
  (VTBL_ENTRY)&_ZN6S880C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S880C3[];
extern  VTBL_ENTRY _ZTV6S880C3[];
Class_Descriptor cd_S880C3 = {  "S880C3", // class name
  bases_S880C3, 2,
  &(vtc_S880C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S880C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S880C3),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  S880C2  : S880C3 {
  virtual  ~S880C2(); // _ZN6S880C2D1Ev
  virtual void  v10(); // _ZN6S880C23v10Ev
  S880C2(); // tgen
};
//SIG(-1 S880C2) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v1}


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

static void Test_S880C2()
{
  extern Class_Descriptor cd_S880C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S880C2, buf);
    S880C2 *dp, &lv = *(dp=new (buf) S880C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S880C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S880C2)");
    check_base_class_offset(lv, (S880C5*)(S880C4*)(S880C3*), 0, "S880C2");
    check_base_class_offset(lv, (S880C4*)(S880C3*), 0, "S880C2");
    check_base_class_offset(lv, (S880C3*), 0, "S880C2");
    test_class_info(&lv, &cd_S880C2);
    dp->~S880C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS880C2(Test_S880C2, "S880C2", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S880C2C1Ev();
extern void _ZN6S880C2D1Ev();
Name_Map name_map_S880C2[] = {
  NSPAIR(_ZN6S880C2C1Ev),
  NSPAIR(_ZN6S880C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S880C5;
extern VTBL_ENTRY _ZTI6S880C5[];
extern  VTBL_ENTRY _ZTV6S880C5[];
extern Class_Descriptor cd_S880C4;
extern VTBL_ENTRY _ZTI6S880C4[];
extern  VTBL_ENTRY _ZTV6S880C4[];
extern Class_Descriptor cd_S880C3;
extern VTBL_ENTRY _ZTI6S880C3[];
extern  VTBL_ENTRY _ZTV6S880C3[];
static Base_Class bases_S880C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S880C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S880C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S880C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S880C2[];
extern void _ZN6S880C2D1Ev();
extern void _ZN6S880C2D0Ev();
extern void _ZN6S880C52v2Ev();
extern void _ZN6S880C52v3Ev();
extern void _ZN6S880C52v4Ev();
extern void _ZN6S880C52v5Ev();
extern void _ZN6S880C42v6Ev();
extern void _ZN6S880C42v7Ev();
extern void _ZN6S880C42v8Ev();
extern void _ZN6S880C32v9Ev();
extern void _ZN6S880C23v10Ev();
static  VTBL_ENTRY vtc_S880C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S880C2[0]),
  (VTBL_ENTRY)&_ZN6S880C2D1Ev,
  (VTBL_ENTRY)&_ZN6S880C2D0Ev,
  (VTBL_ENTRY)&_ZN6S880C52v2Ev,
  (VTBL_ENTRY)&_ZN6S880C52v3Ev,
  (VTBL_ENTRY)&_ZN6S880C52v4Ev,
  (VTBL_ENTRY)&_ZN6S880C52v5Ev,
  (VTBL_ENTRY)&_ZN6S880C42v6Ev,
  (VTBL_ENTRY)&_ZN6S880C42v7Ev,
  (VTBL_ENTRY)&_ZN6S880C42v8Ev,
  (VTBL_ENTRY)&_ZN6S880C32v9Ev,
  (VTBL_ENTRY)&_ZN6S880C23v10Ev,
};
extern VTBL_ENTRY _ZTI6S880C2[];
extern  VTBL_ENTRY _ZTV6S880C2[];
Class_Descriptor cd_S880C2 = {  "S880C2", // class name
  bases_S880C2, 3,
  &(vtc_S880C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S880C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S880C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S880C1  : S880C2 {
  void *s880c1f0;
  char s880c1f1;
  __tsi64 s880c1f2[4];
  int s880c1f3[4];
  virtual  ~S880C1(); // _ZN6S880C1D1Ev
  virtual void  v1(); // _ZN6S880C12v1Ev
  S880C1(); // tgen
};
//SIG(1 S880C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10} vd v1 Fp Fc FL[4] Fi[4]}


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

static void Test_S880C1()
{
  extern Class_Descriptor cd_S880C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(53,68)];
    init_test(&cd_S880C1, buf);
    S880C1 *dp, &lv = *(dp=new (buf) S880C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,268), "sizeof(S880C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S880C1)");
    check_base_class_offset(lv, (S880C5*)(S880C4*)(S880C3*)(S880C2*), 0, "S880C1");
    check_base_class_offset(lv, (S880C4*)(S880C3*)(S880C2*), 0, "S880C1");
    check_base_class_offset(lv, (S880C3*)(S880C2*), 0, "S880C1");
    check_base_class_offset(lv, (S880C2*), 0, "S880C1");
    check_field_offset(lv, s880c1f0, ABISELECT(352,212), "S880C1.s880c1f0");
    check_field_offset(lv, s880c1f1, ABISELECT(360,216), "S880C1.s880c1f1");
    check_field_offset(lv, s880c1f2, ABISELECT(368,220), "S880C1.s880c1f2");
    check_field_offset(lv, s880c1f3, ABISELECT(400,252), "S880C1.s880c1f3");
    test_class_info(&lv, &cd_S880C1);
    dp->~S880C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS880C1(Test_S880C1, "S880C1", ABISELECT(416,268));

#else // __cplusplus

extern void _ZN6S880C1C1Ev();
extern void _ZN6S880C1D1Ev();
Name_Map name_map_S880C1[] = {
  NSPAIR(_ZN6S880C1C1Ev),
  NSPAIR(_ZN6S880C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S880C5;
extern VTBL_ENTRY _ZTI6S880C5[];
extern  VTBL_ENTRY _ZTV6S880C5[];
extern Class_Descriptor cd_S880C4;
extern VTBL_ENTRY _ZTI6S880C4[];
extern  VTBL_ENTRY _ZTV6S880C4[];
extern Class_Descriptor cd_S880C3;
extern VTBL_ENTRY _ZTI6S880C3[];
extern  VTBL_ENTRY _ZTV6S880C3[];
extern Class_Descriptor cd_S880C2;
extern VTBL_ENTRY _ZTI6S880C2[];
extern  VTBL_ENTRY _ZTV6S880C2[];
static Base_Class bases_S880C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S880C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S880C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S880C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S880C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S880C1[];
extern void _ZN6S880C1D1Ev();
extern void _ZN6S880C1D0Ev();
extern void _ZN6S880C52v2Ev();
extern void _ZN6S880C52v3Ev();
extern void _ZN6S880C52v4Ev();
extern void _ZN6S880C52v5Ev();
extern void _ZN6S880C42v6Ev();
extern void _ZN6S880C42v7Ev();
extern void _ZN6S880C42v8Ev();
extern void _ZN6S880C32v9Ev();
extern void _ZN6S880C23v10Ev();
extern void _ZN6S880C12v1Ev();
static  VTBL_ENTRY vtc_S880C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S880C1[0]),
  (VTBL_ENTRY)&_ZN6S880C1D1Ev,
  (VTBL_ENTRY)&_ZN6S880C1D0Ev,
  (VTBL_ENTRY)&_ZN6S880C52v2Ev,
  (VTBL_ENTRY)&_ZN6S880C52v3Ev,
  (VTBL_ENTRY)&_ZN6S880C52v4Ev,
  (VTBL_ENTRY)&_ZN6S880C52v5Ev,
  (VTBL_ENTRY)&_ZN6S880C42v6Ev,
  (VTBL_ENTRY)&_ZN6S880C42v7Ev,
  (VTBL_ENTRY)&_ZN6S880C42v8Ev,
  (VTBL_ENTRY)&_ZN6S880C32v9Ev,
  (VTBL_ENTRY)&_ZN6S880C23v10Ev,
  (VTBL_ENTRY)&_ZN6S880C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S880C1[];
extern  VTBL_ENTRY _ZTV6S880C1[];
Class_Descriptor cd_S880C1 = {  "S880C1", // class name
  bases_S880C1, 4,
  &(vtc_S880C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(416,268), // object size
  NSPAIRA(_ZTI6S880C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S880C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S874C5  {
  char s874c5f0;
  int s874c5f1;
  virtual  ~S874C5(); // _ZN6S874C5D1Ev
  virtual void  v2(); // _ZN6S874C52v2Ev
  virtual void  v3(); // _ZN6S874C52v3Ev
  virtual void  v4(); // _ZN6S874C52v4Ev
  virtual void  v5(); // _ZN6S874C52v5Ev
  S874C5(); // tgen
};
//SIG(-1 S874C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S874C5 ::~S874C5(){ note_dtor("S874C5", this);}
void  S874C5 ::v2(){vfunc_called(this, "_ZN6S874C52v2Ev");}
void  S874C5 ::v3(){vfunc_called(this, "_ZN6S874C52v3Ev");}
void  S874C5 ::v4(){vfunc_called(this, "_ZN6S874C52v4Ev");}
void  S874C5 ::v5(){vfunc_called(this, "_ZN6S874C52v5Ev");}
S874C5 ::S874C5(){ note_ctor("S874C5", this);} // tgen

static void Test_S874C5()
{
  extern Class_Descriptor cd_S874C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S874C5, buf);
    S874C5 *dp, &lv = *(dp=new (buf) S874C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S874C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S874C5)");
    check_field_offset(lv, s874c5f0, ABISELECT(8,4), "S874C5.s874c5f0");
    check_field_offset(lv, s874c5f1, ABISELECT(12,8), "S874C5.s874c5f1");
    test_class_info(&lv, &cd_S874C5);
    dp->~S874C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS874C5(Test_S874C5, "S874C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S874C5C1Ev();
extern void _ZN6S874C5D1Ev();
Name_Map name_map_S874C5[] = {
  NSPAIR(_ZN6S874C5C1Ev),
  NSPAIR(_ZN6S874C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S874C5[];
extern void _ZN6S874C5D1Ev();
extern void _ZN6S874C5D0Ev();
extern void _ZN6S874C52v2Ev();
extern void _ZN6S874C52v3Ev();
extern void _ZN6S874C52v4Ev();
extern void _ZN6S874C52v5Ev();
static  VTBL_ENTRY vtc_S874C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S874C5[0]),
  (VTBL_ENTRY)&_ZN6S874C5D1Ev,
  (VTBL_ENTRY)&_ZN6S874C5D0Ev,
  (VTBL_ENTRY)&_ZN6S874C52v2Ev,
  (VTBL_ENTRY)&_ZN6S874C52v3Ev,
  (VTBL_ENTRY)&_ZN6S874C52v4Ev,
  (VTBL_ENTRY)&_ZN6S874C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S874C5[];
extern  VTBL_ENTRY _ZTV6S874C5[];
Class_Descriptor cd_S874C5 = {  "S874C5", // class name
  0,0,//no base classes
  &(vtc_S874C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S874C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S874C5),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  S874C4  : S874C5 {
  ::S4224C24 s874c4f0[8];
  ::S5309C14_nt s874c4f1[8];
  int s874c4f2;
  virtual  ~S874C4(); // _ZN6S874C4D1Ev
  virtual void  v6(); // _ZN6S874C42v6Ev
  virtual void  v7(); // _ZN6S874C42v7Ev
  virtual void  v8(); // _ZN6S874C42v8Ev
  S874C4(); // tgen
};
//SIG(-1 S874C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S874C4 ::~S874C4(){ note_dtor("S874C4", this);}
void  S874C4 ::v6(){vfunc_called(this, "_ZN6S874C42v6Ev");}
void  S874C4 ::v7(){vfunc_called(this, "_ZN6S874C42v7Ev");}
void  S874C4 ::v8(){vfunc_called(this, "_ZN6S874C42v8Ev");}
S874C4 ::S874C4(){ note_ctor("S874C4", this);} // tgen

static void Test_S874C4()
{
  extern Class_Descriptor cd_S874C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S874C4, buf);
    S874C4 *dp, &lv = *(dp=new (buf) S874C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S874C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S874C4)");
    check_base_class_offset(lv, (S874C5*), 0, "S874C4");
    check_field_offset(lv, s874c4f0, ABISELECT(16,12), "S874C4.s874c4f0");
    check_field_offset(lv, s874c4f1, ABISELECT(144,108), "S874C4.s874c4f1");
    check_field_offset(lv, s874c4f2, ABISELECT(272,172), "S874C4.s874c4f2");
    test_class_info(&lv, &cd_S874C4);
    dp->~S874C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS874C4(Test_S874C4, "S874C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S874C4C1Ev();
extern void _ZN6S874C4D1Ev();
Name_Map name_map_S874C4[] = {
  NSPAIR(_ZN6S874C4C1Ev),
  NSPAIR(_ZN6S874C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S874C5;
extern VTBL_ENTRY _ZTI6S874C5[];
extern  VTBL_ENTRY _ZTV6S874C5[];
static Base_Class bases_S874C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S874C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S874C4[];
extern void _ZN6S874C4D1Ev();
extern void _ZN6S874C4D0Ev();
extern void _ZN6S874C52v2Ev();
extern void _ZN6S874C52v3Ev();
extern void _ZN6S874C52v4Ev();
extern void _ZN6S874C52v5Ev();
extern void _ZN6S874C42v6Ev();
extern void _ZN6S874C42v7Ev();
extern void _ZN6S874C42v8Ev();
static  VTBL_ENTRY vtc_S874C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S874C4[0]),
  (VTBL_ENTRY)&_ZN6S874C4D1Ev,
  (VTBL_ENTRY)&_ZN6S874C4D0Ev,
  (VTBL_ENTRY)&_ZN6S874C52v2Ev,
  (VTBL_ENTRY)&_ZN6S874C52v3Ev,
  (VTBL_ENTRY)&_ZN6S874C52v4Ev,
  (VTBL_ENTRY)&_ZN6S874C52v5Ev,
  (VTBL_ENTRY)&_ZN6S874C42v6Ev,
  (VTBL_ENTRY)&_ZN6S874C42v7Ev,
  (VTBL_ENTRY)&_ZN6S874C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S874C4[];
extern  VTBL_ENTRY _ZTV6S874C4[];
Class_Descriptor cd_S874C4 = {  "S874C4", // class name
  bases_S874C4, 1,
  &(vtc_S874C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S874C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S874C4),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  S874C3  : S874C4 {
  void *s874c3f0[9];
  virtual  ~S874C3(); // _ZN6S874C3D1Ev
  virtual void  v9(); // _ZN6S874C32v9Ev
  S874C3(); // tgen
};
//SIG(-1 S874C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S874C3()
{
  extern Class_Descriptor cd_S874C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S874C3, buf);
    S874C3 *dp, &lv = *(dp=new (buf) S874C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S874C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S874C3)");
    check_base_class_offset(lv, (S874C5*)(S874C4*), 0, "S874C3");
    check_base_class_offset(lv, (S874C4*), 0, "S874C3");
    check_field_offset(lv, s874c3f0, ABISELECT(280,176), "S874C3.s874c3f0");
    test_class_info(&lv, &cd_S874C3);
    dp->~S874C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS874C3(Test_S874C3, "S874C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S874C3C1Ev();
extern void _ZN6S874C3D1Ev();
Name_Map name_map_S874C3[] = {
  NSPAIR(_ZN6S874C3C1Ev),
  NSPAIR(_ZN6S874C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S874C5;
extern VTBL_ENTRY _ZTI6S874C5[];
extern  VTBL_ENTRY _ZTV6S874C5[];
extern Class_Descriptor cd_S874C4;
extern VTBL_ENTRY _ZTI6S874C4[];
extern  VTBL_ENTRY _ZTV6S874C4[];
static Base_Class bases_S874C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S874C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S874C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S874C3[];
extern void _ZN6S874C3D1Ev();
extern void _ZN6S874C3D0Ev();
extern void _ZN6S874C52v2Ev();
extern void _ZN6S874C52v3Ev();
extern void _ZN6S874C52v4Ev();
extern void _ZN6S874C52v5Ev();
extern void _ZN6S874C42v6Ev();
extern void _ZN6S874C42v7Ev();
extern void _ZN6S874C42v8Ev();
extern void _ZN6S874C32v9Ev();
static  VTBL_ENTRY vtc_S874C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S874C3[0]),
  (VTBL_ENTRY)&_ZN6S874C3D1Ev,
  (VTBL_ENTRY)&_ZN6S874C3D0Ev,
  (VTBL_ENTRY)&_ZN6S874C52v2Ev,
  (VTBL_ENTRY)&_ZN6S874C52v3Ev,
  (VTBL_ENTRY)&_ZN6S874C52v4Ev,
  (VTBL_ENTRY)&_ZN6S874C52v5Ev,
  (VTBL_ENTRY)&_ZN6S874C42v6Ev,
  (VTBL_ENTRY)&_ZN6S874C42v7Ev,
  (VTBL_ENTRY)&_ZN6S874C42v8Ev,
  (VTBL_ENTRY)&_ZN6S874C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S874C3[];
extern  VTBL_ENTRY _ZTV6S874C3[];
Class_Descriptor cd_S874C3 = {  "S874C3", // class name
  bases_S874C3, 2,
  &(vtc_S874C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S874C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S874C3),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  S874C2  : S874C3 {
  int s874c2f0[6];
  void *s874c2f1[2];
  virtual  ~S874C2(); // _ZN6S874C2D1Ev
  virtual void  v10(); // _ZN6S874C23v10Ev
  virtual void  v11(); // _ZN6S874C23v11Ev
  virtual void  v12(); // _ZN6S874C23v12Ev
  S874C2(); // tgen
};
//SIG(-1 S874C2) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 Fc Fi} vd v8 v9 v10 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v11 Fp[9]} vd v1 v2 v3 Fi[6] Fp[2]}


 S874C2 ::~S874C2(){ note_dtor("S874C2", this);}
void  S874C2 ::v10(){vfunc_called(this, "_ZN6S874C23v10Ev");}
void  S874C2 ::v11(){vfunc_called(this, "_ZN6S874C23v11Ev");}
void  S874C2 ::v12(){vfunc_called(this, "_ZN6S874C23v12Ev");}
S874C2 ::S874C2(){ note_ctor("S874C2", this);} // tgen

static void Test_S874C2()
{
  extern Class_Descriptor cd_S874C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,62)];
    init_test(&cd_S874C2, buf);
    S874C2 *dp, &lv = *(dp=new (buf) S874C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,244), "sizeof(S874C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S874C2)");
    check_base_class_offset(lv, (S874C5*)(S874C4*)(S874C3*), 0, "S874C2");
    check_base_class_offset(lv, (S874C4*)(S874C3*), 0, "S874C2");
    check_base_class_offset(lv, (S874C3*), 0, "S874C2");
    check_field_offset(lv, s874c2f0, ABISELECT(352,212), "S874C2.s874c2f0");
    check_field_offset(lv, s874c2f1, ABISELECT(376,236), "S874C2.s874c2f1");
    test_class_info(&lv, &cd_S874C2);
    dp->~S874C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS874C2(Test_S874C2, "S874C2", ABISELECT(392,244));

#else // __cplusplus

extern void _ZN6S874C2C1Ev();
extern void _ZN6S874C2D1Ev();
Name_Map name_map_S874C2[] = {
  NSPAIR(_ZN6S874C2C1Ev),
  NSPAIR(_ZN6S874C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S874C5;
extern VTBL_ENTRY _ZTI6S874C5[];
extern  VTBL_ENTRY _ZTV6S874C5[];
extern Class_Descriptor cd_S874C4;
extern VTBL_ENTRY _ZTI6S874C4[];
extern  VTBL_ENTRY _ZTV6S874C4[];
extern Class_Descriptor cd_S874C3;
extern VTBL_ENTRY _ZTI6S874C3[];
extern  VTBL_ENTRY _ZTV6S874C3[];
static Base_Class bases_S874C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S874C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S874C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S874C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S874C2[];
extern void _ZN6S874C2D1Ev();
extern void _ZN6S874C2D0Ev();
extern void _ZN6S874C52v2Ev();
extern void _ZN6S874C52v3Ev();
extern void _ZN6S874C52v4Ev();
extern void _ZN6S874C52v5Ev();
extern void _ZN6S874C42v6Ev();
extern void _ZN6S874C42v7Ev();
extern void _ZN6S874C42v8Ev();
extern void _ZN6S874C32v9Ev();
extern void _ZN6S874C23v10Ev();
extern void _ZN6S874C23v11Ev();
extern void _ZN6S874C23v12Ev();
static  VTBL_ENTRY vtc_S874C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S874C2[0]),
  (VTBL_ENTRY)&_ZN6S874C2D1Ev,
  (VTBL_ENTRY)&_ZN6S874C2D0Ev,
  (VTBL_ENTRY)&_ZN6S874C52v2Ev,
  (VTBL_ENTRY)&_ZN6S874C52v3Ev,
  (VTBL_ENTRY)&_ZN6S874C52v4Ev,
  (VTBL_ENTRY)&_ZN6S874C52v5Ev,
  (VTBL_ENTRY)&_ZN6S874C42v6Ev,
  (VTBL_ENTRY)&_ZN6S874C42v7Ev,
  (VTBL_ENTRY)&_ZN6S874C42v8Ev,
  (VTBL_ENTRY)&_ZN6S874C32v9Ev,
  (VTBL_ENTRY)&_ZN6S874C23v10Ev,
  (VTBL_ENTRY)&_ZN6S874C23v11Ev,
  (VTBL_ENTRY)&_ZN6S874C23v12Ev,
};
extern VTBL_ENTRY _ZTI6S874C2[];
extern  VTBL_ENTRY _ZTV6S874C2[];
Class_Descriptor cd_S874C2 = {  "S874C2", // class name
  bases_S874C2, 3,
  &(vtc_S874C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,244), // object size
  NSPAIRA(_ZTI6S874C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S874C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S874C1  : S874C2 {
  virtual void  v1(); // _ZN6S874C12v1Ev
  ~S874C1(); // tgen
  S874C1(); // tgen
};
//SIG(1 S874C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10 v11 v12 Fi[6] Fp[2]} v1}


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

static void Test_S874C1()
{
  extern Class_Descriptor cd_S874C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,62)];
    init_test(&cd_S874C1, buf);
    S874C1 *dp, &lv = *(dp=new (buf) S874C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,244), "sizeof(S874C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S874C1)");
    check_base_class_offset(lv, (S874C5*)(S874C4*)(S874C3*)(S874C2*), 0, "S874C1");
    check_base_class_offset(lv, (S874C4*)(S874C3*)(S874C2*), 0, "S874C1");
    check_base_class_offset(lv, (S874C3*)(S874C2*), 0, "S874C1");
    check_base_class_offset(lv, (S874C2*), 0, "S874C1");
    test_class_info(&lv, &cd_S874C1);
    dp->~S874C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS874C1(Test_S874C1, "S874C1", ABISELECT(392,244));

#else // __cplusplus

extern void _ZN6S874C1C1Ev();
extern void _ZN6S874C1D1Ev();
Name_Map name_map_S874C1[] = {
  NSPAIR(_ZN6S874C1C1Ev),
  NSPAIR(_ZN6S874C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S874C5;
extern VTBL_ENTRY _ZTI6S874C5[];
extern  VTBL_ENTRY _ZTV6S874C5[];
extern Class_Descriptor cd_S874C4;
extern VTBL_ENTRY _ZTI6S874C4[];
extern  VTBL_ENTRY _ZTV6S874C4[];
extern Class_Descriptor cd_S874C3;
extern VTBL_ENTRY _ZTI6S874C3[];
extern  VTBL_ENTRY _ZTV6S874C3[];
extern Class_Descriptor cd_S874C2;
extern VTBL_ENTRY _ZTI6S874C2[];
extern  VTBL_ENTRY _ZTV6S874C2[];
static Base_Class bases_S874C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S874C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S874C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S874C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S874C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S874C1[];
extern void _ZN6S874C1D1Ev();
extern void _ZN6S874C1D0Ev();
extern void _ZN6S874C52v2Ev();
extern void _ZN6S874C52v3Ev();
extern void _ZN6S874C52v4Ev();
extern void _ZN6S874C52v5Ev();
extern void _ZN6S874C42v6Ev();
extern void _ZN6S874C42v7Ev();
extern void _ZN6S874C42v8Ev();
extern void _ZN6S874C32v9Ev();
extern void _ZN6S874C23v10Ev();
extern void _ZN6S874C23v11Ev();
extern void _ZN6S874C23v12Ev();
extern void _ZN6S874C12v1Ev();
static  VTBL_ENTRY vtc_S874C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S874C1[0]),
  (VTBL_ENTRY)&_ZN6S874C1D1Ev,
  (VTBL_ENTRY)&_ZN6S874C1D0Ev,
  (VTBL_ENTRY)&_ZN6S874C52v2Ev,
  (VTBL_ENTRY)&_ZN6S874C52v3Ev,
  (VTBL_ENTRY)&_ZN6S874C52v4Ev,
  (VTBL_ENTRY)&_ZN6S874C52v5Ev,
  (VTBL_ENTRY)&_ZN6S874C42v6Ev,
  (VTBL_ENTRY)&_ZN6S874C42v7Ev,
  (VTBL_ENTRY)&_ZN6S874C42v8Ev,
  (VTBL_ENTRY)&_ZN6S874C32v9Ev,
  (VTBL_ENTRY)&_ZN6S874C23v10Ev,
  (VTBL_ENTRY)&_ZN6S874C23v11Ev,
  (VTBL_ENTRY)&_ZN6S874C23v12Ev,
  (VTBL_ENTRY)&_ZN6S874C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S874C1[];
extern  VTBL_ENTRY _ZTV6S874C1[];
Class_Descriptor cd_S874C1 = {  "S874C1", // class name
  bases_S874C1, 4,
  &(vtc_S874C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,244), // object size
  NSPAIRA(_ZTI6S874C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S874C1),16, //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  S881C5  {
  char s881c5f0;
  int s881c5f1;
  virtual  ~S881C5(); // _ZN6S881C5D1Ev
  virtual void  v2(); // _ZN6S881C52v2Ev
  virtual void  v3(); // _ZN6S881C52v3Ev
  virtual void  v4(); // _ZN6S881C52v4Ev
  virtual void  v5(); // _ZN6S881C52v5Ev
  S881C5(); // tgen
};
//SIG(-1 S881C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S881C5 ::~S881C5(){ note_dtor("S881C5", this);}
void  S881C5 ::v2(){vfunc_called(this, "_ZN6S881C52v2Ev");}
void  S881C5 ::v3(){vfunc_called(this, "_ZN6S881C52v3Ev");}
void  S881C5 ::v4(){vfunc_called(this, "_ZN6S881C52v4Ev");}
void  S881C5 ::v5(){vfunc_called(this, "_ZN6S881C52v5Ev");}
S881C5 ::S881C5(){ note_ctor("S881C5", this);} // tgen

static void Test_S881C5()
{
  extern Class_Descriptor cd_S881C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S881C5, buf);
    S881C5 *dp, &lv = *(dp=new (buf) S881C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S881C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S881C5)");
    check_field_offset(lv, s881c5f0, ABISELECT(8,4), "S881C5.s881c5f0");
    check_field_offset(lv, s881c5f1, ABISELECT(12,8), "S881C5.s881c5f1");
    test_class_info(&lv, &cd_S881C5);
    dp->~S881C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS881C5(Test_S881C5, "S881C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S881C5C1Ev();
extern void _ZN6S881C5D1Ev();
Name_Map name_map_S881C5[] = {
  NSPAIR(_ZN6S881C5C1Ev),
  NSPAIR(_ZN6S881C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S881C5[];
extern void _ZN6S881C5D1Ev();
extern void _ZN6S881C5D0Ev();
extern void _ZN6S881C52v2Ev();
extern void _ZN6S881C52v3Ev();
extern void _ZN6S881C52v4Ev();
extern void _ZN6S881C52v5Ev();
static  VTBL_ENTRY vtc_S881C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S881C5[0]),
  (VTBL_ENTRY)&_ZN6S881C5D1Ev,
  (VTBL_ENTRY)&_ZN6S881C5D0Ev,
  (VTBL_ENTRY)&_ZN6S881C52v2Ev,
  (VTBL_ENTRY)&_ZN6S881C52v3Ev,
  (VTBL_ENTRY)&_ZN6S881C52v4Ev,
  (VTBL_ENTRY)&_ZN6S881C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S881C5[];
extern  VTBL_ENTRY _ZTV6S881C5[];
Class_Descriptor cd_S881C5 = {  "S881C5", // class name
  0,0,//no base classes
  &(vtc_S881C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S881C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S881C5),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  S881C4  : S881C5 {
  ::S4224C24 s881c4f0[8];
  ::S5309C14_nt s881c4f1[8];
  int s881c4f2;
  virtual  ~S881C4(); // _ZN6S881C4D1Ev
  virtual void  v6(); // _ZN6S881C42v6Ev
  virtual void  v7(); // _ZN6S881C42v7Ev
  virtual void  v8(); // _ZN6S881C42v8Ev
  S881C4(); // tgen
};
//SIG(-1 S881C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S881C4 ::~S881C4(){ note_dtor("S881C4", this);}
void  S881C4 ::v6(){vfunc_called(this, "_ZN6S881C42v6Ev");}
void  S881C4 ::v7(){vfunc_called(this, "_ZN6S881C42v7Ev");}
void  S881C4 ::v8(){vfunc_called(this, "_ZN6S881C42v8Ev");}
S881C4 ::S881C4(){ note_ctor("S881C4", this);} // tgen

static void Test_S881C4()
{
  extern Class_Descriptor cd_S881C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S881C4, buf);
    S881C4 *dp, &lv = *(dp=new (buf) S881C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S881C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S881C4)");
    check_base_class_offset(lv, (S881C5*), 0, "S881C4");
    check_field_offset(lv, s881c4f0, ABISELECT(16,12), "S881C4.s881c4f0");
    check_field_offset(lv, s881c4f1, ABISELECT(144,108), "S881C4.s881c4f1");
    check_field_offset(lv, s881c4f2, ABISELECT(272,172), "S881C4.s881c4f2");
    test_class_info(&lv, &cd_S881C4);
    dp->~S881C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS881C4(Test_S881C4, "S881C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S881C4C1Ev();
extern void _ZN6S881C4D1Ev();
Name_Map name_map_S881C4[] = {
  NSPAIR(_ZN6S881C4C1Ev),
  NSPAIR(_ZN6S881C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S881C5;
extern VTBL_ENTRY _ZTI6S881C5[];
extern  VTBL_ENTRY _ZTV6S881C5[];
static Base_Class bases_S881C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S881C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S881C4[];
extern void _ZN6S881C4D1Ev();
extern void _ZN6S881C4D0Ev();
extern void _ZN6S881C52v2Ev();
extern void _ZN6S881C52v3Ev();
extern void _ZN6S881C52v4Ev();
extern void _ZN6S881C52v5Ev();
extern void _ZN6S881C42v6Ev();
extern void _ZN6S881C42v7Ev();
extern void _ZN6S881C42v8Ev();
static  VTBL_ENTRY vtc_S881C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S881C4[0]),
  (VTBL_ENTRY)&_ZN6S881C4D1Ev,
  (VTBL_ENTRY)&_ZN6S881C4D0Ev,
  (VTBL_ENTRY)&_ZN6S881C52v2Ev,
  (VTBL_ENTRY)&_ZN6S881C52v3Ev,
  (VTBL_ENTRY)&_ZN6S881C52v4Ev,
  (VTBL_ENTRY)&_ZN6S881C52v5Ev,
  (VTBL_ENTRY)&_ZN6S881C42v6Ev,
  (VTBL_ENTRY)&_ZN6S881C42v7Ev,
  (VTBL_ENTRY)&_ZN6S881C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S881C4[];
extern  VTBL_ENTRY _ZTV6S881C4[];
Class_Descriptor cd_S881C4 = {  "S881C4", // class name
  bases_S881C4, 1,
  &(vtc_S881C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S881C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S881C4),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  S881C3  : S881C4 {
  void *s881c3f0[9];
  virtual  ~S881C3(); // _ZN6S881C3D1Ev
  virtual void  v9(); // _ZN6S881C32v9Ev
  S881C3(); // tgen
};
//SIG(-1 S881C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S881C3()
{
  extern Class_Descriptor cd_S881C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S881C3, buf);
    S881C3 *dp, &lv = *(dp=new (buf) S881C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S881C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S881C3)");
    check_base_class_offset(lv, (S881C5*)(S881C4*), 0, "S881C3");
    check_base_class_offset(lv, (S881C4*), 0, "S881C3");
    check_field_offset(lv, s881c3f0, ABISELECT(280,176), "S881C3.s881c3f0");
    test_class_info(&lv, &cd_S881C3);
    dp->~S881C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS881C3(Test_S881C3, "S881C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S881C3C1Ev();
extern void _ZN6S881C3D1Ev();
Name_Map name_map_S881C3[] = {
  NSPAIR(_ZN6S881C3C1Ev),
  NSPAIR(_ZN6S881C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S881C5;
extern VTBL_ENTRY _ZTI6S881C5[];
extern  VTBL_ENTRY _ZTV6S881C5[];
extern Class_Descriptor cd_S881C4;
extern VTBL_ENTRY _ZTI6S881C4[];
extern  VTBL_ENTRY _ZTV6S881C4[];
static Base_Class bases_S881C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S881C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S881C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S881C3[];
extern void _ZN6S881C3D1Ev();
extern void _ZN6S881C3D0Ev();
extern void _ZN6S881C52v2Ev();
extern void _ZN6S881C52v3Ev();
extern void _ZN6S881C52v4Ev();
extern void _ZN6S881C52v5Ev();
extern void _ZN6S881C42v6Ev();
extern void _ZN6S881C42v7Ev();
extern void _ZN6S881C42v8Ev();
extern void _ZN6S881C32v9Ev();
static  VTBL_ENTRY vtc_S881C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S881C3[0]),
  (VTBL_ENTRY)&_ZN6S881C3D1Ev,
  (VTBL_ENTRY)&_ZN6S881C3D0Ev,
  (VTBL_ENTRY)&_ZN6S881C52v2Ev,
  (VTBL_ENTRY)&_ZN6S881C52v3Ev,
  (VTBL_ENTRY)&_ZN6S881C52v4Ev,
  (VTBL_ENTRY)&_ZN6S881C52v5Ev,
  (VTBL_ENTRY)&_ZN6S881C42v6Ev,
  (VTBL_ENTRY)&_ZN6S881C42v7Ev,
  (VTBL_ENTRY)&_ZN6S881C42v8Ev,
  (VTBL_ENTRY)&_ZN6S881C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S881C3[];
extern  VTBL_ENTRY _ZTV6S881C3[];
Class_Descriptor cd_S881C3 = {  "S881C3", // class name
  bases_S881C3, 2,
  &(vtc_S881C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S881C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S881C3),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  S881C2  : S881C3 {
  virtual  ~S881C2(); // _ZN6S881C2D1Ev
  virtual void  v10(); // _ZN6S881C23v10Ev
  S881C2(); // tgen
};
//SIG(-1 S881C2) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v1}


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

static void Test_S881C2()
{
  extern Class_Descriptor cd_S881C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S881C2, buf);
    S881C2 *dp, &lv = *(dp=new (buf) S881C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S881C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S881C2)");
    check_base_class_offset(lv, (S881C5*)(S881C4*)(S881C3*), 0, "S881C2");
    check_base_class_offset(lv, (S881C4*)(S881C3*), 0, "S881C2");
    check_base_class_offset(lv, (S881C3*), 0, "S881C2");
    test_class_info(&lv, &cd_S881C2);
    dp->~S881C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS881C2(Test_S881C2, "S881C2", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S881C2C1Ev();
extern void _ZN6S881C2D1Ev();
Name_Map name_map_S881C2[] = {
  NSPAIR(_ZN6S881C2C1Ev),
  NSPAIR(_ZN6S881C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S881C5;
extern VTBL_ENTRY _ZTI6S881C5[];
extern  VTBL_ENTRY _ZTV6S881C5[];
extern Class_Descriptor cd_S881C4;
extern VTBL_ENTRY _ZTI6S881C4[];
extern  VTBL_ENTRY _ZTV6S881C4[];
extern Class_Descriptor cd_S881C3;
extern VTBL_ENTRY _ZTI6S881C3[];
extern  VTBL_ENTRY _ZTV6S881C3[];
static Base_Class bases_S881C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S881C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S881C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S881C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S881C2[];
extern void _ZN6S881C2D1Ev();
extern void _ZN6S881C2D0Ev();
extern void _ZN6S881C52v2Ev();
extern void _ZN6S881C52v3Ev();
extern void _ZN6S881C52v4Ev();
extern void _ZN6S881C52v5Ev();
extern void _ZN6S881C42v6Ev();
extern void _ZN6S881C42v7Ev();
extern void _ZN6S881C42v8Ev();
extern void _ZN6S881C32v9Ev();
extern void _ZN6S881C23v10Ev();
static  VTBL_ENTRY vtc_S881C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S881C2[0]),
  (VTBL_ENTRY)&_ZN6S881C2D1Ev,
  (VTBL_ENTRY)&_ZN6S881C2D0Ev,
  (VTBL_ENTRY)&_ZN6S881C52v2Ev,
  (VTBL_ENTRY)&_ZN6S881C52v3Ev,
  (VTBL_ENTRY)&_ZN6S881C52v4Ev,
  (VTBL_ENTRY)&_ZN6S881C52v5Ev,
  (VTBL_ENTRY)&_ZN6S881C42v6Ev,
  (VTBL_ENTRY)&_ZN6S881C42v7Ev,
  (VTBL_ENTRY)&_ZN6S881C42v8Ev,
  (VTBL_ENTRY)&_ZN6S881C32v9Ev,
  (VTBL_ENTRY)&_ZN6S881C23v10Ev,
};
extern VTBL_ENTRY _ZTI6S881C2[];
extern  VTBL_ENTRY _ZTV6S881C2[];
Class_Descriptor cd_S881C2 = {  "S881C2", // class name
  bases_S881C2, 3,
  &(vtc_S881C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S881C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S881C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S881C1  : S881C2 {
  void *s881c1f0[2];
  int s881c1f1;
  char s881c1f2;
  virtual  ~S881C1(); // _ZN6S881C1D1Ev
  virtual void  v1(); // _ZN6S881C12v1Ev
  S881C1(); // tgen
};
//SIG(1 S881C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10} vd v1 Fp[2] Fi Fc}


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

static void Test_S881C1()
{
  extern Class_Descriptor cd_S881C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,58)];
    init_test(&cd_S881C1, buf);
    S881C1 *dp, &lv = *(dp=new (buf) S881C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,228), "sizeof(S881C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S881C1)");
    check_base_class_offset(lv, (S881C5*)(S881C4*)(S881C3*)(S881C2*), 0, "S881C1");
    check_base_class_offset(lv, (S881C4*)(S881C3*)(S881C2*), 0, "S881C1");
    check_base_class_offset(lv, (S881C3*)(S881C2*), 0, "S881C1");
    check_base_class_offset(lv, (S881C2*), 0, "S881C1");
    check_field_offset(lv, s881c1f0, ABISELECT(352,212), "S881C1.s881c1f0");
    check_field_offset(lv, s881c1f1, ABISELECT(368,220), "S881C1.s881c1f1");
    check_field_offset(lv, s881c1f2, ABISELECT(372,224), "S881C1.s881c1f2");
    test_class_info(&lv, &cd_S881C1);
    dp->~S881C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS881C1(Test_S881C1, "S881C1", ABISELECT(376,228));

#else // __cplusplus

extern void _ZN6S881C1C1Ev();
extern void _ZN6S881C1D1Ev();
Name_Map name_map_S881C1[] = {
  NSPAIR(_ZN6S881C1C1Ev),
  NSPAIR(_ZN6S881C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S881C5;
extern VTBL_ENTRY _ZTI6S881C5[];
extern  VTBL_ENTRY _ZTV6S881C5[];
extern Class_Descriptor cd_S881C4;
extern VTBL_ENTRY _ZTI6S881C4[];
extern  VTBL_ENTRY _ZTV6S881C4[];
extern Class_Descriptor cd_S881C3;
extern VTBL_ENTRY _ZTI6S881C3[];
extern  VTBL_ENTRY _ZTV6S881C3[];
extern Class_Descriptor cd_S881C2;
extern VTBL_ENTRY _ZTI6S881C2[];
extern  VTBL_ENTRY _ZTV6S881C2[];
static Base_Class bases_S881C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S881C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S881C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S881C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S881C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S881C1[];
extern void _ZN6S881C1D1Ev();
extern void _ZN6S881C1D0Ev();
extern void _ZN6S881C52v2Ev();
extern void _ZN6S881C52v3Ev();
extern void _ZN6S881C52v4Ev();
extern void _ZN6S881C52v5Ev();
extern void _ZN6S881C42v6Ev();
extern void _ZN6S881C42v7Ev();
extern void _ZN6S881C42v8Ev();
extern void _ZN6S881C32v9Ev();
extern void _ZN6S881C23v10Ev();
extern void _ZN6S881C12v1Ev();
static  VTBL_ENTRY vtc_S881C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S881C1[0]),
  (VTBL_ENTRY)&_ZN6S881C1D1Ev,
  (VTBL_ENTRY)&_ZN6S881C1D0Ev,
  (VTBL_ENTRY)&_ZN6S881C52v2Ev,
  (VTBL_ENTRY)&_ZN6S881C52v3Ev,
  (VTBL_ENTRY)&_ZN6S881C52v4Ev,
  (VTBL_ENTRY)&_ZN6S881C52v5Ev,
  (VTBL_ENTRY)&_ZN6S881C42v6Ev,
  (VTBL_ENTRY)&_ZN6S881C42v7Ev,
  (VTBL_ENTRY)&_ZN6S881C42v8Ev,
  (VTBL_ENTRY)&_ZN6S881C32v9Ev,
  (VTBL_ENTRY)&_ZN6S881C23v10Ev,
  (VTBL_ENTRY)&_ZN6S881C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S881C1[];
extern  VTBL_ENTRY _ZTV6S881C1[];
Class_Descriptor cd_S881C1 = {  "S881C1", // class name
  bases_S881C1, 4,
  &(vtc_S881C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,228), // object size
  NSPAIRA(_ZTI6S881C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S881C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S879C5  {
  char s879c5f0;
  int s879c5f1;
  virtual  ~S879C5(); // _ZN6S879C5D1Ev
  virtual void  v2(); // _ZN6S879C52v2Ev
  virtual void  v3(); // _ZN6S879C52v3Ev
  virtual void  v4(); // _ZN6S879C52v4Ev
  virtual void  v5(); // _ZN6S879C52v5Ev
  S879C5(); // tgen
};
//SIG(-1 S879C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S879C5 ::~S879C5(){ note_dtor("S879C5", this);}
void  S879C5 ::v2(){vfunc_called(this, "_ZN6S879C52v2Ev");}
void  S879C5 ::v3(){vfunc_called(this, "_ZN6S879C52v3Ev");}
void  S879C5 ::v4(){vfunc_called(this, "_ZN6S879C52v4Ev");}
void  S879C5 ::v5(){vfunc_called(this, "_ZN6S879C52v5Ev");}
S879C5 ::S879C5(){ note_ctor("S879C5", this);} // tgen

static void Test_S879C5()
{
  extern Class_Descriptor cd_S879C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S879C5, buf);
    S879C5 *dp, &lv = *(dp=new (buf) S879C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S879C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S879C5)");
    check_field_offset(lv, s879c5f0, ABISELECT(8,4), "S879C5.s879c5f0");
    check_field_offset(lv, s879c5f1, ABISELECT(12,8), "S879C5.s879c5f1");
    test_class_info(&lv, &cd_S879C5);
    dp->~S879C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS879C5(Test_S879C5, "S879C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S879C5C1Ev();
extern void _ZN6S879C5D1Ev();
Name_Map name_map_S879C5[] = {
  NSPAIR(_ZN6S879C5C1Ev),
  NSPAIR(_ZN6S879C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S879C5[];
extern void _ZN6S879C5D1Ev();
extern void _ZN6S879C5D0Ev();
extern void _ZN6S879C52v2Ev();
extern void _ZN6S879C52v3Ev();
extern void _ZN6S879C52v4Ev();
extern void _ZN6S879C52v5Ev();
static  VTBL_ENTRY vtc_S879C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S879C5[0]),
  (VTBL_ENTRY)&_ZN6S879C5D1Ev,
  (VTBL_ENTRY)&_ZN6S879C5D0Ev,
  (VTBL_ENTRY)&_ZN6S879C52v2Ev,
  (VTBL_ENTRY)&_ZN6S879C52v3Ev,
  (VTBL_ENTRY)&_ZN6S879C52v4Ev,
  (VTBL_ENTRY)&_ZN6S879C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S879C5[];
extern  VTBL_ENTRY _ZTV6S879C5[];
Class_Descriptor cd_S879C5 = {  "S879C5", // class name
  0,0,//no base classes
  &(vtc_S879C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S879C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S879C5),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  S879C4  : S879C5 {
  ::S4224C24 s879c4f0[8];
  ::S5309C14_nt s879c4f1[8];
  int s879c4f2;
  virtual  ~S879C4(); // _ZN6S879C4D1Ev
  virtual void  v6(); // _ZN6S879C42v6Ev
  virtual void  v7(); // _ZN6S879C42v7Ev
  virtual void  v8(); // _ZN6S879C42v8Ev
  S879C4(); // tgen
};
//SIG(-1 S879C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S879C4 ::~S879C4(){ note_dtor("S879C4", this);}
void  S879C4 ::v6(){vfunc_called(this, "_ZN6S879C42v6Ev");}
void  S879C4 ::v7(){vfunc_called(this, "_ZN6S879C42v7Ev");}
void  S879C4 ::v8(){vfunc_called(this, "_ZN6S879C42v8Ev");}
S879C4 ::S879C4(){ note_ctor("S879C4", this);} // tgen

static void Test_S879C4()
{
  extern Class_Descriptor cd_S879C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S879C4, buf);
    S879C4 *dp, &lv = *(dp=new (buf) S879C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S879C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S879C4)");
    check_base_class_offset(lv, (S879C5*), 0, "S879C4");
    check_field_offset(lv, s879c4f0, ABISELECT(16,12), "S879C4.s879c4f0");
    check_field_offset(lv, s879c4f1, ABISELECT(144,108), "S879C4.s879c4f1");
    check_field_offset(lv, s879c4f2, ABISELECT(272,172), "S879C4.s879c4f2");
    test_class_info(&lv, &cd_S879C4);
    dp->~S879C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS879C4(Test_S879C4, "S879C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S879C4C1Ev();
extern void _ZN6S879C4D1Ev();
Name_Map name_map_S879C4[] = {
  NSPAIR(_ZN6S879C4C1Ev),
  NSPAIR(_ZN6S879C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S879C5;
extern VTBL_ENTRY _ZTI6S879C5[];
extern  VTBL_ENTRY _ZTV6S879C5[];
static Base_Class bases_S879C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S879C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S879C4[];
extern void _ZN6S879C4D1Ev();
extern void _ZN6S879C4D0Ev();
extern void _ZN6S879C52v2Ev();
extern void _ZN6S879C52v3Ev();
extern void _ZN6S879C52v4Ev();
extern void _ZN6S879C52v5Ev();
extern void _ZN6S879C42v6Ev();
extern void _ZN6S879C42v7Ev();
extern void _ZN6S879C42v8Ev();
static  VTBL_ENTRY vtc_S879C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S879C4[0]),
  (VTBL_ENTRY)&_ZN6S879C4D1Ev,
  (VTBL_ENTRY)&_ZN6S879C4D0Ev,
  (VTBL_ENTRY)&_ZN6S879C52v2Ev,
  (VTBL_ENTRY)&_ZN6S879C52v3Ev,
  (VTBL_ENTRY)&_ZN6S879C52v4Ev,
  (VTBL_ENTRY)&_ZN6S879C52v5Ev,
  (VTBL_ENTRY)&_ZN6S879C42v6Ev,
  (VTBL_ENTRY)&_ZN6S879C42v7Ev,
  (VTBL_ENTRY)&_ZN6S879C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S879C4[];
extern  VTBL_ENTRY _ZTV6S879C4[];
Class_Descriptor cd_S879C4 = {  "S879C4", // class name
  bases_S879C4, 1,
  &(vtc_S879C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S879C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S879C4),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  S879C3  : S879C4 {
  void *s879c3f0[9];
  virtual  ~S879C3(); // _ZN6S879C3D1Ev
  virtual void  v9(); // _ZN6S879C32v9Ev
  S879C3(); // tgen
};
//SIG(-1 S879C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S879C3()
{
  extern Class_Descriptor cd_S879C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S879C3, buf);
    S879C3 *dp, &lv = *(dp=new (buf) S879C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S879C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S879C3)");
    check_base_class_offset(lv, (S879C5*)(S879C4*), 0, "S879C3");
    check_base_class_offset(lv, (S879C4*), 0, "S879C3");
    check_field_offset(lv, s879c3f0, ABISELECT(280,176), "S879C3.s879c3f0");
    test_class_info(&lv, &cd_S879C3);
    dp->~S879C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS879C3(Test_S879C3, "S879C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S879C3C1Ev();
extern void _ZN6S879C3D1Ev();
Name_Map name_map_S879C3[] = {
  NSPAIR(_ZN6S879C3C1Ev),
  NSPAIR(_ZN6S879C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S879C5;
extern VTBL_ENTRY _ZTI6S879C5[];
extern  VTBL_ENTRY _ZTV6S879C5[];
extern Class_Descriptor cd_S879C4;
extern VTBL_ENTRY _ZTI6S879C4[];
extern  VTBL_ENTRY _ZTV6S879C4[];
static Base_Class bases_S879C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S879C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S879C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S879C3[];
extern void _ZN6S879C3D1Ev();
extern void _ZN6S879C3D0Ev();
extern void _ZN6S879C52v2Ev();
extern void _ZN6S879C52v3Ev();
extern void _ZN6S879C52v4Ev();
extern void _ZN6S879C52v5Ev();
extern void _ZN6S879C42v6Ev();
extern void _ZN6S879C42v7Ev();
extern void _ZN6S879C42v8Ev();
extern void _ZN6S879C32v9Ev();
static  VTBL_ENTRY vtc_S879C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S879C3[0]),
  (VTBL_ENTRY)&_ZN6S879C3D1Ev,
  (VTBL_ENTRY)&_ZN6S879C3D0Ev,
  (VTBL_ENTRY)&_ZN6S879C52v2Ev,
  (VTBL_ENTRY)&_ZN6S879C52v3Ev,
  (VTBL_ENTRY)&_ZN6S879C52v4Ev,
  (VTBL_ENTRY)&_ZN6S879C52v5Ev,
  (VTBL_ENTRY)&_ZN6S879C42v6Ev,
  (VTBL_ENTRY)&_ZN6S879C42v7Ev,
  (VTBL_ENTRY)&_ZN6S879C42v8Ev,
  (VTBL_ENTRY)&_ZN6S879C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S879C3[];
extern  VTBL_ENTRY _ZTV6S879C3[];
Class_Descriptor cd_S879C3 = {  "S879C3", // class name
  bases_S879C3, 2,
  &(vtc_S879C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S879C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S879C3),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  S879C2  : S879C3 {
  virtual  ~S879C2(); // _ZN6S879C2D1Ev
  virtual void  v10(); // _ZN6S879C23v10Ev
  S879C2(); // tgen
};
//SIG(-1 S879C2) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v1}


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

static void Test_S879C2()
{
  extern Class_Descriptor cd_S879C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S879C2, buf);
    S879C2 *dp, &lv = *(dp=new (buf) S879C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S879C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S879C2)");
    check_base_class_offset(lv, (S879C5*)(S879C4*)(S879C3*), 0, "S879C2");
    check_base_class_offset(lv, (S879C4*)(S879C3*), 0, "S879C2");
    check_base_class_offset(lv, (S879C3*), 0, "S879C2");
    test_class_info(&lv, &cd_S879C2);
    dp->~S879C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS879C2(Test_S879C2, "S879C2", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S879C2C1Ev();
extern void _ZN6S879C2D1Ev();
Name_Map name_map_S879C2[] = {
  NSPAIR(_ZN6S879C2C1Ev),
  NSPAIR(_ZN6S879C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S879C5;
extern VTBL_ENTRY _ZTI6S879C5[];
extern  VTBL_ENTRY _ZTV6S879C5[];
extern Class_Descriptor cd_S879C4;
extern VTBL_ENTRY _ZTI6S879C4[];
extern  VTBL_ENTRY _ZTV6S879C4[];
extern Class_Descriptor cd_S879C3;
extern VTBL_ENTRY _ZTI6S879C3[];
extern  VTBL_ENTRY _ZTV6S879C3[];
static Base_Class bases_S879C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S879C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S879C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S879C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S879C2[];
extern void _ZN6S879C2D1Ev();
extern void _ZN6S879C2D0Ev();
extern void _ZN6S879C52v2Ev();
extern void _ZN6S879C52v3Ev();
extern void _ZN6S879C52v4Ev();
extern void _ZN6S879C52v5Ev();
extern void _ZN6S879C42v6Ev();
extern void _ZN6S879C42v7Ev();
extern void _ZN6S879C42v8Ev();
extern void _ZN6S879C32v9Ev();
extern void _ZN6S879C23v10Ev();
static  VTBL_ENTRY vtc_S879C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S879C2[0]),
  (VTBL_ENTRY)&_ZN6S879C2D1Ev,
  (VTBL_ENTRY)&_ZN6S879C2D0Ev,
  (VTBL_ENTRY)&_ZN6S879C52v2Ev,
  (VTBL_ENTRY)&_ZN6S879C52v3Ev,
  (VTBL_ENTRY)&_ZN6S879C52v4Ev,
  (VTBL_ENTRY)&_ZN6S879C52v5Ev,
  (VTBL_ENTRY)&_ZN6S879C42v6Ev,
  (VTBL_ENTRY)&_ZN6S879C42v7Ev,
  (VTBL_ENTRY)&_ZN6S879C42v8Ev,
  (VTBL_ENTRY)&_ZN6S879C32v9Ev,
  (VTBL_ENTRY)&_ZN6S879C23v10Ev,
};
extern VTBL_ENTRY _ZTI6S879C2[];
extern  VTBL_ENTRY _ZTV6S879C2[];
Class_Descriptor cd_S879C2 = {  "S879C2", // class name
  bases_S879C2, 3,
  &(vtc_S879C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S879C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S879C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S879C1  : S879C2 {
  void *s879c1f0;
  __tsi64 s879c1f1[2];
  int s879c1f2[2];
  virtual void  v1(); // _ZN6S879C12v1Ev
  ~S879C1(); // tgen
  S879C1(); // tgen
};
//SIG(1 S879C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10} v1 Fp FL[2] Fi[2]}


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

static void Test_S879C1()
{
  extern Class_Descriptor cd_S879C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,61)];
    init_test(&cd_S879C1, buf);
    S879C1 *dp, &lv = *(dp=new (buf) S879C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,240), "sizeof(S879C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S879C1)");
    check_base_class_offset(lv, (S879C5*)(S879C4*)(S879C3*)(S879C2*), 0, "S879C1");
    check_base_class_offset(lv, (S879C4*)(S879C3*)(S879C2*), 0, "S879C1");
    check_base_class_offset(lv, (S879C3*)(S879C2*), 0, "S879C1");
    check_base_class_offset(lv, (S879C2*), 0, "S879C1");
    check_field_offset(lv, s879c1f0, ABISELECT(352,212), "S879C1.s879c1f0");
    check_field_offset(lv, s879c1f1, ABISELECT(360,216), "S879C1.s879c1f1");
    check_field_offset(lv, s879c1f2, ABISELECT(376,232), "S879C1.s879c1f2");
    test_class_info(&lv, &cd_S879C1);
    dp->~S879C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS879C1(Test_S879C1, "S879C1", ABISELECT(384,240));

#else // __cplusplus

extern void _ZN6S879C1C1Ev();
extern void _ZN6S879C1D1Ev();
Name_Map name_map_S879C1[] = {
  NSPAIR(_ZN6S879C1C1Ev),
  NSPAIR(_ZN6S879C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S879C5;
extern VTBL_ENTRY _ZTI6S879C5[];
extern  VTBL_ENTRY _ZTV6S879C5[];
extern Class_Descriptor cd_S879C4;
extern VTBL_ENTRY _ZTI6S879C4[];
extern  VTBL_ENTRY _ZTV6S879C4[];
extern Class_Descriptor cd_S879C3;
extern VTBL_ENTRY _ZTI6S879C3[];
extern  VTBL_ENTRY _ZTV6S879C3[];
extern Class_Descriptor cd_S879C2;
extern VTBL_ENTRY _ZTI6S879C2[];
extern  VTBL_ENTRY _ZTV6S879C2[];
static Base_Class bases_S879C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S879C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S879C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S879C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S879C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S879C1[];
extern void _ZN6S879C1D1Ev();
extern void _ZN6S879C1D0Ev();
extern void _ZN6S879C52v2Ev();
extern void _ZN6S879C52v3Ev();
extern void _ZN6S879C52v4Ev();
extern void _ZN6S879C52v5Ev();
extern void _ZN6S879C42v6Ev();
extern void _ZN6S879C42v7Ev();
extern void _ZN6S879C42v8Ev();
extern void _ZN6S879C32v9Ev();
extern void _ZN6S879C23v10Ev();
extern void _ZN6S879C12v1Ev();
static  VTBL_ENTRY vtc_S879C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S879C1[0]),
  (VTBL_ENTRY)&_ZN6S879C1D1Ev,
  (VTBL_ENTRY)&_ZN6S879C1D0Ev,
  (VTBL_ENTRY)&_ZN6S879C52v2Ev,
  (VTBL_ENTRY)&_ZN6S879C52v3Ev,
  (VTBL_ENTRY)&_ZN6S879C52v4Ev,
  (VTBL_ENTRY)&_ZN6S879C52v5Ev,
  (VTBL_ENTRY)&_ZN6S879C42v6Ev,
  (VTBL_ENTRY)&_ZN6S879C42v7Ev,
  (VTBL_ENTRY)&_ZN6S879C42v8Ev,
  (VTBL_ENTRY)&_ZN6S879C32v9Ev,
  (VTBL_ENTRY)&_ZN6S879C23v10Ev,
  (VTBL_ENTRY)&_ZN6S879C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S879C1[];
extern  VTBL_ENTRY _ZTV6S879C1[];
Class_Descriptor cd_S879C1 = {  "S879C1", // class name
  bases_S879C1, 4,
  &(vtc_S879C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,240), // object size
  NSPAIRA(_ZTI6S879C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S879C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7604C3  {
  __tsi64 s7604c3f0;
  virtual void  v4(); // _ZN7S7604C32v4Ev
  virtual void  v5(); // _ZN7S7604C32v5Ev
  virtual void  v6(); // _ZN7S7604C32v6Ev
  virtual void  v7(); // _ZN7S7604C32v7Ev
  virtual void  v8(); // _ZN7S7604C32v8Ev
  virtual void  v9(); // _ZN7S7604C32v9Ev
  ~S7604C3(); // tgen
  S7604C3(); // tgen
};
//SIG(-1 S7604C3) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S7604C3 ::v4(){vfunc_called(this, "_ZN7S7604C32v4Ev");}
void  S7604C3 ::v5(){vfunc_called(this, "_ZN7S7604C32v5Ev");}
void  S7604C3 ::v6(){vfunc_called(this, "_ZN7S7604C32v6Ev");}
void  S7604C3 ::v7(){vfunc_called(this, "_ZN7S7604C32v7Ev");}
void  S7604C3 ::v8(){vfunc_called(this, "_ZN7S7604C32v8Ev");}
void  S7604C3 ::v9(){vfunc_called(this, "_ZN7S7604C32v9Ev");}
S7604C3 ::~S7604C3(){ note_dtor("S7604C3", this);} // tgen
S7604C3 ::S7604C3(){ note_ctor("S7604C3", this);} // tgen

static void Test_S7604C3()
{
  extern Class_Descriptor cd_S7604C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7604C3, buf);
    S7604C3 *dp, &lv = *(dp=new (buf) S7604C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7604C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7604C3)");
    check_field_offset(lv, s7604c3f0, ABISELECT(8,4), "S7604C3.s7604c3f0");
    test_class_info(&lv, &cd_S7604C3);
    dp->~S7604C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7604C3(Test_S7604C3, "S7604C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7604C3C1Ev();
extern void _ZN7S7604C3D1Ev();
Name_Map name_map_S7604C3[] = {
  NSPAIR(_ZN7S7604C3C1Ev),
  NSPAIR(_ZN7S7604C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7604C3[];
extern void _ZN7S7604C32v4Ev();
extern void _ZN7S7604C32v5Ev();
extern void _ZN7S7604C32v6Ev();
extern void _ZN7S7604C32v7Ev();
extern void _ZN7S7604C32v8Ev();
extern void _ZN7S7604C32v9Ev();
static  VTBL_ENTRY vtc_S7604C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7604C3[0]),
  (VTBL_ENTRY)&_ZN7S7604C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S7604C3[];
extern  VTBL_ENTRY _ZTV7S7604C3[];
Class_Descriptor cd_S7604C3 = {  "S7604C3", // class name
  0,0,//no base classes
  &(vtc_S7604C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7604C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7604C3),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  S7604C2  : virtual S7604C3 {
  virtual void  v10(); // _ZN7S7604C23v10Ev
  virtual void  v11(); // _ZN7S7604C23v11Ev
  virtual void  v12(); // _ZN7S7604C23v12Ev
  virtual void  v13(); // _ZN7S7604C23v13Ev
  virtual void  v14(); // _ZN7S7604C23v14Ev
  ~S7604C2(); // tgen
  S7604C2(); // tgen
};
//SIG(-1 S7604C2) C1{ VBC2{ v6 v7 v8 v9 v10 v11 FL} v1 v2 v3 v4 v5}


void  S7604C2 ::v10(){vfunc_called(this, "_ZN7S7604C23v10Ev");}
void  S7604C2 ::v11(){vfunc_called(this, "_ZN7S7604C23v11Ev");}
void  S7604C2 ::v12(){vfunc_called(this, "_ZN7S7604C23v12Ev");}
void  S7604C2 ::v13(){vfunc_called(this, "_ZN7S7604C23v13Ev");}
void  S7604C2 ::v14(){vfunc_called(this, "_ZN7S7604C23v14Ev");}
S7604C2 ::~S7604C2(){ note_dtor("S7604C2", this);} // tgen
S7604C2 ::S7604C2(){ note_ctor("S7604C2", this);} // tgen

static void Test_S7604C2()
{
  extern Class_Descriptor cd_S7604C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7604C2, buf);
    S7604C2 *dp, &lv = *(dp=new (buf) S7604C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7604C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7604C2)");
    check_base_class_offset(lv, (S7604C3*), ABISELECT(8,4), "S7604C2");
    test_class_info(&lv, &cd_S7604C2);
    dp->~S7604C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7604C2(Test_S7604C2, "S7604C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7604C2C1Ev();
extern void _ZN7S7604C2D1Ev();
Name_Map name_map_S7604C2[] = {
  NSPAIR(_ZN7S7604C2C1Ev),
  NSPAIR(_ZN7S7604C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7604C3;
extern VTBL_ENTRY _ZTI7S7604C3[];
extern  VTBL_ENTRY _ZTV7S7604C3[];
static Base_Class bases_S7604C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7604C3,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7604C2[];
extern void _ZN7S7604C23v10Ev();
extern void _ZN7S7604C23v11Ev();
extern void _ZN7S7604C23v12Ev();
extern void _ZN7S7604C23v13Ev();
extern void _ZN7S7604C23v14Ev();
extern void _ZN7S7604C32v4Ev();
extern void _ZN7S7604C32v5Ev();
extern void _ZN7S7604C32v6Ev();
extern void _ZN7S7604C32v7Ev();
extern void _ZN7S7604C32v8Ev();
extern void _ZN7S7604C32v9Ev();
static  VTBL_ENTRY vtc_S7604C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7604C2[0]),
  (VTBL_ENTRY)&_ZN7S7604C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7604C2[0]),
  (VTBL_ENTRY)&_ZN7S7604C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v9Ev,
};
extern VTBL_ENTRY _ZTV7S7604C2[];
static  VTT_ENTRY vtt_S7604C2[] = {
  {&(_ZTV7S7604C2[3]),  3,22},
  {&(_ZTV7S7604C2[16]),  16,22},
};
extern VTBL_ENTRY _ZTI7S7604C2[];
extern  VTBL_ENTRY _ZTV7S7604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7604C2[];
Class_Descriptor cd_S7604C2 = {  "S7604C2", // class name
  bases_S7604C2, 1,
  &(vtc_S7604C2[0]), // expected_vtbl_contents
  &(vtt_S7604C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7604C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7604C2),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7604C2),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  S7604C4_nt  {
  virtual  ~S7604C4_nt(); // _ZN10S7604C4_ntD1Ev
  virtual void  v15(); // _ZN10S7604C4_nt3v15Ev
  virtual void  v16(); // _ZN10S7604C4_nt3v16Ev
  S7604C4_nt(); // tgen
};
//SIG(-1 S7604C4_nt) C1{ vd v1 v2}


 S7604C4_nt ::~S7604C4_nt(){ note_dtor("S7604C4_nt", this);}
void  S7604C4_nt ::v15(){vfunc_called(this, "_ZN10S7604C4_nt3v15Ev");}
void  S7604C4_nt ::v16(){vfunc_called(this, "_ZN10S7604C4_nt3v16Ev");}
S7604C4_nt ::S7604C4_nt(){ note_ctor("S7604C4_nt", this);} // tgen

//skip512 S7604C4_nt

#else // __cplusplus

extern void _ZN10S7604C4_ntC1Ev();
extern void _ZN10S7604C4_ntD1Ev();
Name_Map name_map_S7604C4_nt[] = {
  NSPAIR(_ZN10S7604C4_ntC1Ev),
  NSPAIR(_ZN10S7604C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7604C4_nt[];
extern void _ZN10S7604C4_ntD1Ev();
extern void _ZN10S7604C4_ntD0Ev();
extern void _ZN10S7604C4_nt3v15Ev();
extern void _ZN10S7604C4_nt3v16Ev();
static  VTBL_ENTRY vtc_S7604C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7604C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S7604C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7604C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7604C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7604C4_nt3v16Ev,
};
extern VTBL_ENTRY _ZTI10S7604C4_nt[];
VTBL_ENTRY *P__ZTI10S7604C4_nt = _ZTI10S7604C4_nt; 
extern  VTBL_ENTRY _ZTV10S7604C4_nt[];
Class_Descriptor cd_S7604C4_nt = {  "S7604C4_nt", // class name
  0,0,//no base classes
  &(vtc_S7604C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7604C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7604C4_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  S7604C1  : S7604C2 , virtual S7604C4_nt {
  ::S3197C4 s7604c1f0;
  void *s7604c1f1;
  virtual  ~S7604C1(); // _ZN7S7604C1D2Ev
  virtual void  v1(); // _ZN7S7604C12v1Ev
  virtual void  v2(); // _ZN7S7604C12v2Ev
  virtual void  v3(); // _ZN7S7604C12v3Ev
  S7604C1(); // tgen
};
//SIG(1 S7604C1) C1{ BC2{ VBC3{ v4 v5 v6 v7 v8 v9 FL} v10 v11 v12 v13 v14} VBC4{ vd v15 v16} vd v1 v2 v3 FC5{ VBC6{ v23 v24 v25 Fi} BC7{ v26 v27 v28 v29 v30 v31 FL} v17 v18 v19 v20 v21 v22 Fi} Fp}


 S7604C1 ::~S7604C1(){ note_dtor("S7604C1", this);}
void  S7604C1 ::v1(){vfunc_called(this, "_ZN7S7604C12v1Ev");}
void  S7604C1 ::v2(){vfunc_called(this, "_ZN7S7604C12v2Ev");}
void  S7604C1 ::v3(){vfunc_called(this, "_ZN7S7604C12v3Ev");}
S7604C1 ::S7604C1(){ note_ctor("S7604C1", this);} // tgen

static void Test_S7604C1()
{
  extern Class_Descriptor cd_S7604C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S7604C1, buf);
    S7604C1 *dp, &lv = *(dp=new (buf) S7604C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S7604C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7604C1)");
    check_base_class_offset(lv, (S7604C3*)(S7604C2*), ABISELECT(56,32), "S7604C1");
    check_base_class_offset(lv, (S7604C2*), 0, "S7604C1");
    check_base_class_offset(lv, (S7604C4_nt*), ABISELECT(72,44), "S7604C1");
    check_field_offset(lv, s7604c1f0, ABISELECT(8,4), "S7604C1.s7604c1f0");
    check_field_offset(lv, s7604c1f1, ABISELECT(48,28), "S7604C1.s7604c1f1");
    test_class_info(&lv, &cd_S7604C1);
    dp->~S7604C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7604C1(Test_S7604C1, "S7604C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S7604C1C1Ev();
extern void _ZN7S7604C1D2Ev();
Name_Map name_map_S7604C1[] = {
  NSPAIR(_ZN7S7604C1C1Ev),
  NSPAIR(_ZN7S7604C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7604C3;
extern VTBL_ENTRY _ZTI7S7604C3[];
extern  VTBL_ENTRY _ZTV7S7604C3[];
extern Class_Descriptor cd_S7604C2;
extern VTBL_ENTRY _ZTI7S7604C2[];
extern  VTBL_ENTRY _ZTV7S7604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7604C2[];
extern Class_Descriptor cd_S7604C4_nt;
extern VTBL_ENTRY _ZTI10S7604C4_nt[];
extern  VTBL_ENTRY _ZTV10S7604C4_nt[];
static Base_Class bases_S7604C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7604C3,    ABISELECT(56,32), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7604C2,    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_S7604C4_nt,    ABISELECT(72,44), //bcp->offset
    28, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7604C1[];
extern void _ZN7S7604C23v10Ev();
extern void _ZN7S7604C23v11Ev();
extern void _ZN7S7604C23v12Ev();
extern void _ZN7S7604C23v13Ev();
extern void _ZN7S7604C23v14Ev();
extern void _ZN7S7604C1D1Ev();
extern void _ZN7S7604C1D0Ev();
extern void _ZN7S7604C12v1Ev();
extern void _ZN7S7604C12v2Ev();
extern void _ZN7S7604C12v3Ev();
extern void _ZN7S7604C32v4Ev();
extern void _ZN7S7604C32v5Ev();
extern void _ZN7S7604C32v6Ev();
extern void _ZN7S7604C32v7Ev();
extern void _ZN7S7604C32v8Ev();
extern void _ZN7S7604C32v9Ev();
extern void ABISELECT(_ZTv0_n24_N7S7604C1D1Ev,_ZTv0_n12_N7S7604C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7604C1D1Ev,_ZThn44_N7S7604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7604C1D0Ev,_ZTv0_n12_N7S7604C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S7604C1D0Ev,_ZThn44_N7S7604C1D0Ev)() __attribute__((weak));
extern void _ZN10S7604C4_nt3v15Ev();
extern void _ZN10S7604C4_nt3v16Ev();
static  VTBL_ENTRY vtc_S7604C1[] = {
  ABISELECT(72,44),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7604C1[0]),
  (VTBL_ENTRY)&_ZN7S7604C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7604C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7604C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7604C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7604C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7604C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7604C1[0]),
  (VTBL_ENTRY)&_ZN7S7604C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v9Ev,
  0,
  0,
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7604C1D1Ev,_ZTv0_n12_N7S7604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7604C1D0Ev,_ZTv0_n12_N7S7604C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7604C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7604C4_nt3v16Ev,
};
extern VTBL_ENTRY _ZTV7S7604C1[];
extern void _ZN7S7604C23v10Ev();
extern void _ZN7S7604C23v11Ev();
extern void _ZN7S7604C23v12Ev();
extern void _ZN7S7604C23v13Ev();
extern void _ZN7S7604C23v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7604C2__7S7604C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7604C2[0]),
  (VTBL_ENTRY)&_ZN7S7604C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7604C23v14Ev,
};
extern void _ZN7S7604C32v4Ev();
extern void _ZN7S7604C32v5Ev();
extern void _ZN7S7604C32v6Ev();
extern void _ZN7S7604C32v7Ev();
extern void _ZN7S7604C32v8Ev();
extern void _ZN7S7604C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7604C3__7S7604C2__7S7604C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7604C2[0]),
  (VTBL_ENTRY)&_ZN7S7604C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7604C32v9Ev,
};
static  VTT_ENTRY vtt_S7604C1[] = {
  {&(_ZTV7S7604C1[4]),  4,37},
  {&(_tg__ZTV7S7604C2__7S7604C1[3]),  3,8},
  {&(_tg__ZTV7S7604C3__7S7604C2__7S7604C1[8]),  8,14},
  {&(_ZTV7S7604C1[22]),  22,37},
  {&(_ZTV7S7604C1[33]),  33,37},
};
extern VTBL_ENTRY _ZTI7S7604C1[];
extern  VTBL_ENTRY _ZTV7S7604C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7604C1[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7604C1D0Ev,_ZTv0_n12_N7S7604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7604C1D0Ev,_ZThn44_N7S7604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7604C1D1Ev,_ZTv0_n12_N7S7604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7604C1D1Ev,_ZThn44_N7S7604C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7604C1 = {  "S7604C1", // class name
  bases_S7604C1, 3,
  &(vtc_S7604C1[0]), // expected_vtbl_contents
  &(vtt_S7604C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S7604C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7604C1),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7604C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4491C3  {
  char s4491c3f0;
  int s4491c3f1;
  virtual  ~S4491C3(); // _ZN7S4491C3D1Ev
  virtual void  v2(); // _ZN7S4491C32v2Ev
  virtual void  v3(); // _ZN7S4491C32v3Ev
  virtual void  v4(); // _ZN7S4491C32v4Ev
  virtual void  v5(); // _ZN7S4491C32v5Ev
  S4491C3(); // tgen
};
//SIG(-1 S4491C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4491C3 ::~S4491C3(){ note_dtor("S4491C3", this);}
void  S4491C3 ::v2(){vfunc_called(this, "_ZN7S4491C32v2Ev");}
void  S4491C3 ::v3(){vfunc_called(this, "_ZN7S4491C32v3Ev");}
void  S4491C3 ::v4(){vfunc_called(this, "_ZN7S4491C32v4Ev");}
void  S4491C3 ::v5(){vfunc_called(this, "_ZN7S4491C32v5Ev");}
S4491C3 ::S4491C3(){ note_ctor("S4491C3", this);} // tgen

static void Test_S4491C3()
{
  extern Class_Descriptor cd_S4491C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4491C3, buf);
    S4491C3 *dp, &lv = *(dp=new (buf) S4491C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4491C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4491C3)");
    check_field_offset(lv, s4491c3f0, ABISELECT(8,4), "S4491C3.s4491c3f0");
    check_field_offset(lv, s4491c3f1, ABISELECT(12,8), "S4491C3.s4491c3f1");
    test_class_info(&lv, &cd_S4491C3);
    dp->~S4491C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4491C3(Test_S4491C3, "S4491C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4491C3C1Ev();
extern void _ZN7S4491C3D1Ev();
Name_Map name_map_S4491C3[] = {
  NSPAIR(_ZN7S4491C3C1Ev),
  NSPAIR(_ZN7S4491C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4491C3[];
extern void _ZN7S4491C3D1Ev();
extern void _ZN7S4491C3D0Ev();
extern void _ZN7S4491C32v2Ev();
extern void _ZN7S4491C32v3Ev();
extern void _ZN7S4491C32v4Ev();
extern void _ZN7S4491C32v5Ev();
static  VTBL_ENTRY vtc_S4491C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4491C3[0]),
  (VTBL_ENTRY)&_ZN7S4491C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4491C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4491C3[];
extern  VTBL_ENTRY _ZTV7S4491C3[];
Class_Descriptor cd_S4491C3 = {  "S4491C3", // class name
  0,0,//no base classes
  &(vtc_S4491C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4491C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4491C3),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  S4491C2  : S4491C3 {
  ::S4224C24 s4491c2f0[8];
  ::S5309C14_nt s4491c2f1[8];
  int s4491c2f2;
  virtual  ~S4491C2(); // _ZN7S4491C2D1Ev
  virtual void  v6(); // _ZN7S4491C22v6Ev
  virtual void  v7(); // _ZN7S4491C22v7Ev
  virtual void  v8(); // _ZN7S4491C22v8Ev
  S4491C2(); // tgen
};
//SIG(-1 S4491C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4491C2 ::~S4491C2(){ note_dtor("S4491C2", this);}
void  S4491C2 ::v6(){vfunc_called(this, "_ZN7S4491C22v6Ev");}
void  S4491C2 ::v7(){vfunc_called(this, "_ZN7S4491C22v7Ev");}
void  S4491C2 ::v8(){vfunc_called(this, "_ZN7S4491C22v8Ev");}
S4491C2 ::S4491C2(){ note_ctor("S4491C2", this);} // tgen

static void Test_S4491C2()
{
  extern Class_Descriptor cd_S4491C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4491C2, buf);
    S4491C2 *dp, &lv = *(dp=new (buf) S4491C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4491C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4491C2)");
    check_base_class_offset(lv, (S4491C3*), 0, "S4491C2");
    check_field_offset(lv, s4491c2f0, ABISELECT(16,12), "S4491C2.s4491c2f0");
    check_field_offset(lv, s4491c2f1, ABISELECT(144,108), "S4491C2.s4491c2f1");
    check_field_offset(lv, s4491c2f2, ABISELECT(272,172), "S4491C2.s4491c2f2");
    test_class_info(&lv, &cd_S4491C2);
    dp->~S4491C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4491C2(Test_S4491C2, "S4491C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4491C2C1Ev();
extern void _ZN7S4491C2D1Ev();
Name_Map name_map_S4491C2[] = {
  NSPAIR(_ZN7S4491C2C1Ev),
  NSPAIR(_ZN7S4491C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4491C3;
extern VTBL_ENTRY _ZTI7S4491C3[];
extern  VTBL_ENTRY _ZTV7S4491C3[];
static Base_Class bases_S4491C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4491C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4491C2[];
extern void _ZN7S4491C2D1Ev();
extern void _ZN7S4491C2D0Ev();
extern void _ZN7S4491C32v2Ev();
extern void _ZN7S4491C32v3Ev();
extern void _ZN7S4491C32v4Ev();
extern void _ZN7S4491C32v5Ev();
extern void _ZN7S4491C22v6Ev();
extern void _ZN7S4491C22v7Ev();
extern void _ZN7S4491C22v8Ev();
static  VTBL_ENTRY vtc_S4491C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4491C2[0]),
  (VTBL_ENTRY)&_ZN7S4491C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4491C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4491C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4491C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4491C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4491C2[];
extern  VTBL_ENTRY _ZTV7S4491C2[];
Class_Descriptor cd_S4491C2 = {  "S4491C2", // class name
  bases_S4491C2, 1,
  &(vtc_S4491C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4491C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4491C2),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  S4491C1  : S4491C2 {
  ::S4224C4_nt s4491c1f0;
  virtual  ~S4491C1(); // _ZN7S4491C1D1Ev
  virtual void  v1(); // _ZN7S4491C12v1Ev
  S4491C1(); // tgen
};
//SIG(1 S4491C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 FC9{ BC10{ m Fp Fi FC11{ m} FC11}}}


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

static void Test_S4491C1()
{
  extern Class_Descriptor cd_S4491C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,48)];
    init_test(&cd_S4491C1, buf);
    S4491C1 *dp, &lv = *(dp=new (buf) S4491C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,188), "sizeof(S4491C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4491C1)");
    check_base_class_offset(lv, (S4491C3*)(S4491C2*), 0, "S4491C1");
    check_base_class_offset(lv, (S4491C2*), 0, "S4491C1");
    check_field_offset(lv, s4491c1f0, ABISELECT(280,176), "S4491C1.s4491c1f0");
    test_class_info(&lv, &cd_S4491C1);
    dp->~S4491C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4491C1(Test_S4491C1, "S4491C1", ABISELECT(296,188));

#else // __cplusplus

extern void _ZN7S4491C1C1Ev();
extern void _ZN7S4491C1D1Ev();
Name_Map name_map_S4491C1[] = {
  NSPAIR(_ZN7S4491C1C1Ev),
  NSPAIR(_ZN7S4491C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4491C3;
extern VTBL_ENTRY _ZTI7S4491C3[];
extern  VTBL_ENTRY _ZTV7S4491C3[];
extern Class_Descriptor cd_S4491C2;
extern VTBL_ENTRY _ZTI7S4491C2[];
extern  VTBL_ENTRY _ZTV7S4491C2[];
static Base_Class bases_S4491C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4491C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4491C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4491C1[];
extern void _ZN7S4491C1D1Ev();
extern void _ZN7S4491C1D0Ev();
extern void _ZN7S4491C32v2Ev();
extern void _ZN7S4491C32v3Ev();
extern void _ZN7S4491C32v4Ev();
extern void _ZN7S4491C32v5Ev();
extern void _ZN7S4491C22v6Ev();
extern void _ZN7S4491C22v7Ev();
extern void _ZN7S4491C22v8Ev();
extern void _ZN7S4491C12v1Ev();
static  VTBL_ENTRY vtc_S4491C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4491C1[0]),
  (VTBL_ENTRY)&_ZN7S4491C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4491C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4491C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4491C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4491C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4491C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4491C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4491C1[];
extern  VTBL_ENTRY _ZTV7S4491C1[];
Class_Descriptor cd_S4491C1 = {  "S4491C1", // class name
  bases_S4491C1, 2,
  &(vtc_S4491C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,188), // object size
  NSPAIRA(_ZTI7S4491C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4491C1),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  S8015C2_nt  {
  ::S4224C36 s8015c2f0;
  void  mf8015c2(); // _ZN10S8015C2_nt8mf8015c2Ev
  virtual  ~S8015C2_nt(); // _ZN10S8015C2_ntD1Ev
  S8015C2_nt(); // tgen
};
//SIG(-1 S8015C2_nt) C1{ vd m FC2{ m Fp Fi[2] FC3{ m}}}


void  S8015C2_nt ::mf8015c2(){}
 S8015C2_nt ::~S8015C2_nt(){ note_dtor("S8015C2_nt", this);}
S8015C2_nt ::S8015C2_nt(){ note_ctor("S8015C2_nt", this);} // tgen

//skip512 S8015C2_nt

#else // __cplusplus

extern void _ZN10S8015C2_ntC1Ev();
extern void _ZN10S8015C2_ntD1Ev();
Name_Map name_map_S8015C2_nt[] = {
  NSPAIR(_ZN10S8015C2_ntC1Ev),
  NSPAIR(_ZN10S8015C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8015C2_nt[];
extern void _ZN10S8015C2_ntD1Ev();
extern void _ZN10S8015C2_ntD0Ev();
static  VTBL_ENTRY vtc_S8015C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8015C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8015C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8015C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8015C2_nt[];
VTBL_ENTRY *P__ZTI10S8015C2_nt = _ZTI10S8015C2_nt; 
extern  VTBL_ENTRY _ZTV10S8015C2_nt[];
Class_Descriptor cd_S8015C2_nt = {  "S8015C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8015C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S8015C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8015C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8015C6  {
  char s8015c6f0;
  int s8015c6f1;
  virtual  ~S8015C6(); // _ZN7S8015C6D1Ev
  virtual void  v2(); // _ZN7S8015C62v2Ev
  virtual void  v3(); // _ZN7S8015C62v3Ev
  virtual void  v4(); // _ZN7S8015C62v4Ev
  virtual void  v5(); // _ZN7S8015C62v5Ev
  S8015C6(); // tgen
};
//SIG(-1 S8015C6) C1{ vd v1 v2 v3 v4 Fc Fi}


 S8015C6 ::~S8015C6(){ note_dtor("S8015C6", this);}
void  S8015C6 ::v2(){vfunc_called(this, "_ZN7S8015C62v2Ev");}
void  S8015C6 ::v3(){vfunc_called(this, "_ZN7S8015C62v3Ev");}
void  S8015C6 ::v4(){vfunc_called(this, "_ZN7S8015C62v4Ev");}
void  S8015C6 ::v5(){vfunc_called(this, "_ZN7S8015C62v5Ev");}
S8015C6 ::S8015C6(){ note_ctor("S8015C6", this);} // tgen

static void Test_S8015C6()
{
  extern Class_Descriptor cd_S8015C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8015C6, buf);
    S8015C6 *dp, &lv = *(dp=new (buf) S8015C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8015C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8015C6)");
    check_field_offset(lv, s8015c6f0, ABISELECT(8,4), "S8015C6.s8015c6f0");
    check_field_offset(lv, s8015c6f1, ABISELECT(12,8), "S8015C6.s8015c6f1");
    test_class_info(&lv, &cd_S8015C6);
    dp->~S8015C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8015C6(Test_S8015C6, "S8015C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8015C6C1Ev();
extern void _ZN7S8015C6D1Ev();
Name_Map name_map_S8015C6[] = {
  NSPAIR(_ZN7S8015C6C1Ev),
  NSPAIR(_ZN7S8015C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8015C6[];
extern void _ZN7S8015C6D1Ev();
extern void _ZN7S8015C6D0Ev();
extern void _ZN7S8015C62v2Ev();
extern void _ZN7S8015C62v3Ev();
extern void _ZN7S8015C62v4Ev();
extern void _ZN7S8015C62v5Ev();
static  VTBL_ENTRY vtc_S8015C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8015C6[0]),
  (VTBL_ENTRY)&_ZN7S8015C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8015C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v2Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v3Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v4Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v5Ev,
};
extern VTBL_ENTRY _ZTI7S8015C6[];
extern  VTBL_ENTRY _ZTV7S8015C6[];
Class_Descriptor cd_S8015C6 = {  "S8015C6", // class name
  0,0,//no base classes
  &(vtc_S8015C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8015C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8015C6),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  S8015C5  : S8015C6 {
  ::S4224C24 s8015c5f0[8];
  ::S5309C14_nt s8015c5f1[8];
  int s8015c5f2;
  virtual  ~S8015C5(); // _ZN7S8015C5D1Ev
  virtual void  v6(); // _ZN7S8015C52v6Ev
  virtual void  v7(); // _ZN7S8015C52v7Ev
  virtual void  v8(); // _ZN7S8015C52v8Ev
  S8015C5(); // tgen
};
//SIG(-1 S8015C5) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S8015C5 ::~S8015C5(){ note_dtor("S8015C5", this);}
void  S8015C5 ::v6(){vfunc_called(this, "_ZN7S8015C52v6Ev");}
void  S8015C5 ::v7(){vfunc_called(this, "_ZN7S8015C52v7Ev");}
void  S8015C5 ::v8(){vfunc_called(this, "_ZN7S8015C52v8Ev");}
S8015C5 ::S8015C5(){ note_ctor("S8015C5", this);} // tgen

static void Test_S8015C5()
{
  extern Class_Descriptor cd_S8015C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S8015C5, buf);
    S8015C5 *dp, &lv = *(dp=new (buf) S8015C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S8015C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8015C5)");
    check_base_class_offset(lv, (S8015C6*), 0, "S8015C5");
    check_field_offset(lv, s8015c5f0, ABISELECT(16,12), "S8015C5.s8015c5f0");
    check_field_offset(lv, s8015c5f1, ABISELECT(144,108), "S8015C5.s8015c5f1");
    check_field_offset(lv, s8015c5f2, ABISELECT(272,172), "S8015C5.s8015c5f2");
    test_class_info(&lv, &cd_S8015C5);
    dp->~S8015C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8015C5(Test_S8015C5, "S8015C5", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S8015C5C1Ev();
extern void _ZN7S8015C5D1Ev();
Name_Map name_map_S8015C5[] = {
  NSPAIR(_ZN7S8015C5C1Ev),
  NSPAIR(_ZN7S8015C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8015C6;
extern VTBL_ENTRY _ZTI7S8015C6[];
extern  VTBL_ENTRY _ZTV7S8015C6[];
static Base_Class bases_S8015C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8015C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8015C5[];
extern void _ZN7S8015C5D1Ev();
extern void _ZN7S8015C5D0Ev();
extern void _ZN7S8015C62v2Ev();
extern void _ZN7S8015C62v3Ev();
extern void _ZN7S8015C62v4Ev();
extern void _ZN7S8015C62v5Ev();
extern void _ZN7S8015C52v6Ev();
extern void _ZN7S8015C52v7Ev();
extern void _ZN7S8015C52v8Ev();
static  VTBL_ENTRY vtc_S8015C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8015C5[0]),
  (VTBL_ENTRY)&_ZN7S8015C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8015C5D0Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v2Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v3Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v4Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v5Ev,
  (VTBL_ENTRY)&_ZN7S8015C52v6Ev,
  (VTBL_ENTRY)&_ZN7S8015C52v7Ev,
  (VTBL_ENTRY)&_ZN7S8015C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S8015C5[];
extern  VTBL_ENTRY _ZTV7S8015C5[];
Class_Descriptor cd_S8015C5 = {  "S8015C5", // class name
  bases_S8015C5, 1,
  &(vtc_S8015C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S8015C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8015C5),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  S8015C1  : S8015C2_nt , S8015C5 {
  virtual  ~S8015C1(); // _ZN7S8015C1D1Ev
  virtual void  v1(); // _ZN7S8015C12v1Ev
  S8015C1(); // tgen
};
//SIG(1 S8015C1) C1{ BC2{ vd m FC3{ m Fp Fi[2] FC4{ m}}} BC5{ BC6{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC7{ BC8{ m Fp Fi FC9{ m} FC10{ m}}}[8] FC11{ m Fp[2]}[8] Fi} vd v1}


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

static void Test_S8015C1()
{
  extern Class_Descriptor cd_S8015C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,50)];
    init_test(&cd_S8015C1, buf);
    S8015C1 *dp, &lv = *(dp=new (buf) S8015C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,196), "sizeof(S8015C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8015C1)");
    check_base_class_offset(lv, (S8015C2_nt*), 0, "S8015C1");
    check_base_class_offset(lv, (S8015C6*)(S8015C5*), ABISELECT(32,20), "S8015C1");
    check_base_class_offset(lv, (S8015C5*), ABISELECT(32,20), "S8015C1");
    test_class_info(&lv, &cd_S8015C1);
    dp->~S8015C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8015C1(Test_S8015C1, "S8015C1", ABISELECT(312,196));

#else // __cplusplus

extern void _ZN7S8015C1C1Ev();
extern void _ZN7S8015C1D1Ev();
Name_Map name_map_S8015C1[] = {
  NSPAIR(_ZN7S8015C1C1Ev),
  NSPAIR(_ZN7S8015C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8015C2_nt;
extern VTBL_ENTRY _ZTI10S8015C2_nt[];
extern  VTBL_ENTRY _ZTV10S8015C2_nt[];
extern Class_Descriptor cd_S8015C6;
extern VTBL_ENTRY _ZTI7S8015C6[];
extern  VTBL_ENTRY _ZTV7S8015C6[];
extern Class_Descriptor cd_S8015C5;
extern VTBL_ENTRY _ZTI7S8015C5[];
extern  VTBL_ENTRY _ZTV7S8015C5[];
static Base_Class bases_S8015C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8015C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8015C6,    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_S8015C5,    ABISELECT(32,20), //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},
  {0}};
extern VTBL_ENTRY _ZTI7S8015C1[];
extern void _ZN7S8015C1D1Ev();
extern void _ZN7S8015C1D0Ev();
extern void _ZN7S8015C12v1Ev();
extern void ABISELECT(_ZThn32_N7S8015C1D1Ev,_ZThn20_N7S8015C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S8015C1D0Ev,_ZThn20_N7S8015C1D0Ev)();
extern void _ZN7S8015C62v2Ev();
extern void _ZN7S8015C62v3Ev();
extern void _ZN7S8015C62v4Ev();
extern void _ZN7S8015C62v5Ev();
extern void _ZN7S8015C52v6Ev();
extern void _ZN7S8015C52v7Ev();
extern void _ZN7S8015C52v8Ev();
static  VTBL_ENTRY vtc_S8015C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8015C1[0]),
  (VTBL_ENTRY)&_ZN7S8015C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8015C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8015C12v1Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S8015C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S8015C1D1Ev,_ZThn20_N7S8015C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S8015C1D0Ev,_ZThn20_N7S8015C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8015C62v2Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v3Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v4Ev,
  (VTBL_ENTRY)&_ZN7S8015C62v5Ev,
  (VTBL_ENTRY)&_ZN7S8015C52v6Ev,
  (VTBL_ENTRY)&_ZN7S8015C52v7Ev,
  (VTBL_ENTRY)&_ZN7S8015C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S8015C1[];
extern  VTBL_ENTRY _ZTV7S8015C1[];
Class_Descriptor cd_S8015C1 = {  "S8015C1", // class name
  bases_S8015C1, 3,
  &(vtc_S8015C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,196), // object size
  NSPAIRA(_ZTI7S8015C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8015C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4492C3  {
  char s4492c3f0;
  int s4492c3f1;
  virtual  ~S4492C3(); // _ZN7S4492C3D1Ev
  virtual void  v2(); // _ZN7S4492C32v2Ev
  virtual void  v3(); // _ZN7S4492C32v3Ev
  virtual void  v4(); // _ZN7S4492C32v4Ev
  virtual void  v5(); // _ZN7S4492C32v5Ev
  S4492C3(); // tgen
};
//SIG(-1 S4492C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4492C3 ::~S4492C3(){ note_dtor("S4492C3", this);}
void  S4492C3 ::v2(){vfunc_called(this, "_ZN7S4492C32v2Ev");}
void  S4492C3 ::v3(){vfunc_called(this, "_ZN7S4492C32v3Ev");}
void  S4492C3 ::v4(){vfunc_called(this, "_ZN7S4492C32v4Ev");}
void  S4492C3 ::v5(){vfunc_called(this, "_ZN7S4492C32v5Ev");}
S4492C3 ::S4492C3(){ note_ctor("S4492C3", this);} // tgen

static void Test_S4492C3()
{
  extern Class_Descriptor cd_S4492C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4492C3, buf);
    S4492C3 *dp, &lv = *(dp=new (buf) S4492C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4492C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4492C3)");
    check_field_offset(lv, s4492c3f0, ABISELECT(8,4), "S4492C3.s4492c3f0");
    check_field_offset(lv, s4492c3f1, ABISELECT(12,8), "S4492C3.s4492c3f1");
    test_class_info(&lv, &cd_S4492C3);
    dp->~S4492C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4492C3(Test_S4492C3, "S4492C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4492C3C1Ev();
extern void _ZN7S4492C3D1Ev();
Name_Map name_map_S4492C3[] = {
  NSPAIR(_ZN7S4492C3C1Ev),
  NSPAIR(_ZN7S4492C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4492C3[];
extern void _ZN7S4492C3D1Ev();
extern void _ZN7S4492C3D0Ev();
extern void _ZN7S4492C32v2Ev();
extern void _ZN7S4492C32v3Ev();
extern void _ZN7S4492C32v4Ev();
extern void _ZN7S4492C32v5Ev();
static  VTBL_ENTRY vtc_S4492C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4492C3[0]),
  (VTBL_ENTRY)&_ZN7S4492C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4492C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4492C3[];
extern  VTBL_ENTRY _ZTV7S4492C3[];
Class_Descriptor cd_S4492C3 = {  "S4492C3", // class name
  0,0,//no base classes
  &(vtc_S4492C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4492C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4492C3),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  S4492C2  : S4492C3 {
  ::S4224C24 s4492c2f0[8];
  ::S5309C14_nt s4492c2f1[8];
  int s4492c2f2;
  virtual  ~S4492C2(); // _ZN7S4492C2D1Ev
  virtual void  v6(); // _ZN7S4492C22v6Ev
  virtual void  v7(); // _ZN7S4492C22v7Ev
  virtual void  v8(); // _ZN7S4492C22v8Ev
  S4492C2(); // tgen
};
//SIG(-1 S4492C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4492C2 ::~S4492C2(){ note_dtor("S4492C2", this);}
void  S4492C2 ::v6(){vfunc_called(this, "_ZN7S4492C22v6Ev");}
void  S4492C2 ::v7(){vfunc_called(this, "_ZN7S4492C22v7Ev");}
void  S4492C2 ::v8(){vfunc_called(this, "_ZN7S4492C22v8Ev");}
S4492C2 ::S4492C2(){ note_ctor("S4492C2", this);} // tgen

static void Test_S4492C2()
{
  extern Class_Descriptor cd_S4492C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4492C2, buf);
    S4492C2 *dp, &lv = *(dp=new (buf) S4492C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4492C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4492C2)");
    check_base_class_offset(lv, (S4492C3*), 0, "S4492C2");
    check_field_offset(lv, s4492c2f0, ABISELECT(16,12), "S4492C2.s4492c2f0");
    check_field_offset(lv, s4492c2f1, ABISELECT(144,108), "S4492C2.s4492c2f1");
    check_field_offset(lv, s4492c2f2, ABISELECT(272,172), "S4492C2.s4492c2f2");
    test_class_info(&lv, &cd_S4492C2);
    dp->~S4492C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4492C2(Test_S4492C2, "S4492C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4492C2C1Ev();
extern void _ZN7S4492C2D1Ev();
Name_Map name_map_S4492C2[] = {
  NSPAIR(_ZN7S4492C2C1Ev),
  NSPAIR(_ZN7S4492C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4492C3;
extern VTBL_ENTRY _ZTI7S4492C3[];
extern  VTBL_ENTRY _ZTV7S4492C3[];
static Base_Class bases_S4492C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4492C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4492C2[];
extern void _ZN7S4492C2D1Ev();
extern void _ZN7S4492C2D0Ev();
extern void _ZN7S4492C32v2Ev();
extern void _ZN7S4492C32v3Ev();
extern void _ZN7S4492C32v4Ev();
extern void _ZN7S4492C32v5Ev();
extern void _ZN7S4492C22v6Ev();
extern void _ZN7S4492C22v7Ev();
extern void _ZN7S4492C22v8Ev();
static  VTBL_ENTRY vtc_S4492C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4492C2[0]),
  (VTBL_ENTRY)&_ZN7S4492C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4492C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4492C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4492C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4492C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4492C2[];
extern  VTBL_ENTRY _ZTV7S4492C2[];
Class_Descriptor cd_S4492C2 = {  "S4492C2", // class name
  bases_S4492C2, 1,
  &(vtc_S4492C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4492C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4492C2),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  S4492C1  : S4492C2 {
  ::S4224C25 s4492c1f0;
  int s4492c1f1[6];
  virtual  ~S4492C1(); // _ZN7S4492C1D1Ev
  virtual void  v1(); // _ZN7S4492C12v1Ev
  S4492C1(); // tgen
};
//SIG(1 S4492C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 FC5 Fi[6]}


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

static void Test_S4492C1()
{
  extern Class_Descriptor cd_S4492C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,54)];
    init_test(&cd_S4492C1, buf);
    S4492C1 *dp, &lv = *(dp=new (buf) S4492C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S4492C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4492C1)");
    check_base_class_offset(lv, (S4492C3*)(S4492C2*), 0, "S4492C1");
    check_base_class_offset(lv, (S4492C2*), 0, "S4492C1");
    check_field_offset(lv, s4492c1f0, ABISELECT(280,176), "S4492C1.s4492c1f0");
    check_field_offset(lv, s4492c1f1, ABISELECT(296,188), "S4492C1.s4492c1f1");
    test_class_info(&lv, &cd_S4492C1);
    dp->~S4492C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4492C1(Test_S4492C1, "S4492C1", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN7S4492C1C1Ev();
extern void _ZN7S4492C1D1Ev();
Name_Map name_map_S4492C1[] = {
  NSPAIR(_ZN7S4492C1C1Ev),
  NSPAIR(_ZN7S4492C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4492C3;
extern VTBL_ENTRY _ZTI7S4492C3[];
extern  VTBL_ENTRY _ZTV7S4492C3[];
extern Class_Descriptor cd_S4492C2;
extern VTBL_ENTRY _ZTI7S4492C2[];
extern  VTBL_ENTRY _ZTV7S4492C2[];
static Base_Class bases_S4492C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4492C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4492C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4492C1[];
extern void _ZN7S4492C1D1Ev();
extern void _ZN7S4492C1D0Ev();
extern void _ZN7S4492C32v2Ev();
extern void _ZN7S4492C32v3Ev();
extern void _ZN7S4492C32v4Ev();
extern void _ZN7S4492C32v5Ev();
extern void _ZN7S4492C22v6Ev();
extern void _ZN7S4492C22v7Ev();
extern void _ZN7S4492C22v8Ev();
extern void _ZN7S4492C12v1Ev();
static  VTBL_ENTRY vtc_S4492C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4492C1[0]),
  (VTBL_ENTRY)&_ZN7S4492C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4492C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4492C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4492C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4492C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4492C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4492C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4492C1[];
extern  VTBL_ENTRY _ZTV7S4492C1[];
Class_Descriptor cd_S4492C1 = {  "S4492C1", // class name
  bases_S4492C1, 2,
  &(vtc_S4492C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI7S4492C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4492C1),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  S18817C4  {
  char s18817c4f0;
  int s18817c4f1;
  __tsi64 s18817c4f2;
  short s18817c4f3;
  virtual void  v15(); // _ZN8S18817C43v15Ev
  virtual void  v16(); // _ZN8S18817C43v16Ev
  virtual void  v17(); // _ZN8S18817C43v17Ev
  virtual void  v18(); // _ZN8S18817C43v18Ev
  virtual void  v19(); // _ZN8S18817C43v19Ev
  ~S18817C4(); // tgen
  S18817C4(); // tgen
};
//SIG(-1 S18817C4) C1{ v1 v2 v3 v4 v5 Fc Fi FL Fs}


void  S18817C4 ::v15(){vfunc_called(this, "_ZN8S18817C43v15Ev");}
void  S18817C4 ::v16(){vfunc_called(this, "_ZN8S18817C43v16Ev");}
void  S18817C4 ::v17(){vfunc_called(this, "_ZN8S18817C43v17Ev");}
void  S18817C4 ::v18(){vfunc_called(this, "_ZN8S18817C43v18Ev");}
void  S18817C4 ::v19(){vfunc_called(this, "_ZN8S18817C43v19Ev");}
S18817C4 ::~S18817C4(){ note_dtor("S18817C4", this);} // tgen
S18817C4 ::S18817C4(){ note_ctor("S18817C4", this);} // tgen

static void Test_S18817C4()
{
  extern Class_Descriptor cd_S18817C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S18817C4, buf);
    S18817C4 *dp, &lv = *(dp=new (buf) S18817C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S18817C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18817C4)");
    check_field_offset(lv, s18817c4f0, ABISELECT(8,4), "S18817C4.s18817c4f0");
    check_field_offset(lv, s18817c4f1, ABISELECT(12,8), "S18817C4.s18817c4f1");
    check_field_offset(lv, s18817c4f2, ABISELECT(16,12), "S18817C4.s18817c4f2");
    check_field_offset(lv, s18817c4f3, ABISELECT(24,20), "S18817C4.s18817c4f3");
    test_class_info(&lv, &cd_S18817C4);
    dp->~S18817C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18817C4(Test_S18817C4, "S18817C4", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S18817C4C1Ev();
extern void _ZN8S18817C4D1Ev();
Name_Map name_map_S18817C4[] = {
  NSPAIR(_ZN8S18817C4C1Ev),
  NSPAIR(_ZN8S18817C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18817C4[];
extern void _ZN8S18817C43v15Ev();
extern void _ZN8S18817C43v16Ev();
extern void _ZN8S18817C43v17Ev();
extern void _ZN8S18817C43v18Ev();
extern void _ZN8S18817C43v19Ev();
static  VTBL_ENTRY vtc_S18817C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18817C4[0]),
  (VTBL_ENTRY)&_ZN8S18817C43v15Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v16Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v17Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v18Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v19Ev,
};
extern VTBL_ENTRY _ZTI8S18817C4[];
extern  VTBL_ENTRY _ZTV8S18817C4[];
Class_Descriptor cd_S18817C4 = {  "S18817C4", // class name
  0,0,//no base classes
  &(vtc_S18817C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S18817C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18817C4),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  S18817C3  : S18817C4 {
  ::S18817C4 s18817c3f0;
  virtual void  v20(); // _ZN8S18817C33v20Ev
  virtual void  v21(); // _ZN8S18817C33v21Ev
  virtual void  v22(); // _ZN8S18817C33v22Ev
  virtual void  v23(); // _ZN8S18817C33v23Ev
  virtual void  v24(); // _ZN8S18817C33v24Ev
  ~S18817C3(); // tgen
  S18817C3(); // tgen
};
//SIG(-1 S18817C3) C1{ BC2{ v6 v7 v8 v9 v10 Fc Fi FL Fs} v1 v2 v3 v4 v5 FC2}


void  S18817C3 ::v20(){vfunc_called(this, "_ZN8S18817C33v20Ev");}
void  S18817C3 ::v21(){vfunc_called(this, "_ZN8S18817C33v21Ev");}
void  S18817C3 ::v22(){vfunc_called(this, "_ZN8S18817C33v22Ev");}
void  S18817C3 ::v23(){vfunc_called(this, "_ZN8S18817C33v23Ev");}
void  S18817C3 ::v24(){vfunc_called(this, "_ZN8S18817C33v24Ev");}
S18817C3 ::~S18817C3(){ note_dtor("S18817C3", this);} // tgen
S18817C3 ::S18817C3(){ note_ctor("S18817C3", this);} // tgen

static void Test_S18817C3()
{
  extern Class_Descriptor cd_S18817C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S18817C3, buf);
    S18817C3 *dp, &lv = *(dp=new (buf) S18817C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S18817C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18817C3)");
    check_base_class_offset(lv, (S18817C4*), 0, "S18817C3");
    check_field_offset(lv, s18817c3f0, ABISELECT(32,24), "S18817C3.s18817c3f0");
    test_class_info(&lv, &cd_S18817C3);
    dp->~S18817C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18817C3(Test_S18817C3, "S18817C3", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN8S18817C3C1Ev();
extern void _ZN8S18817C3D1Ev();
Name_Map name_map_S18817C3[] = {
  NSPAIR(_ZN8S18817C3C1Ev),
  NSPAIR(_ZN8S18817C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18817C4;
extern VTBL_ENTRY _ZTI8S18817C4[];
extern  VTBL_ENTRY _ZTV8S18817C4[];
static Base_Class bases_S18817C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18817C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18817C3[];
extern void _ZN8S18817C43v15Ev();
extern void _ZN8S18817C43v16Ev();
extern void _ZN8S18817C43v17Ev();
extern void _ZN8S18817C43v18Ev();
extern void _ZN8S18817C43v19Ev();
extern void _ZN8S18817C33v20Ev();
extern void _ZN8S18817C33v21Ev();
extern void _ZN8S18817C33v22Ev();
extern void _ZN8S18817C33v23Ev();
extern void _ZN8S18817C33v24Ev();
static  VTBL_ENTRY vtc_S18817C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18817C3[0]),
  (VTBL_ENTRY)&_ZN8S18817C43v15Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v16Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v17Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v18Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v19Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v20Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v21Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v22Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v23Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v24Ev,
};
extern VTBL_ENTRY _ZTI8S18817C3[];
extern  VTBL_ENTRY _ZTV8S18817C3[];
Class_Descriptor cd_S18817C3 = {  "S18817C3", // class name
  bases_S18817C3, 1,
  &(vtc_S18817C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI8S18817C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18817C3),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  S18817C2  : virtual S18817C3 , virtual S18817C4 {
  __tsi64 s18817c2f0;
  virtual  ~S18817C2(); // _ZN8S18817C2D2Ev
  virtual void  v9(); // _ZN8S18817C22v9Ev
  virtual void  v10(); // _ZN8S18817C23v10Ev
  virtual void  v11(); // _ZN8S18817C23v11Ev
  virtual void  v12(); // _ZN8S18817C23v12Ev
  virtual void  v13(); // _ZN8S18817C23v13Ev
  virtual void  v14(); // _ZN8S18817C23v14Ev
  S18817C2(); // tgen
};
//SIG(-1 S18817C2) C1{ VBC2{ BC3{ v7 v8 v9 v10 v11 Fc Fi FL Fs} v12 v13 v14 v15 v16 FC3} VBC3 vd v1 v2 v3 v4 v5 v6 FL}


 S18817C2 ::~S18817C2(){ note_dtor("S18817C2", this);}
void  S18817C2 ::v9(){vfunc_called(this, "_ZN8S18817C22v9Ev");}
void  S18817C2 ::v10(){vfunc_called(this, "_ZN8S18817C23v10Ev");}
void  S18817C2 ::v11(){vfunc_called(this, "_ZN8S18817C23v11Ev");}
void  S18817C2 ::v12(){vfunc_called(this, "_ZN8S18817C23v12Ev");}
void  S18817C2 ::v13(){vfunc_called(this, "_ZN8S18817C23v13Ev");}
void  S18817C2 ::v14(){vfunc_called(this, "_ZN8S18817C23v14Ev");}
S18817C2 ::S18817C2(){ note_ctor("S18817C2", this);} // tgen

static void Test_S18817C2()
{
  extern Class_Descriptor cd_S18817C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,22)];
    init_test(&cd_S18817C2, buf);
    S18817C2 *dp, &lv = *(dp=new (buf) S18817C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,84), "sizeof(S18817C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18817C2)");
    check_base_class_offset(lv, (S18817C4*)(S18817C3*), ABISELECT(16,12), "S18817C2");
    check_base_class_offset(lv, (S18817C3*), ABISELECT(16,12), "S18817C2");
    /*is_ambiguous_... S18817C2::S18817C4 */ AMB_check_base_class_offset(lv, (S18817C4*), ABISELECT(80,60), "S18817C2");
    check_field_offset(lv, s18817c2f0, ABISELECT(8,4), "S18817C2.s18817c2f0");
    test_class_info(&lv, &cd_S18817C2);
    dp->~S18817C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18817C2(Test_S18817C2, "S18817C2", ABISELECT(112,84));

#else // __cplusplus

extern void _ZN8S18817C2C1Ev();
extern void _ZN8S18817C2D2Ev();
Name_Map name_map_S18817C2[] = {
  NSPAIR(_ZN8S18817C2C1Ev),
  NSPAIR(_ZN8S18817C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18817C4;
extern VTBL_ENTRY _ZTI8S18817C4[];
extern  VTBL_ENTRY _ZTV8S18817C4[];
extern Class_Descriptor cd_S18817C3;
extern VTBL_ENTRY _ZTI8S18817C3[];
extern  VTBL_ENTRY _ZTV8S18817C3[];
extern Class_Descriptor cd_S18817C4;
extern VTBL_ENTRY _ZTI8S18817C4[];
extern  VTBL_ENTRY _ZTV8S18817C4[];
static Base_Class bases_S18817C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18817C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18817C3,    ABISELECT(16,12), //bcp->offset
    12, //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_S18817C4,    ABISELECT(80,60), //bcp->offset
    34, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18817C2[];
extern void _ZN8S18817C2D1Ev();
extern void _ZN8S18817C2D0Ev();
extern void _ZN8S18817C22v9Ev();
extern void _ZN8S18817C23v10Ev();
extern void _ZN8S18817C23v11Ev();
extern void _ZN8S18817C23v12Ev();
extern void _ZN8S18817C23v13Ev();
extern void _ZN8S18817C23v14Ev();
extern void _ZN8S18817C43v15Ev();
extern void _ZN8S18817C43v16Ev();
extern void _ZN8S18817C43v17Ev();
extern void _ZN8S18817C43v18Ev();
extern void _ZN8S18817C43v19Ev();
extern void _ZN8S18817C33v20Ev();
extern void _ZN8S18817C33v21Ev();
extern void _ZN8S18817C33v22Ev();
extern void _ZN8S18817C33v23Ev();
extern void _ZN8S18817C33v24Ev();
extern void _ZN8S18817C43v15Ev();
extern void _ZN8S18817C43v16Ev();
extern void _ZN8S18817C43v17Ev();
extern void _ZN8S18817C43v18Ev();
extern void _ZN8S18817C43v19Ev();
static  VTBL_ENTRY vtc_S18817C2[] = {
  ABISELECT(80,60),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S18817C2[0]),
  (VTBL_ENTRY)&_ZN8S18817C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18817C2D0Ev,
  (VTBL_ENTRY)&_ZN8S18817C22v9Ev,
  (VTBL_ENTRY)&_ZN8S18817C23v10Ev,
  (VTBL_ENTRY)&_ZN8S18817C23v11Ev,
  (VTBL_ENTRY)&_ZN8S18817C23v12Ev,
  (VTBL_ENTRY)&_ZN8S18817C23v13Ev,
  (VTBL_ENTRY)&_ZN8S18817C23v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S18817C2[0]),
  (VTBL_ENTRY)&_ZN8S18817C43v15Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v16Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v17Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v18Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v19Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v20Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v21Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v22Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v23Ev,
  (VTBL_ENTRY)&_ZN8S18817C33v24Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S18817C2[0]),
  (VTBL_ENTRY)&_ZN8S18817C43v15Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v16Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v17Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v18Ev,
  (VTBL_ENTRY)&_ZN8S18817C43v19Ev,
};
extern VTBL_ENTRY _ZTV8S18817C2[];
static  VTT_ENTRY vtt_S18817C2[] = {
  {&(_ZTV8S18817C2[4]),  4,46},
  {&(_ZTV8S18817C2[24]),  24,46},
  {&(_ZTV8S18817C2[41]),  41,46},
};
extern VTBL_ENTRY _ZTI8S18817C2[];
extern  VTBL_ENTRY _ZTV8S18817C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18817C2[];
Class_Descriptor cd_S18817C2 = {  "S18817C2", // class name
  bases_S18817C2, 3,
  &(vtc_S18817C2[0]), // expected_vtbl_contents
  &(vtt_S18817C2[0]), // expected_vtt_contents
  ABISELECT(112,84), // object size
  NSPAIRA(_ZTI8S18817C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18817C2),46, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18817C2),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  S18817C1  {
  ::S18817C2 s18817c1f0;
  void *s18817c1f1;
  virtual void  v1(); // _ZN8S18817C12v1Ev
  virtual void  v2(); // _ZN8S18817C12v2Ev
  virtual void  v3(); // _ZN8S18817C12v3Ev
  virtual void  v4(); // _ZN8S18817C12v4Ev
  virtual void  v5(); // _ZN8S18817C12v5Ev
  virtual void  v6(); // _ZN8S18817C12v6Ev
  virtual void  v7(); // _ZN8S18817C12v7Ev
  virtual void  v8(); // _ZN8S18817C12v8Ev
  ~S18817C1(); // tgen
  S18817C1(); // tgen
};
//SIG(1 S18817C1) C1{ v1 v2 v3 v4 v5 v6 v7 v8 FC2{ VBC3{ BC4{ v15 v16 v17 v18 v19 Fc Fi FL Fs} v20 v21 v22 v23 v24 FC4} VBC4 vd v9 v10 v11 v12 v13 v14 FL} Fp}


void  S18817C1 ::v1(){vfunc_called(this, "_ZN8S18817C12v1Ev");}
void  S18817C1 ::v2(){vfunc_called(this, "_ZN8S18817C12v2Ev");}
void  S18817C1 ::v3(){vfunc_called(this, "_ZN8S18817C12v3Ev");}
void  S18817C1 ::v4(){vfunc_called(this, "_ZN8S18817C12v4Ev");}
void  S18817C1 ::v5(){vfunc_called(this, "_ZN8S18817C12v5Ev");}
void  S18817C1 ::v6(){vfunc_called(this, "_ZN8S18817C12v6Ev");}
void  S18817C1 ::v7(){vfunc_called(this, "_ZN8S18817C12v7Ev");}
void  S18817C1 ::v8(){vfunc_called(this, "_ZN8S18817C12v8Ev");}
S18817C1 ::~S18817C1(){ note_dtor("S18817C1", this);} // tgen
S18817C1 ::S18817C1(){ note_ctor("S18817C1", this);} // tgen

static void Test_S18817C1()
{
  extern Class_Descriptor cd_S18817C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S18817C1, buf);
    S18817C1 *dp, &lv = *(dp=new (buf) S18817C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S18817C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18817C1)");
    check_field_offset(lv, s18817c1f0, ABISELECT(8,4), "S18817C1.s18817c1f0");
    check_field_offset(lv, s18817c1f1, ABISELECT(120,88), "S18817C1.s18817c1f1");
    test_class_info(&lv, &cd_S18817C1);
    dp->~S18817C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18817C1(Test_S18817C1, "S18817C1", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S18817C1C1Ev();
extern void _ZN8S18817C1D1Ev();
Name_Map name_map_S18817C1[] = {
  NSPAIR(_ZN8S18817C1C1Ev),
  NSPAIR(_ZN8S18817C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18817C1[];
extern void _ZN8S18817C12v1Ev();
extern void _ZN8S18817C12v2Ev();
extern void _ZN8S18817C12v3Ev();
extern void _ZN8S18817C12v4Ev();
extern void _ZN8S18817C12v5Ev();
extern void _ZN8S18817C12v6Ev();
extern void _ZN8S18817C12v7Ev();
extern void _ZN8S18817C12v8Ev();
static  VTBL_ENTRY vtc_S18817C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18817C1[0]),
  (VTBL_ENTRY)&_ZN8S18817C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18817C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S18817C1[];
extern  VTBL_ENTRY _ZTV8S18817C1[];
Class_Descriptor cd_S18817C1 = {  "S18817C1", // class name
  0,0,//no base classes
  &(vtc_S18817C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S18817C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18817C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4493C3  {
  char s4493c3f0;
  int s4493c3f1;
  virtual  ~S4493C3(); // _ZN7S4493C3D1Ev
  virtual void  v2(); // _ZN7S4493C32v2Ev
  virtual void  v3(); // _ZN7S4493C32v3Ev
  virtual void  v4(); // _ZN7S4493C32v4Ev
  virtual void  v5(); // _ZN7S4493C32v5Ev
  S4493C3(); // tgen
};
//SIG(-1 S4493C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4493C3 ::~S4493C3(){ note_dtor("S4493C3", this);}
void  S4493C3 ::v2(){vfunc_called(this, "_ZN7S4493C32v2Ev");}
void  S4493C3 ::v3(){vfunc_called(this, "_ZN7S4493C32v3Ev");}
void  S4493C3 ::v4(){vfunc_called(this, "_ZN7S4493C32v4Ev");}
void  S4493C3 ::v5(){vfunc_called(this, "_ZN7S4493C32v5Ev");}
S4493C3 ::S4493C3(){ note_ctor("S4493C3", this);} // tgen

static void Test_S4493C3()
{
  extern Class_Descriptor cd_S4493C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4493C3, buf);
    S4493C3 *dp, &lv = *(dp=new (buf) S4493C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4493C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4493C3)");
    check_field_offset(lv, s4493c3f0, ABISELECT(8,4), "S4493C3.s4493c3f0");
    check_field_offset(lv, s4493c3f1, ABISELECT(12,8), "S4493C3.s4493c3f1");
    test_class_info(&lv, &cd_S4493C3);
    dp->~S4493C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4493C3(Test_S4493C3, "S4493C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4493C3C1Ev();
extern void _ZN7S4493C3D1Ev();
Name_Map name_map_S4493C3[] = {
  NSPAIR(_ZN7S4493C3C1Ev),
  NSPAIR(_ZN7S4493C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4493C3[];
extern void _ZN7S4493C3D1Ev();
extern void _ZN7S4493C3D0Ev();
extern void _ZN7S4493C32v2Ev();
extern void _ZN7S4493C32v3Ev();
extern void _ZN7S4493C32v4Ev();
extern void _ZN7S4493C32v5Ev();
static  VTBL_ENTRY vtc_S4493C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4493C3[0]),
  (VTBL_ENTRY)&_ZN7S4493C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4493C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4493C3[];
extern  VTBL_ENTRY _ZTV7S4493C3[];
Class_Descriptor cd_S4493C3 = {  "S4493C3", // class name
  0,0,//no base classes
  &(vtc_S4493C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4493C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4493C3),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  S4493C2  : S4493C3 {
  ::S4224C24 s4493c2f0[8];
  ::S5309C14_nt s4493c2f1[8];
  int s4493c2f2;
  virtual  ~S4493C2(); // _ZN7S4493C2D1Ev
  virtual void  v6(); // _ZN7S4493C22v6Ev
  virtual void  v7(); // _ZN7S4493C22v7Ev
  virtual void  v8(); // _ZN7S4493C22v8Ev
  S4493C2(); // tgen
};
//SIG(-1 S4493C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4493C2 ::~S4493C2(){ note_dtor("S4493C2", this);}
void  S4493C2 ::v6(){vfunc_called(this, "_ZN7S4493C22v6Ev");}
void  S4493C2 ::v7(){vfunc_called(this, "_ZN7S4493C22v7Ev");}
void  S4493C2 ::v8(){vfunc_called(this, "_ZN7S4493C22v8Ev");}
S4493C2 ::S4493C2(){ note_ctor("S4493C2", this);} // tgen

static void Test_S4493C2()
{
  extern Class_Descriptor cd_S4493C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4493C2, buf);
    S4493C2 *dp, &lv = *(dp=new (buf) S4493C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4493C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4493C2)");
    check_base_class_offset(lv, (S4493C3*), 0, "S4493C2");
    check_field_offset(lv, s4493c2f0, ABISELECT(16,12), "S4493C2.s4493c2f0");
    check_field_offset(lv, s4493c2f1, ABISELECT(144,108), "S4493C2.s4493c2f1");
    check_field_offset(lv, s4493c2f2, ABISELECT(272,172), "S4493C2.s4493c2f2");
    test_class_info(&lv, &cd_S4493C2);
    dp->~S4493C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4493C2(Test_S4493C2, "S4493C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4493C2C1Ev();
extern void _ZN7S4493C2D1Ev();
Name_Map name_map_S4493C2[] = {
  NSPAIR(_ZN7S4493C2C1Ev),
  NSPAIR(_ZN7S4493C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4493C3;
extern VTBL_ENTRY _ZTI7S4493C3[];
extern  VTBL_ENTRY _ZTV7S4493C3[];
static Base_Class bases_S4493C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4493C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4493C2[];
extern void _ZN7S4493C2D1Ev();
extern void _ZN7S4493C2D0Ev();
extern void _ZN7S4493C32v2Ev();
extern void _ZN7S4493C32v3Ev();
extern void _ZN7S4493C32v4Ev();
extern void _ZN7S4493C32v5Ev();
extern void _ZN7S4493C22v6Ev();
extern void _ZN7S4493C22v7Ev();
extern void _ZN7S4493C22v8Ev();
static  VTBL_ENTRY vtc_S4493C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4493C2[0]),
  (VTBL_ENTRY)&_ZN7S4493C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4493C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4493C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4493C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4493C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4493C2[];
extern  VTBL_ENTRY _ZTV7S4493C2[];
Class_Descriptor cd_S4493C2 = {  "S4493C2", // class name
  bases_S4493C2, 1,
  &(vtc_S4493C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4493C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4493C2),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  S4493C1  : S4493C2 {
  ::S4224C25 s4493c1f0;
  int s4493c1f1;
  virtual  ~S4493C1(); // _ZN7S4493C1D1Ev
  virtual void  v1(); // _ZN7S4493C12v1Ev
  S4493C1(); // tgen
};
//SIG(1 S4493C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 FC5 Fi}


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

static void Test_S4493C1()
{
  extern Class_Descriptor cd_S4493C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,49)];
    init_test(&cd_S4493C1, buf);
    S4493C1 *dp, &lv = *(dp=new (buf) S4493C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,192), "sizeof(S4493C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4493C1)");
    check_base_class_offset(lv, (S4493C3*)(S4493C2*), 0, "S4493C1");
    check_base_class_offset(lv, (S4493C2*), 0, "S4493C1");
    check_field_offset(lv, s4493c1f0, ABISELECT(280,176), "S4493C1.s4493c1f0");
    check_field_offset(lv, s4493c1f1, ABISELECT(296,188), "S4493C1.s4493c1f1");
    test_class_info(&lv, &cd_S4493C1);
    dp->~S4493C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4493C1(Test_S4493C1, "S4493C1", ABISELECT(304,192));

#else // __cplusplus

extern void _ZN7S4493C1C1Ev();
extern void _ZN7S4493C1D1Ev();
Name_Map name_map_S4493C1[] = {
  NSPAIR(_ZN7S4493C1C1Ev),
  NSPAIR(_ZN7S4493C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4493C3;
extern VTBL_ENTRY _ZTI7S4493C3[];
extern  VTBL_ENTRY _ZTV7S4493C3[];
extern Class_Descriptor cd_S4493C2;
extern VTBL_ENTRY _ZTI7S4493C2[];
extern  VTBL_ENTRY _ZTV7S4493C2[];
static Base_Class bases_S4493C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4493C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4493C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4493C1[];
extern void _ZN7S4493C1D1Ev();
extern void _ZN7S4493C1D0Ev();
extern void _ZN7S4493C32v2Ev();
extern void _ZN7S4493C32v3Ev();
extern void _ZN7S4493C32v4Ev();
extern void _ZN7S4493C32v5Ev();
extern void _ZN7S4493C22v6Ev();
extern void _ZN7S4493C22v7Ev();
extern void _ZN7S4493C22v8Ev();
extern void _ZN7S4493C12v1Ev();
static  VTBL_ENTRY vtc_S4493C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4493C1[0]),
  (VTBL_ENTRY)&_ZN7S4493C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4493C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4493C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4493C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4493C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4493C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4493C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4493C1[];
extern  VTBL_ENTRY _ZTV7S4493C1[];
Class_Descriptor cd_S4493C1 = {  "S4493C1", // class name
  bases_S4493C1, 2,
  &(vtc_S4493C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,192), // object size
  NSPAIRA(_ZTI7S4493C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4493C1),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  S883C5  {
  char s883c5f0;
  int s883c5f1;
  virtual  ~S883C5(); // _ZN6S883C5D1Ev
  virtual void  v2(); // _ZN6S883C52v2Ev
  virtual void  v3(); // _ZN6S883C52v3Ev
  virtual void  v4(); // _ZN6S883C52v4Ev
  virtual void  v5(); // _ZN6S883C52v5Ev
  S883C5(); // tgen
};
//SIG(-1 S883C5) C1{ vd v1 v2 v3 v4 Fc Fi}


 S883C5 ::~S883C5(){ note_dtor("S883C5", this);}
void  S883C5 ::v2(){vfunc_called(this, "_ZN6S883C52v2Ev");}
void  S883C5 ::v3(){vfunc_called(this, "_ZN6S883C52v3Ev");}
void  S883C5 ::v4(){vfunc_called(this, "_ZN6S883C52v4Ev");}
void  S883C5 ::v5(){vfunc_called(this, "_ZN6S883C52v5Ev");}
S883C5 ::S883C5(){ note_ctor("S883C5", this);} // tgen

static void Test_S883C5()
{
  extern Class_Descriptor cd_S883C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S883C5, buf);
    S883C5 *dp, &lv = *(dp=new (buf) S883C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S883C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S883C5)");
    check_field_offset(lv, s883c5f0, ABISELECT(8,4), "S883C5.s883c5f0");
    check_field_offset(lv, s883c5f1, ABISELECT(12,8), "S883C5.s883c5f1");
    test_class_info(&lv, &cd_S883C5);
    dp->~S883C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS883C5(Test_S883C5, "S883C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S883C5C1Ev();
extern void _ZN6S883C5D1Ev();
Name_Map name_map_S883C5[] = {
  NSPAIR(_ZN6S883C5C1Ev),
  NSPAIR(_ZN6S883C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S883C5[];
extern void _ZN6S883C5D1Ev();
extern void _ZN6S883C5D0Ev();
extern void _ZN6S883C52v2Ev();
extern void _ZN6S883C52v3Ev();
extern void _ZN6S883C52v4Ev();
extern void _ZN6S883C52v5Ev();
static  VTBL_ENTRY vtc_S883C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S883C5[0]),
  (VTBL_ENTRY)&_ZN6S883C5D1Ev,
  (VTBL_ENTRY)&_ZN6S883C5D0Ev,
  (VTBL_ENTRY)&_ZN6S883C52v2Ev,
  (VTBL_ENTRY)&_ZN6S883C52v3Ev,
  (VTBL_ENTRY)&_ZN6S883C52v4Ev,
  (VTBL_ENTRY)&_ZN6S883C52v5Ev,
};
extern VTBL_ENTRY _ZTI6S883C5[];
extern  VTBL_ENTRY _ZTV6S883C5[];
Class_Descriptor cd_S883C5 = {  "S883C5", // class name
  0,0,//no base classes
  &(vtc_S883C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S883C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S883C5),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  S883C4  : S883C5 {
  ::S4224C24 s883c4f0[8];
  ::S5309C14_nt s883c4f1[8];
  int s883c4f2;
  virtual  ~S883C4(); // _ZN6S883C4D1Ev
  virtual void  v6(); // _ZN6S883C42v6Ev
  virtual void  v7(); // _ZN6S883C42v7Ev
  virtual void  v8(); // _ZN6S883C42v8Ev
  S883C4(); // tgen
};
//SIG(-1 S883C4) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S883C4 ::~S883C4(){ note_dtor("S883C4", this);}
void  S883C4 ::v6(){vfunc_called(this, "_ZN6S883C42v6Ev");}
void  S883C4 ::v7(){vfunc_called(this, "_ZN6S883C42v7Ev");}
void  S883C4 ::v8(){vfunc_called(this, "_ZN6S883C42v8Ev");}
S883C4 ::S883C4(){ note_ctor("S883C4", this);} // tgen

static void Test_S883C4()
{
  extern Class_Descriptor cd_S883C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S883C4, buf);
    S883C4 *dp, &lv = *(dp=new (buf) S883C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S883C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S883C4)");
    check_base_class_offset(lv, (S883C5*), 0, "S883C4");
    check_field_offset(lv, s883c4f0, ABISELECT(16,12), "S883C4.s883c4f0");
    check_field_offset(lv, s883c4f1, ABISELECT(144,108), "S883C4.s883c4f1");
    check_field_offset(lv, s883c4f2, ABISELECT(272,172), "S883C4.s883c4f2");
    test_class_info(&lv, &cd_S883C4);
    dp->~S883C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS883C4(Test_S883C4, "S883C4", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN6S883C4C1Ev();
extern void _ZN6S883C4D1Ev();
Name_Map name_map_S883C4[] = {
  NSPAIR(_ZN6S883C4C1Ev),
  NSPAIR(_ZN6S883C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S883C5;
extern VTBL_ENTRY _ZTI6S883C5[];
extern  VTBL_ENTRY _ZTV6S883C5[];
static Base_Class bases_S883C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S883C4[];
extern void _ZN6S883C4D1Ev();
extern void _ZN6S883C4D0Ev();
extern void _ZN6S883C52v2Ev();
extern void _ZN6S883C52v3Ev();
extern void _ZN6S883C52v4Ev();
extern void _ZN6S883C52v5Ev();
extern void _ZN6S883C42v6Ev();
extern void _ZN6S883C42v7Ev();
extern void _ZN6S883C42v8Ev();
static  VTBL_ENTRY vtc_S883C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S883C4[0]),
  (VTBL_ENTRY)&_ZN6S883C4D1Ev,
  (VTBL_ENTRY)&_ZN6S883C4D0Ev,
  (VTBL_ENTRY)&_ZN6S883C52v2Ev,
  (VTBL_ENTRY)&_ZN6S883C52v3Ev,
  (VTBL_ENTRY)&_ZN6S883C52v4Ev,
  (VTBL_ENTRY)&_ZN6S883C52v5Ev,
  (VTBL_ENTRY)&_ZN6S883C42v6Ev,
  (VTBL_ENTRY)&_ZN6S883C42v7Ev,
  (VTBL_ENTRY)&_ZN6S883C42v8Ev,
};
extern VTBL_ENTRY _ZTI6S883C4[];
extern  VTBL_ENTRY _ZTV6S883C4[];
Class_Descriptor cd_S883C4 = {  "S883C4", // class name
  bases_S883C4, 1,
  &(vtc_S883C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI6S883C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S883C4),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  S883C3  : S883C4 {
  void *s883c3f0[9];
  virtual  ~S883C3(); // _ZN6S883C3D1Ev
  virtual void  v9(); // _ZN6S883C32v9Ev
  S883C3(); // tgen
};
//SIG(-1 S883C3) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S883C3()
{
  extern Class_Descriptor cd_S883C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S883C3, buf);
    S883C3 *dp, &lv = *(dp=new (buf) S883C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S883C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S883C3)");
    check_base_class_offset(lv, (S883C5*)(S883C4*), 0, "S883C3");
    check_base_class_offset(lv, (S883C4*), 0, "S883C3");
    check_field_offset(lv, s883c3f0, ABISELECT(280,176), "S883C3.s883c3f0");
    test_class_info(&lv, &cd_S883C3);
    dp->~S883C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS883C3(Test_S883C3, "S883C3", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S883C3C1Ev();
extern void _ZN6S883C3D1Ev();
Name_Map name_map_S883C3[] = {
  NSPAIR(_ZN6S883C3C1Ev),
  NSPAIR(_ZN6S883C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S883C5;
extern VTBL_ENTRY _ZTI6S883C5[];
extern  VTBL_ENTRY _ZTV6S883C5[];
extern Class_Descriptor cd_S883C4;
extern VTBL_ENTRY _ZTI6S883C4[];
extern  VTBL_ENTRY _ZTV6S883C4[];
static Base_Class bases_S883C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S883C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S883C3[];
extern void _ZN6S883C3D1Ev();
extern void _ZN6S883C3D0Ev();
extern void _ZN6S883C52v2Ev();
extern void _ZN6S883C52v3Ev();
extern void _ZN6S883C52v4Ev();
extern void _ZN6S883C52v5Ev();
extern void _ZN6S883C42v6Ev();
extern void _ZN6S883C42v7Ev();
extern void _ZN6S883C42v8Ev();
extern void _ZN6S883C32v9Ev();
static  VTBL_ENTRY vtc_S883C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S883C3[0]),
  (VTBL_ENTRY)&_ZN6S883C3D1Ev,
  (VTBL_ENTRY)&_ZN6S883C3D0Ev,
  (VTBL_ENTRY)&_ZN6S883C52v2Ev,
  (VTBL_ENTRY)&_ZN6S883C52v3Ev,
  (VTBL_ENTRY)&_ZN6S883C52v4Ev,
  (VTBL_ENTRY)&_ZN6S883C52v5Ev,
  (VTBL_ENTRY)&_ZN6S883C42v6Ev,
  (VTBL_ENTRY)&_ZN6S883C42v7Ev,
  (VTBL_ENTRY)&_ZN6S883C42v8Ev,
  (VTBL_ENTRY)&_ZN6S883C32v9Ev,
};
extern VTBL_ENTRY _ZTI6S883C3[];
extern  VTBL_ENTRY _ZTV6S883C3[];
Class_Descriptor cd_S883C3 = {  "S883C3", // class name
  bases_S883C3, 2,
  &(vtc_S883C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S883C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S883C3),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  S883C2  : S883C3 {
  virtual  ~S883C2(); // _ZN6S883C2D1Ev
  virtual void  v10(); // _ZN6S883C23v10Ev
  S883C2(); // tgen
};
//SIG(-1 S883C2) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v1}


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

static void Test_S883C2()
{
  extern Class_Descriptor cd_S883C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S883C2, buf);
    S883C2 *dp, &lv = *(dp=new (buf) S883C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S883C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S883C2)");
    check_base_class_offset(lv, (S883C5*)(S883C4*)(S883C3*), 0, "S883C2");
    check_base_class_offset(lv, (S883C4*)(S883C3*), 0, "S883C2");
    check_base_class_offset(lv, (S883C3*), 0, "S883C2");
    test_class_info(&lv, &cd_S883C2);
    dp->~S883C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS883C2(Test_S883C2, "S883C2", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S883C2C1Ev();
extern void _ZN6S883C2D1Ev();
Name_Map name_map_S883C2[] = {
  NSPAIR(_ZN6S883C2C1Ev),
  NSPAIR(_ZN6S883C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S883C5;
extern VTBL_ENTRY _ZTI6S883C5[];
extern  VTBL_ENTRY _ZTV6S883C5[];
extern Class_Descriptor cd_S883C4;
extern VTBL_ENTRY _ZTI6S883C4[];
extern  VTBL_ENTRY _ZTV6S883C4[];
extern Class_Descriptor cd_S883C3;
extern VTBL_ENTRY _ZTI6S883C3[];
extern  VTBL_ENTRY _ZTV6S883C3[];
static Base_Class bases_S883C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S883C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S883C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S883C2[];
extern void _ZN6S883C2D1Ev();
extern void _ZN6S883C2D0Ev();
extern void _ZN6S883C52v2Ev();
extern void _ZN6S883C52v3Ev();
extern void _ZN6S883C52v4Ev();
extern void _ZN6S883C52v5Ev();
extern void _ZN6S883C42v6Ev();
extern void _ZN6S883C42v7Ev();
extern void _ZN6S883C42v8Ev();
extern void _ZN6S883C32v9Ev();
extern void _ZN6S883C23v10Ev();
static  VTBL_ENTRY vtc_S883C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S883C2[0]),
  (VTBL_ENTRY)&_ZN6S883C2D1Ev,
  (VTBL_ENTRY)&_ZN6S883C2D0Ev,
  (VTBL_ENTRY)&_ZN6S883C52v2Ev,
  (VTBL_ENTRY)&_ZN6S883C52v3Ev,
  (VTBL_ENTRY)&_ZN6S883C52v4Ev,
  (VTBL_ENTRY)&_ZN6S883C52v5Ev,
  (VTBL_ENTRY)&_ZN6S883C42v6Ev,
  (VTBL_ENTRY)&_ZN6S883C42v7Ev,
  (VTBL_ENTRY)&_ZN6S883C42v8Ev,
  (VTBL_ENTRY)&_ZN6S883C32v9Ev,
  (VTBL_ENTRY)&_ZN6S883C23v10Ev,
};
extern VTBL_ENTRY _ZTI6S883C2[];
extern  VTBL_ENTRY _ZTV6S883C2[];
Class_Descriptor cd_S883C2 = {  "S883C2", // class name
  bases_S883C2, 3,
  &(vtc_S883C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S883C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S883C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S883C1  : S883C2 {
  virtual  ~S883C1(); // _ZN6S883C1D1Ev
  virtual void  v1(); // _ZN6S883C12v1Ev
  S883C1(); // tgen
};
//SIG(1 S883C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}}[8] FC10{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v10} vd v1}


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

static void Test_S883C1()
{
  extern Class_Descriptor cd_S883C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S883C1, buf);
    S883C1 *dp, &lv = *(dp=new (buf) S883C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S883C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S883C1)");
    check_base_class_offset(lv, (S883C5*)(S883C4*)(S883C3*)(S883C2*), 0, "S883C1");
    check_base_class_offset(lv, (S883C4*)(S883C3*)(S883C2*), 0, "S883C1");
    check_base_class_offset(lv, (S883C3*)(S883C2*), 0, "S883C1");
    check_base_class_offset(lv, (S883C2*), 0, "S883C1");
    test_class_info(&lv, &cd_S883C1);
    dp->~S883C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS883C1(Test_S883C1, "S883C1", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN6S883C1C1Ev();
extern void _ZN6S883C1D1Ev();
Name_Map name_map_S883C1[] = {
  NSPAIR(_ZN6S883C1C1Ev),
  NSPAIR(_ZN6S883C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S883C5;
extern VTBL_ENTRY _ZTI6S883C5[];
extern  VTBL_ENTRY _ZTV6S883C5[];
extern Class_Descriptor cd_S883C4;
extern VTBL_ENTRY _ZTI6S883C4[];
extern  VTBL_ENTRY _ZTV6S883C4[];
extern Class_Descriptor cd_S883C3;
extern VTBL_ENTRY _ZTI6S883C3[];
extern  VTBL_ENTRY _ZTV6S883C3[];
extern Class_Descriptor cd_S883C2;
extern VTBL_ENTRY _ZTI6S883C2[];
extern  VTBL_ENTRY _ZTV6S883C2[];
static Base_Class bases_S883C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S883C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S883C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S883C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S883C1[];
extern void _ZN6S883C1D1Ev();
extern void _ZN6S883C1D0Ev();
extern void _ZN6S883C52v2Ev();
extern void _ZN6S883C52v3Ev();
extern void _ZN6S883C52v4Ev();
extern void _ZN6S883C52v5Ev();
extern void _ZN6S883C42v6Ev();
extern void _ZN6S883C42v7Ev();
extern void _ZN6S883C42v8Ev();
extern void _ZN6S883C32v9Ev();
extern void _ZN6S883C23v10Ev();
extern void _ZN6S883C12v1Ev();
static  VTBL_ENTRY vtc_S883C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S883C1[0]),
  (VTBL_ENTRY)&_ZN6S883C1D1Ev,
  (VTBL_ENTRY)&_ZN6S883C1D0Ev,
  (VTBL_ENTRY)&_ZN6S883C52v2Ev,
  (VTBL_ENTRY)&_ZN6S883C52v3Ev,
  (VTBL_ENTRY)&_ZN6S883C52v4Ev,
  (VTBL_ENTRY)&_ZN6S883C52v5Ev,
  (VTBL_ENTRY)&_ZN6S883C42v6Ev,
  (VTBL_ENTRY)&_ZN6S883C42v7Ev,
  (VTBL_ENTRY)&_ZN6S883C42v8Ev,
  (VTBL_ENTRY)&_ZN6S883C32v9Ev,
  (VTBL_ENTRY)&_ZN6S883C23v10Ev,
  (VTBL_ENTRY)&_ZN6S883C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S883C1[];
extern  VTBL_ENTRY _ZTV6S883C1[];
Class_Descriptor cd_S883C1 = {  "S883C1", // class name
  bases_S883C1, 4,
  &(vtc_S883C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI6S883C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S883C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4376C3  {
  ::S4224C19_nt s4376c3f0;
  int s4376c3f1[2];
  char s4376c3f2;
  virtual  ~S4376C3(); // _ZN7S4376C3D1Ev
  virtual void  v2(); // _ZN7S4376C32v2Ev
  virtual void  v3(); // _ZN7S4376C32v3Ev
  virtual void  v4(); // _ZN7S4376C32v4Ev
  S4376C3(); // tgen
};
//SIG(-1 S4376C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4376C3 ::~S4376C3(){ note_dtor("S4376C3", this);}
void  S4376C3 ::v2(){vfunc_called(this, "_ZN7S4376C32v2Ev");}
void  S4376C3 ::v3(){vfunc_called(this, "_ZN7S4376C32v3Ev");}
void  S4376C3 ::v4(){vfunc_called(this, "_ZN7S4376C32v4Ev");}
S4376C3 ::S4376C3(){ note_ctor("S4376C3", this);} // tgen

static void Test_S4376C3()
{
  extern Class_Descriptor cd_S4376C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4376C3, buf);
    S4376C3 *dp, &lv = *(dp=new (buf) S4376C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4376C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4376C3)");
    check_field_offset(lv, s4376c3f0, ABISELECT(8,4), "S4376C3.s4376c3f0");
    check_field_offset(lv, s4376c3f1, ABISELECT(24,16), "S4376C3.s4376c3f1");
    check_field_offset(lv, s4376c3f2, ABISELECT(32,24), "S4376C3.s4376c3f2");
    test_class_info(&lv, &cd_S4376C3);
    dp->~S4376C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4376C3(Test_S4376C3, "S4376C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4376C3C1Ev();
extern void _ZN7S4376C3D1Ev();
Name_Map name_map_S4376C3[] = {
  NSPAIR(_ZN7S4376C3C1Ev),
  NSPAIR(_ZN7S4376C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4376C3[];
extern void _ZN7S4376C3D1Ev();
extern void _ZN7S4376C3D0Ev();
extern void _ZN7S4376C32v2Ev();
extern void _ZN7S4376C32v3Ev();
extern void _ZN7S4376C32v4Ev();
static  VTBL_ENTRY vtc_S4376C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4376C3[0]),
  (VTBL_ENTRY)&_ZN7S4376C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4376C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4376C3[];
extern  VTBL_ENTRY _ZTV7S4376C3[];
Class_Descriptor cd_S4376C3 = {  "S4376C3", // class name
  0,0,//no base classes
  &(vtc_S4376C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4376C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4376C3),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  S4376C2  : S4376C3 {
  void *s4376c2f0;
  virtual void  v5(); // _ZN7S4376C22v5Ev
  virtual void  v6(); // _ZN7S4376C22v6Ev
  ~S4376C2(); // tgen
  S4376C2(); // tgen
};
//SIG(-1 S4376C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4376C2 ::v5(){vfunc_called(this, "_ZN7S4376C22v5Ev");}
void  S4376C2 ::v6(){vfunc_called(this, "_ZN7S4376C22v6Ev");}
S4376C2 ::~S4376C2(){ note_dtor("S4376C2", this);} // tgen
S4376C2 ::S4376C2(){ note_ctor("S4376C2", this);} // tgen

static void Test_S4376C2()
{
  extern Class_Descriptor cd_S4376C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4376C2, buf);
    S4376C2 *dp, &lv = *(dp=new (buf) S4376C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4376C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4376C2)");
    check_base_class_offset(lv, (S4376C3*), 0, "S4376C2");
    check_field_offset(lv, s4376c2f0, ABISELECT(40,28), "S4376C2.s4376c2f0");
    test_class_info(&lv, &cd_S4376C2);
    dp->~S4376C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4376C2(Test_S4376C2, "S4376C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4376C2C1Ev();
extern void _ZN7S4376C2D1Ev();
Name_Map name_map_S4376C2[] = {
  NSPAIR(_ZN7S4376C2C1Ev),
  NSPAIR(_ZN7S4376C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4376C3;
extern VTBL_ENTRY _ZTI7S4376C3[];
extern  VTBL_ENTRY _ZTV7S4376C3[];
static Base_Class bases_S4376C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4376C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4376C2[];
extern void _ZN7S4376C2D1Ev();
extern void _ZN7S4376C2D0Ev();
extern void _ZN7S4376C32v2Ev();
extern void _ZN7S4376C32v3Ev();
extern void _ZN7S4376C32v4Ev();
extern void _ZN7S4376C22v5Ev();
extern void _ZN7S4376C22v6Ev();
static  VTBL_ENTRY vtc_S4376C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4376C2[0]),
  (VTBL_ENTRY)&_ZN7S4376C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4376C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4376C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4376C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4376C2[];
extern  VTBL_ENTRY _ZTV7S4376C2[];
Class_Descriptor cd_S4376C2 = {  "S4376C2", // class name
  bases_S4376C2, 1,
  &(vtc_S4376C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4376C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4376C2),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  S4376C1  : S4376C2 {
  ::S1702C14 s4376c1f0;
  __tsi64 s4376c1f1;
  void *s4376c1f2;
  virtual void  v1(); // _ZN7S4376C12v1Ev
  ~S4376C1(); // tgen
  S4376C1(); // tgen
};
//SIG(1 S4376C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC6{ Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 FC4 FL Fi[2] FC7{ Fc[4]}} FL Fp}


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

static void Test_S4376C1()
{
  extern Class_Descriptor cd_S4376C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,40)];
    init_test(&cd_S4376C1, buf);
    S4376C1 *dp, &lv = *(dp=new (buf) S4376C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,156), "sizeof(S4376C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4376C1)");
    check_base_class_offset(lv, (S4376C3*)(S4376C2*), 0, "S4376C1");
    check_base_class_offset(lv, (S4376C2*), 0, "S4376C1");
    check_field_offset(lv, s4376c1f0, ABISELECT(48,32), "S4376C1.s4376c1f0");
    check_field_offset(lv, s4376c1f1, ABISELECT(192,144), "S4376C1.s4376c1f1");
    check_field_offset(lv, s4376c1f2, ABISELECT(200,152), "S4376C1.s4376c1f2");
    test_class_info(&lv, &cd_S4376C1);
    dp->~S4376C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4376C1(Test_S4376C1, "S4376C1", ABISELECT(208,156));

#else // __cplusplus

extern void _ZN7S4376C1C1Ev();
extern void _ZN7S4376C1D1Ev();
Name_Map name_map_S4376C1[] = {
  NSPAIR(_ZN7S4376C1C1Ev),
  NSPAIR(_ZN7S4376C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4376C3;
extern VTBL_ENTRY _ZTI7S4376C3[];
extern  VTBL_ENTRY _ZTV7S4376C3[];
extern Class_Descriptor cd_S4376C2;
extern VTBL_ENTRY _ZTI7S4376C2[];
extern  VTBL_ENTRY _ZTV7S4376C2[];
static Base_Class bases_S4376C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4376C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4376C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4376C1[];
extern void _ZN7S4376C1D1Ev();
extern void _ZN7S4376C1D0Ev();
extern void _ZN7S4376C32v2Ev();
extern void _ZN7S4376C32v3Ev();
extern void _ZN7S4376C32v4Ev();
extern void _ZN7S4376C22v5Ev();
extern void _ZN7S4376C22v6Ev();
extern void _ZN7S4376C12v1Ev();
static  VTBL_ENTRY vtc_S4376C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4376C1[0]),
  (VTBL_ENTRY)&_ZN7S4376C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4376C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4376C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4376C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4376C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4376C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4376C1[];
extern  VTBL_ENTRY _ZTV7S4376C1[];
Class_Descriptor cd_S4376C1 = {  "S4376C1", // class name
  bases_S4376C1, 2,
  &(vtc_S4376C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,156), // object size
  NSPAIRA(_ZTI7S4376C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4376C1),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  S4375C3  {
  ::S4224C19_nt s4375c3f0;
  int s4375c3f1[2];
  char s4375c3f2;
  virtual  ~S4375C3(); // _ZN7S4375C3D1Ev
  virtual void  v2(); // _ZN7S4375C32v2Ev
  virtual void  v3(); // _ZN7S4375C32v3Ev
  virtual void  v4(); // _ZN7S4375C32v4Ev
  S4375C3(); // tgen
};
//SIG(-1 S4375C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4375C3 ::~S4375C3(){ note_dtor("S4375C3", this);}
void  S4375C3 ::v2(){vfunc_called(this, "_ZN7S4375C32v2Ev");}
void  S4375C3 ::v3(){vfunc_called(this, "_ZN7S4375C32v3Ev");}
void  S4375C3 ::v4(){vfunc_called(this, "_ZN7S4375C32v4Ev");}
S4375C3 ::S4375C3(){ note_ctor("S4375C3", this);} // tgen

static void Test_S4375C3()
{
  extern Class_Descriptor cd_S4375C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4375C3, buf);
    S4375C3 *dp, &lv = *(dp=new (buf) S4375C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4375C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4375C3)");
    check_field_offset(lv, s4375c3f0, ABISELECT(8,4), "S4375C3.s4375c3f0");
    check_field_offset(lv, s4375c3f1, ABISELECT(24,16), "S4375C3.s4375c3f1");
    check_field_offset(lv, s4375c3f2, ABISELECT(32,24), "S4375C3.s4375c3f2");
    test_class_info(&lv, &cd_S4375C3);
    dp->~S4375C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4375C3(Test_S4375C3, "S4375C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4375C3C1Ev();
extern void _ZN7S4375C3D1Ev();
Name_Map name_map_S4375C3[] = {
  NSPAIR(_ZN7S4375C3C1Ev),
  NSPAIR(_ZN7S4375C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4375C3[];
extern void _ZN7S4375C3D1Ev();
extern void _ZN7S4375C3D0Ev();
extern void _ZN7S4375C32v2Ev();
extern void _ZN7S4375C32v3Ev();
extern void _ZN7S4375C32v4Ev();
static  VTBL_ENTRY vtc_S4375C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4375C3[0]),
  (VTBL_ENTRY)&_ZN7S4375C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4375C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4375C3[];
extern  VTBL_ENTRY _ZTV7S4375C3[];
Class_Descriptor cd_S4375C3 = {  "S4375C3", // class name
  0,0,//no base classes
  &(vtc_S4375C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4375C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4375C3),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  S4375C2  : S4375C3 {
  void *s4375c2f0;
  virtual void  v5(); // _ZN7S4375C22v5Ev
  virtual void  v6(); // _ZN7S4375C22v6Ev
  ~S4375C2(); // tgen
  S4375C2(); // tgen
};
//SIG(-1 S4375C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4375C2 ::v5(){vfunc_called(this, "_ZN7S4375C22v5Ev");}
void  S4375C2 ::v6(){vfunc_called(this, "_ZN7S4375C22v6Ev");}
S4375C2 ::~S4375C2(){ note_dtor("S4375C2", this);} // tgen
S4375C2 ::S4375C2(){ note_ctor("S4375C2", this);} // tgen

static void Test_S4375C2()
{
  extern Class_Descriptor cd_S4375C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4375C2, buf);
    S4375C2 *dp, &lv = *(dp=new (buf) S4375C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4375C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4375C2)");
    check_base_class_offset(lv, (S4375C3*), 0, "S4375C2");
    check_field_offset(lv, s4375c2f0, ABISELECT(40,28), "S4375C2.s4375c2f0");
    test_class_info(&lv, &cd_S4375C2);
    dp->~S4375C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4375C2(Test_S4375C2, "S4375C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4375C2C1Ev();
extern void _ZN7S4375C2D1Ev();
Name_Map name_map_S4375C2[] = {
  NSPAIR(_ZN7S4375C2C1Ev),
  NSPAIR(_ZN7S4375C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4375C3;
extern VTBL_ENTRY _ZTI7S4375C3[];
extern  VTBL_ENTRY _ZTV7S4375C3[];
static Base_Class bases_S4375C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4375C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4375C2[];
extern void _ZN7S4375C2D1Ev();
extern void _ZN7S4375C2D0Ev();
extern void _ZN7S4375C32v2Ev();
extern void _ZN7S4375C32v3Ev();
extern void _ZN7S4375C32v4Ev();
extern void _ZN7S4375C22v5Ev();
extern void _ZN7S4375C22v6Ev();
static  VTBL_ENTRY vtc_S4375C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4375C2[0]),
  (VTBL_ENTRY)&_ZN7S4375C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4375C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4375C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4375C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4375C2[];
extern  VTBL_ENTRY _ZTV7S4375C2[];
Class_Descriptor cd_S4375C2 = {  "S4375C2", // class name
  bases_S4375C2, 1,
  &(vtc_S4375C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4375C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4375C2),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  S4375C1  : S4375C2 {
  ::S1701C14 s4375c1f0;
  long s4375c1f1;
  void *s4375c1f2;
  virtual void  v1(); // _ZN7S4375C12v1Ev
  ~S4375C1(); // tgen
  S4375C1(); // tgen
};
//SIG(1 S4375C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC6{ Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 FC4 Fl Fi[2] FC7{ Fc[4]}} Fl Fp}


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

static void Test_S4375C1()
{
  extern Class_Descriptor cd_S4375C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,38)];
    init_test(&cd_S4375C1, buf);
    S4375C1 *dp, &lv = *(dp=new (buf) S4375C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S4375C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4375C1)");
    check_base_class_offset(lv, (S4375C3*)(S4375C2*), 0, "S4375C1");
    check_base_class_offset(lv, (S4375C2*), 0, "S4375C1");
    check_field_offset(lv, s4375c1f0, ABISELECT(48,32), "S4375C1.s4375c1f0");
    check_field_offset(lv, s4375c1f1, ABISELECT(192,140), "S4375C1.s4375c1f1");
    check_field_offset(lv, s4375c1f2, ABISELECT(200,144), "S4375C1.s4375c1f2");
    test_class_info(&lv, &cd_S4375C1);
    dp->~S4375C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4375C1(Test_S4375C1, "S4375C1", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN7S4375C1C1Ev();
extern void _ZN7S4375C1D1Ev();
Name_Map name_map_S4375C1[] = {
  NSPAIR(_ZN7S4375C1C1Ev),
  NSPAIR(_ZN7S4375C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4375C3;
extern VTBL_ENTRY _ZTI7S4375C3[];
extern  VTBL_ENTRY _ZTV7S4375C3[];
extern Class_Descriptor cd_S4375C2;
extern VTBL_ENTRY _ZTI7S4375C2[];
extern  VTBL_ENTRY _ZTV7S4375C2[];
static Base_Class bases_S4375C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4375C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4375C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4375C1[];
extern void _ZN7S4375C1D1Ev();
extern void _ZN7S4375C1D0Ev();
extern void _ZN7S4375C32v2Ev();
extern void _ZN7S4375C32v3Ev();
extern void _ZN7S4375C32v4Ev();
extern void _ZN7S4375C22v5Ev();
extern void _ZN7S4375C22v6Ev();
extern void _ZN7S4375C12v1Ev();
static  VTBL_ENTRY vtc_S4375C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4375C1[0]),
  (VTBL_ENTRY)&_ZN7S4375C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4375C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4375C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4375C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4375C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4375C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4375C1[];
extern  VTBL_ENTRY _ZTV7S4375C1[];
Class_Descriptor cd_S4375C1 = {  "S4375C1", // class name
  bases_S4375C1, 2,
  &(vtc_S4375C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI7S4375C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4375C1),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  S2093C4  {
  char s2093c4f0;
  int s2093c4f1;
  virtual  ~S2093C4(); // _ZN7S2093C4D1Ev
  virtual void  v2(); // _ZN7S2093C42v2Ev
  virtual void  v3(); // _ZN7S2093C42v3Ev
  virtual void  v4(); // _ZN7S2093C42v4Ev
  virtual void  v5(); // _ZN7S2093C42v5Ev
  S2093C4(); // tgen
};
//SIG(-1 S2093C4) C1{ vd v1 v2 v3 v4 Fc Fi}


 S2093C4 ::~S2093C4(){ note_dtor("S2093C4", this);}
void  S2093C4 ::v2(){vfunc_called(this, "_ZN7S2093C42v2Ev");}
void  S2093C4 ::v3(){vfunc_called(this, "_ZN7S2093C42v3Ev");}
void  S2093C4 ::v4(){vfunc_called(this, "_ZN7S2093C42v4Ev");}
void  S2093C4 ::v5(){vfunc_called(this, "_ZN7S2093C42v5Ev");}
S2093C4 ::S2093C4(){ note_ctor("S2093C4", this);} // tgen

static void Test_S2093C4()
{
  extern Class_Descriptor cd_S2093C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2093C4, buf);
    S2093C4 *dp, &lv = *(dp=new (buf) S2093C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2093C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2093C4)");
    check_field_offset(lv, s2093c4f0, ABISELECT(8,4), "S2093C4.s2093c4f0");
    check_field_offset(lv, s2093c4f1, ABISELECT(12,8), "S2093C4.s2093c4f1");
    test_class_info(&lv, &cd_S2093C4);
    dp->~S2093C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2093C4(Test_S2093C4, "S2093C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2093C4C1Ev();
extern void _ZN7S2093C4D1Ev();
Name_Map name_map_S2093C4[] = {
  NSPAIR(_ZN7S2093C4C1Ev),
  NSPAIR(_ZN7S2093C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2093C4[];
extern void _ZN7S2093C4D1Ev();
extern void _ZN7S2093C4D0Ev();
extern void _ZN7S2093C42v2Ev();
extern void _ZN7S2093C42v3Ev();
extern void _ZN7S2093C42v4Ev();
extern void _ZN7S2093C42v5Ev();
static  VTBL_ENTRY vtc_S2093C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2093C4[0]),
  (VTBL_ENTRY)&_ZN7S2093C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2093C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2093C4[];
extern  VTBL_ENTRY _ZTV7S2093C4[];
Class_Descriptor cd_S2093C4 = {  "S2093C4", // class name
  0,0,//no base classes
  &(vtc_S2093C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2093C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2093C4),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  S2093C3  : S2093C4 {
  ::S4224C24 s2093c3f0[8];
  ::S5309C14_nt s2093c3f1[8];
  int s2093c3f2;
  virtual  ~S2093C3(); // _ZN7S2093C3D1Ev
  virtual void  v6(); // _ZN7S2093C32v6Ev
  virtual void  v7(); // _ZN7S2093C32v7Ev
  virtual void  v8(); // _ZN7S2093C32v8Ev
  S2093C3(); // tgen
};
//SIG(-1 S2093C3) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S2093C3 ::~S2093C3(){ note_dtor("S2093C3", this);}
void  S2093C3 ::v6(){vfunc_called(this, "_ZN7S2093C32v6Ev");}
void  S2093C3 ::v7(){vfunc_called(this, "_ZN7S2093C32v7Ev");}
void  S2093C3 ::v8(){vfunc_called(this, "_ZN7S2093C32v8Ev");}
S2093C3 ::S2093C3(){ note_ctor("S2093C3", this);} // tgen

static void Test_S2093C3()
{
  extern Class_Descriptor cd_S2093C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S2093C3, buf);
    S2093C3 *dp, &lv = *(dp=new (buf) S2093C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S2093C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2093C3)");
    check_base_class_offset(lv, (S2093C4*), 0, "S2093C3");
    check_field_offset(lv, s2093c3f0, ABISELECT(16,12), "S2093C3.s2093c3f0");
    check_field_offset(lv, s2093c3f1, ABISELECT(144,108), "S2093C3.s2093c3f1");
    check_field_offset(lv, s2093c3f2, ABISELECT(272,172), "S2093C3.s2093c3f2");
    test_class_info(&lv, &cd_S2093C3);
    dp->~S2093C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2093C3(Test_S2093C3, "S2093C3", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S2093C3C1Ev();
extern void _ZN7S2093C3D1Ev();
Name_Map name_map_S2093C3[] = {
  NSPAIR(_ZN7S2093C3C1Ev),
  NSPAIR(_ZN7S2093C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2093C4;
extern VTBL_ENTRY _ZTI7S2093C4[];
extern  VTBL_ENTRY _ZTV7S2093C4[];
static Base_Class bases_S2093C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2093C3[];
extern void _ZN7S2093C3D1Ev();
extern void _ZN7S2093C3D0Ev();
extern void _ZN7S2093C42v2Ev();
extern void _ZN7S2093C42v3Ev();
extern void _ZN7S2093C42v4Ev();
extern void _ZN7S2093C42v5Ev();
extern void _ZN7S2093C32v6Ev();
extern void _ZN7S2093C32v7Ev();
extern void _ZN7S2093C32v8Ev();
static  VTBL_ENTRY vtc_S2093C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2093C3[0]),
  (VTBL_ENTRY)&_ZN7S2093C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2093C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2093C3[];
extern  VTBL_ENTRY _ZTV7S2093C3[];
Class_Descriptor cd_S2093C3 = {  "S2093C3", // class name
  bases_S2093C3, 1,
  &(vtc_S2093C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S2093C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2093C3),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  S2093C2  : S2093C3 {
  void *s2093c2f0[9];
  virtual  ~S2093C2(); // _ZN7S2093C2D1Ev
  virtual void  v9(); // _ZN7S2093C22v9Ev
  S2093C2(); // tgen
};
//SIG(-1 S2093C2) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp[9]}


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

static void Test_S2093C2()
{
  extern Class_Descriptor cd_S2093C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,54)];
    init_test(&cd_S2093C2, buf);
    S2093C2 *dp, &lv = *(dp=new (buf) S2093C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,212), "sizeof(S2093C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2093C2)");
    check_base_class_offset(lv, (S2093C4*)(S2093C3*), 0, "S2093C2");
    check_base_class_offset(lv, (S2093C3*), 0, "S2093C2");
    check_field_offset(lv, s2093c2f0, ABISELECT(280,176), "S2093C2.s2093c2f0");
    test_class_info(&lv, &cd_S2093C2);
    dp->~S2093C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2093C2(Test_S2093C2, "S2093C2", ABISELECT(352,212));

#else // __cplusplus

extern void _ZN7S2093C2C1Ev();
extern void _ZN7S2093C2D1Ev();
Name_Map name_map_S2093C2[] = {
  NSPAIR(_ZN7S2093C2C1Ev),
  NSPAIR(_ZN7S2093C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2093C4;
extern VTBL_ENTRY _ZTI7S2093C4[];
extern  VTBL_ENTRY _ZTV7S2093C4[];
extern Class_Descriptor cd_S2093C3;
extern VTBL_ENTRY _ZTI7S2093C3[];
extern  VTBL_ENTRY _ZTV7S2093C3[];
static Base_Class bases_S2093C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2093C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2093C2[];
extern void _ZN7S2093C2D1Ev();
extern void _ZN7S2093C2D0Ev();
extern void _ZN7S2093C42v2Ev();
extern void _ZN7S2093C42v3Ev();
extern void _ZN7S2093C42v4Ev();
extern void _ZN7S2093C42v5Ev();
extern void _ZN7S2093C32v6Ev();
extern void _ZN7S2093C32v7Ev();
extern void _ZN7S2093C32v8Ev();
extern void _ZN7S2093C22v9Ev();
static  VTBL_ENTRY vtc_S2093C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2093C2[0]),
  (VTBL_ENTRY)&_ZN7S2093C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2093C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2093C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S2093C2[];
extern  VTBL_ENTRY _ZTV7S2093C2[];
Class_Descriptor cd_S2093C2 = {  "S2093C2", // class name
  bases_S2093C2, 2,
  &(vtc_S2093C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,212), // object size
  NSPAIRA(_ZTI7S2093C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2093C2),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  S2093C1  : S2093C2 {
  int s2093c1f0;
  void *s2093c1f1;
  virtual  ~S2093C1(); // _ZN7S2093C1D1Ev
  virtual void  v1(); // _ZN7S2093C12v1Ev
  S2093C1(); // tgen
};
//SIG(1 S2093C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}[8] FC9{ m Fp[2]}[8] Fi} vd v9 Fp[9]} vd v1 Fi Fp}


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

static void Test_S2093C1()
{
  extern Class_Descriptor cd_S2093C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,56)];
    init_test(&cd_S2093C1, buf);
    S2093C1 *dp, &lv = *(dp=new (buf) S2093C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,220), "sizeof(S2093C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2093C1)");
    check_base_class_offset(lv, (S2093C4*)(S2093C3*)(S2093C2*), 0, "S2093C1");
    check_base_class_offset(lv, (S2093C3*)(S2093C2*), 0, "S2093C1");
    check_base_class_offset(lv, (S2093C2*), 0, "S2093C1");
    check_field_offset(lv, s2093c1f0, ABISELECT(352,212), "S2093C1.s2093c1f0");
    check_field_offset(lv, s2093c1f1, ABISELECT(360,216), "S2093C1.s2093c1f1");
    test_class_info(&lv, &cd_S2093C1);
    dp->~S2093C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2093C1(Test_S2093C1, "S2093C1", ABISELECT(368,220));

#else // __cplusplus

extern void _ZN7S2093C1C1Ev();
extern void _ZN7S2093C1D1Ev();
Name_Map name_map_S2093C1[] = {
  NSPAIR(_ZN7S2093C1C1Ev),
  NSPAIR(_ZN7S2093C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2093C4;
extern VTBL_ENTRY _ZTI7S2093C4[];
extern  VTBL_ENTRY _ZTV7S2093C4[];
extern Class_Descriptor cd_S2093C3;
extern VTBL_ENTRY _ZTI7S2093C3[];
extern  VTBL_ENTRY _ZTV7S2093C3[];
extern Class_Descriptor cd_S2093C2;
extern VTBL_ENTRY _ZTI7S2093C2[];
extern  VTBL_ENTRY _ZTV7S2093C2[];
static Base_Class bases_S2093C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2093C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2093C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2093C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2093C1[];
extern void _ZN7S2093C1D1Ev();
extern void _ZN7S2093C1D0Ev();
extern void _ZN7S2093C42v2Ev();
extern void _ZN7S2093C42v3Ev();
extern void _ZN7S2093C42v4Ev();
extern void _ZN7S2093C42v5Ev();
extern void _ZN7S2093C32v6Ev();
extern void _ZN7S2093C32v7Ev();
extern void _ZN7S2093C32v8Ev();
extern void _ZN7S2093C22v9Ev();
extern void _ZN7S2093C12v1Ev();
static  VTBL_ENTRY vtc_S2093C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2093C1[0]),
  (VTBL_ENTRY)&_ZN7S2093C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2093C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2093C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2093C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2093C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2093C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2093C1[];
extern  VTBL_ENTRY _ZTV7S2093C1[];
Class_Descriptor cd_S2093C1 = {  "S2093C1", // class name
  bases_S2093C1, 3,
  &(vtc_S2093C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,220), // object size
  NSPAIRA(_ZTI7S2093C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2093C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4497C3  {
  char s4497c3f0;
  int s4497c3f1;
  virtual  ~S4497C3(); // _ZN7S4497C3D1Ev
  virtual void  v2(); // _ZN7S4497C32v2Ev
  virtual void  v3(); // _ZN7S4497C32v3Ev
  virtual void  v4(); // _ZN7S4497C32v4Ev
  virtual void  v5(); // _ZN7S4497C32v5Ev
  S4497C3(); // tgen
};
//SIG(-1 S4497C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4497C3 ::~S4497C3(){ note_dtor("S4497C3", this);}
void  S4497C3 ::v2(){vfunc_called(this, "_ZN7S4497C32v2Ev");}
void  S4497C3 ::v3(){vfunc_called(this, "_ZN7S4497C32v3Ev");}
void  S4497C3 ::v4(){vfunc_called(this, "_ZN7S4497C32v4Ev");}
void  S4497C3 ::v5(){vfunc_called(this, "_ZN7S4497C32v5Ev");}
S4497C3 ::S4497C3(){ note_ctor("S4497C3", this);} // tgen

static void Test_S4497C3()
{
  extern Class_Descriptor cd_S4497C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4497C3, buf);
    S4497C3 *dp, &lv = *(dp=new (buf) S4497C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4497C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4497C3)");
    check_field_offset(lv, s4497c3f0, ABISELECT(8,4), "S4497C3.s4497c3f0");
    check_field_offset(lv, s4497c3f1, ABISELECT(12,8), "S4497C3.s4497c3f1");
    test_class_info(&lv, &cd_S4497C3);
    dp->~S4497C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4497C3(Test_S4497C3, "S4497C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4497C3C1Ev();
extern void _ZN7S4497C3D1Ev();
Name_Map name_map_S4497C3[] = {
  NSPAIR(_ZN7S4497C3C1Ev),
  NSPAIR(_ZN7S4497C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4497C3[];
extern void _ZN7S4497C3D1Ev();
extern void _ZN7S4497C3D0Ev();
extern void _ZN7S4497C32v2Ev();
extern void _ZN7S4497C32v3Ev();
extern void _ZN7S4497C32v4Ev();
extern void _ZN7S4497C32v5Ev();
static  VTBL_ENTRY vtc_S4497C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4497C3[0]),
  (VTBL_ENTRY)&_ZN7S4497C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4497C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4497C3[];
extern  VTBL_ENTRY _ZTV7S4497C3[];
Class_Descriptor cd_S4497C3 = {  "S4497C3", // class name
  0,0,//no base classes
  &(vtc_S4497C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4497C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4497C3),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  S4497C2  : S4497C3 {
  ::S4224C24 s4497c2f0[8];
  ::S5309C14_nt s4497c2f1[8];
  int s4497c2f2;
  virtual  ~S4497C2(); // _ZN7S4497C2D1Ev
  virtual void  v6(); // _ZN7S4497C22v6Ev
  virtual void  v7(); // _ZN7S4497C22v7Ev
  virtual void  v8(); // _ZN7S4497C22v8Ev
  S4497C2(); // tgen
};
//SIG(-1 S4497C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4497C2 ::~S4497C2(){ note_dtor("S4497C2", this);}
void  S4497C2 ::v6(){vfunc_called(this, "_ZN7S4497C22v6Ev");}
void  S4497C2 ::v7(){vfunc_called(this, "_ZN7S4497C22v7Ev");}
void  S4497C2 ::v8(){vfunc_called(this, "_ZN7S4497C22v8Ev");}
S4497C2 ::S4497C2(){ note_ctor("S4497C2", this);} // tgen

static void Test_S4497C2()
{
  extern Class_Descriptor cd_S4497C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4497C2, buf);
    S4497C2 *dp, &lv = *(dp=new (buf) S4497C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4497C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4497C2)");
    check_base_class_offset(lv, (S4497C3*), 0, "S4497C2");
    check_field_offset(lv, s4497c2f0, ABISELECT(16,12), "S4497C2.s4497c2f0");
    check_field_offset(lv, s4497c2f1, ABISELECT(144,108), "S4497C2.s4497c2f1");
    check_field_offset(lv, s4497c2f2, ABISELECT(272,172), "S4497C2.s4497c2f2");
    test_class_info(&lv, &cd_S4497C2);
    dp->~S4497C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4497C2(Test_S4497C2, "S4497C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4497C2C1Ev();
extern void _ZN7S4497C2D1Ev();
Name_Map name_map_S4497C2[] = {
  NSPAIR(_ZN7S4497C2C1Ev),
  NSPAIR(_ZN7S4497C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4497C3;
extern VTBL_ENTRY _ZTI7S4497C3[];
extern  VTBL_ENTRY _ZTV7S4497C3[];
static Base_Class bases_S4497C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4497C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4497C2[];
extern void _ZN7S4497C2D1Ev();
extern void _ZN7S4497C2D0Ev();
extern void _ZN7S4497C32v2Ev();
extern void _ZN7S4497C32v3Ev();
extern void _ZN7S4497C32v4Ev();
extern void _ZN7S4497C32v5Ev();
extern void _ZN7S4497C22v6Ev();
extern void _ZN7S4497C22v7Ev();
extern void _ZN7S4497C22v8Ev();
static  VTBL_ENTRY vtc_S4497C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4497C2[0]),
  (VTBL_ENTRY)&_ZN7S4497C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4497C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4497C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4497C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4497C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4497C2[];
extern  VTBL_ENTRY _ZTV7S4497C2[];
Class_Descriptor cd_S4497C2 = {  "S4497C2", // class name
  bases_S4497C2, 1,
  &(vtc_S4497C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4497C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4497C2),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  S4497C1  : S4497C2 {
  void *s4497c1f0;
  __tsi64 s4497c1f1;
  int s4497c1f2[2];
  char s4497c1f3[2];
  virtual  ~S4497C1(); // _ZN7S4497C1D1Ev
  virtual void  v1(); // _ZN7S4497C12v1Ev
  S4497C1(); // tgen
};
//SIG(1 S4497C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp FL Fi[2] Fc[2]}


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

static void Test_S4497C1()
{
  extern Class_Descriptor cd_S4497C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,51)];
    init_test(&cd_S4497C1, buf);
    S4497C1 *dp, &lv = *(dp=new (buf) S4497C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,200), "sizeof(S4497C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4497C1)");
    check_base_class_offset(lv, (S4497C3*)(S4497C2*), 0, "S4497C1");
    check_base_class_offset(lv, (S4497C2*), 0, "S4497C1");
    check_field_offset(lv, s4497c1f0, ABISELECT(280,176), "S4497C1.s4497c1f0");
    check_field_offset(lv, s4497c1f1, ABISELECT(288,180), "S4497C1.s4497c1f1");
    check_field_offset(lv, s4497c1f2, ABISELECT(296,188), "S4497C1.s4497c1f2");
    check_field_offset(lv, s4497c1f3, ABISELECT(304,196), "S4497C1.s4497c1f3");
    test_class_info(&lv, &cd_S4497C1);
    dp->~S4497C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4497C1(Test_S4497C1, "S4497C1", ABISELECT(312,200));

#else // __cplusplus

extern void _ZN7S4497C1C1Ev();
extern void _ZN7S4497C1D1Ev();
Name_Map name_map_S4497C1[] = {
  NSPAIR(_ZN7S4497C1C1Ev),
  NSPAIR(_ZN7S4497C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4497C3;
extern VTBL_ENTRY _ZTI7S4497C3[];
extern  VTBL_ENTRY _ZTV7S4497C3[];
extern Class_Descriptor cd_S4497C2;
extern VTBL_ENTRY _ZTI7S4497C2[];
extern  VTBL_ENTRY _ZTV7S4497C2[];
static Base_Class bases_S4497C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4497C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4497C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4497C1[];
extern void _ZN7S4497C1D1Ev();
extern void _ZN7S4497C1D0Ev();
extern void _ZN7S4497C32v2Ev();
extern void _ZN7S4497C32v3Ev();
extern void _ZN7S4497C32v4Ev();
extern void _ZN7S4497C32v5Ev();
extern void _ZN7S4497C22v6Ev();
extern void _ZN7S4497C22v7Ev();
extern void _ZN7S4497C22v8Ev();
extern void _ZN7S4497C12v1Ev();
static  VTBL_ENTRY vtc_S4497C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4497C1[0]),
  (VTBL_ENTRY)&_ZN7S4497C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4497C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4497C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4497C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4497C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4497C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4497C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4497C1[];
extern  VTBL_ENTRY _ZTV7S4497C1[];
Class_Descriptor cd_S4497C1 = {  "S4497C1", // class name
  bases_S4497C1, 2,
  &(vtc_S4497C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,200), // object size
  NSPAIRA(_ZTI7S4497C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4497C1),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  S4496C3  {
  char s4496c3f0;
  int s4496c3f1;
  virtual  ~S4496C3(); // _ZN7S4496C3D1Ev
  virtual void  v2(); // _ZN7S4496C32v2Ev
  virtual void  v3(); // _ZN7S4496C32v3Ev
  virtual void  v4(); // _ZN7S4496C32v4Ev
  virtual void  v5(); // _ZN7S4496C32v5Ev
  S4496C3(); // tgen
};
//SIG(-1 S4496C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4496C3 ::~S4496C3(){ note_dtor("S4496C3", this);}
void  S4496C3 ::v2(){vfunc_called(this, "_ZN7S4496C32v2Ev");}
void  S4496C3 ::v3(){vfunc_called(this, "_ZN7S4496C32v3Ev");}
void  S4496C3 ::v4(){vfunc_called(this, "_ZN7S4496C32v4Ev");}
void  S4496C3 ::v5(){vfunc_called(this, "_ZN7S4496C32v5Ev");}
S4496C3 ::S4496C3(){ note_ctor("S4496C3", this);} // tgen

static void Test_S4496C3()
{
  extern Class_Descriptor cd_S4496C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4496C3, buf);
    S4496C3 *dp, &lv = *(dp=new (buf) S4496C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4496C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4496C3)");
    check_field_offset(lv, s4496c3f0, ABISELECT(8,4), "S4496C3.s4496c3f0");
    check_field_offset(lv, s4496c3f1, ABISELECT(12,8), "S4496C3.s4496c3f1");
    test_class_info(&lv, &cd_S4496C3);
    dp->~S4496C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4496C3(Test_S4496C3, "S4496C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4496C3C1Ev();
extern void _ZN7S4496C3D1Ev();
Name_Map name_map_S4496C3[] = {
  NSPAIR(_ZN7S4496C3C1Ev),
  NSPAIR(_ZN7S4496C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4496C3[];
extern void _ZN7S4496C3D1Ev();
extern void _ZN7S4496C3D0Ev();
extern void _ZN7S4496C32v2Ev();
extern void _ZN7S4496C32v3Ev();
extern void _ZN7S4496C32v4Ev();
extern void _ZN7S4496C32v5Ev();
static  VTBL_ENTRY vtc_S4496C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4496C3[0]),
  (VTBL_ENTRY)&_ZN7S4496C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4496C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4496C3[];
extern  VTBL_ENTRY _ZTV7S4496C3[];
Class_Descriptor cd_S4496C3 = {  "S4496C3", // class name
  0,0,//no base classes
  &(vtc_S4496C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4496C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4496C3),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  S4496C2  : S4496C3 {
  ::S4224C24 s4496c2f0[8];
  ::S5309C14_nt s4496c2f1[8];
  int s4496c2f2;
  virtual  ~S4496C2(); // _ZN7S4496C2D1Ev
  virtual void  v6(); // _ZN7S4496C22v6Ev
  virtual void  v7(); // _ZN7S4496C22v7Ev
  virtual void  v8(); // _ZN7S4496C22v8Ev
  S4496C2(); // tgen
};
//SIG(-1 S4496C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4496C2 ::~S4496C2(){ note_dtor("S4496C2", this);}
void  S4496C2 ::v6(){vfunc_called(this, "_ZN7S4496C22v6Ev");}
void  S4496C2 ::v7(){vfunc_called(this, "_ZN7S4496C22v7Ev");}
void  S4496C2 ::v8(){vfunc_called(this, "_ZN7S4496C22v8Ev");}
S4496C2 ::S4496C2(){ note_ctor("S4496C2", this);} // tgen

static void Test_S4496C2()
{
  extern Class_Descriptor cd_S4496C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4496C2, buf);
    S4496C2 *dp, &lv = *(dp=new (buf) S4496C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4496C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4496C2)");
    check_base_class_offset(lv, (S4496C3*), 0, "S4496C2");
    check_field_offset(lv, s4496c2f0, ABISELECT(16,12), "S4496C2.s4496c2f0");
    check_field_offset(lv, s4496c2f1, ABISELECT(144,108), "S4496C2.s4496c2f1");
    check_field_offset(lv, s4496c2f2, ABISELECT(272,172), "S4496C2.s4496c2f2");
    test_class_info(&lv, &cd_S4496C2);
    dp->~S4496C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4496C2(Test_S4496C2, "S4496C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4496C2C1Ev();
extern void _ZN7S4496C2D1Ev();
Name_Map name_map_S4496C2[] = {
  NSPAIR(_ZN7S4496C2C1Ev),
  NSPAIR(_ZN7S4496C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4496C3;
extern VTBL_ENTRY _ZTI7S4496C3[];
extern  VTBL_ENTRY _ZTV7S4496C3[];
static Base_Class bases_S4496C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4496C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4496C2[];
extern void _ZN7S4496C2D1Ev();
extern void _ZN7S4496C2D0Ev();
extern void _ZN7S4496C32v2Ev();
extern void _ZN7S4496C32v3Ev();
extern void _ZN7S4496C32v4Ev();
extern void _ZN7S4496C32v5Ev();
extern void _ZN7S4496C22v6Ev();
extern void _ZN7S4496C22v7Ev();
extern void _ZN7S4496C22v8Ev();
static  VTBL_ENTRY vtc_S4496C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4496C2[0]),
  (VTBL_ENTRY)&_ZN7S4496C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4496C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4496C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4496C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4496C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4496C2[];
extern  VTBL_ENTRY _ZTV7S4496C2[];
Class_Descriptor cd_S4496C2 = {  "S4496C2", // class name
  bases_S4496C2, 1,
  &(vtc_S4496C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4496C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4496C2),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  S4496C1  : S4496C2 {
  void *s4496c1f0;
  long s4496c1f1;
  int s4496c1f2[2];
  char s4496c1f3[2];
  virtual  ~S4496C1(); // _ZN7S4496C1D1Ev
  virtual void  v1(); // _ZN7S4496C12v1Ev
  S4496C1(); // tgen
};
//SIG(1 S4496C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp Fl Fi[2] Fc[2]}


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

static void Test_S4496C1()
{
  extern Class_Descriptor cd_S4496C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,50)];
    init_test(&cd_S4496C1, buf);
    S4496C1 *dp, &lv = *(dp=new (buf) S4496C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,196), "sizeof(S4496C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4496C1)");
    check_base_class_offset(lv, (S4496C3*)(S4496C2*), 0, "S4496C1");
    check_base_class_offset(lv, (S4496C2*), 0, "S4496C1");
    check_field_offset(lv, s4496c1f0, ABISELECT(280,176), "S4496C1.s4496c1f0");
    check_field_offset(lv, s4496c1f1, ABISELECT(288,180), "S4496C1.s4496c1f1");
    check_field_offset(lv, s4496c1f2, ABISELECT(296,184), "S4496C1.s4496c1f2");
    check_field_offset(lv, s4496c1f3, ABISELECT(304,192), "S4496C1.s4496c1f3");
    test_class_info(&lv, &cd_S4496C1);
    dp->~S4496C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4496C1(Test_S4496C1, "S4496C1", ABISELECT(312,196));

#else // __cplusplus

extern void _ZN7S4496C1C1Ev();
extern void _ZN7S4496C1D1Ev();
Name_Map name_map_S4496C1[] = {
  NSPAIR(_ZN7S4496C1C1Ev),
  NSPAIR(_ZN7S4496C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4496C3;
extern VTBL_ENTRY _ZTI7S4496C3[];
extern  VTBL_ENTRY _ZTV7S4496C3[];
extern Class_Descriptor cd_S4496C2;
extern VTBL_ENTRY _ZTI7S4496C2[];
extern  VTBL_ENTRY _ZTV7S4496C2[];
static Base_Class bases_S4496C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4496C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4496C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4496C1[];
extern void _ZN7S4496C1D1Ev();
extern void _ZN7S4496C1D0Ev();
extern void _ZN7S4496C32v2Ev();
extern void _ZN7S4496C32v3Ev();
extern void _ZN7S4496C32v4Ev();
extern void _ZN7S4496C32v5Ev();
extern void _ZN7S4496C22v6Ev();
extern void _ZN7S4496C22v7Ev();
extern void _ZN7S4496C22v8Ev();
extern void _ZN7S4496C12v1Ev();
static  VTBL_ENTRY vtc_S4496C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4496C1[0]),
  (VTBL_ENTRY)&_ZN7S4496C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4496C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4496C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4496C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4496C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4496C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4496C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4496C1[];
extern  VTBL_ENTRY _ZTV7S4496C1[];
Class_Descriptor cd_S4496C1 = {  "S4496C1", // class name
  bases_S4496C1, 2,
  &(vtc_S4496C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,196), // object size
  NSPAIRA(_ZTI7S4496C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4496C1),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  S7186C2  {
  long double s7186c2f0[4];
  char s7186c2f1;
  virtual  ~S7186C2(); // _ZN7S7186C2D1Ev
  virtual void  v9(); // _ZN7S7186C22v9Ev
  virtual void  v10(); // _ZN7S7186C23v10Ev
  virtual void  v11(); // _ZN7S7186C23v11Ev
  virtual void  v12(); // _ZN7S7186C23v12Ev
  S7186C2(); // tgen
};
//SIG(-1 S7186C2) C1{ vd v1 v2 v3 v4 FD[4] Fc}


 S7186C2 ::~S7186C2(){ note_dtor("S7186C2", this);}
void  S7186C2 ::v9(){vfunc_called(this, "_ZN7S7186C22v9Ev");}
void  S7186C2 ::v10(){vfunc_called(this, "_ZN7S7186C23v10Ev");}
void  S7186C2 ::v11(){vfunc_called(this, "_ZN7S7186C23v11Ev");}
void  S7186C2 ::v12(){vfunc_called(this, "_ZN7S7186C23v12Ev");}
S7186C2 ::S7186C2(){ note_ctor("S7186C2", this);} // tgen

static void Test_S7186C2()
{
  extern Class_Descriptor cd_S7186C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,15)];
    init_test(&cd_S7186C2, buf);
    S7186C2 *dp, &lv = *(dp=new (buf) S7186C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S7186C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7186C2)");
    check_field_offset(lv, s7186c2f0, ABISELECT(16,4), "S7186C2.s7186c2f0");
    check_field_offset(lv, s7186c2f1, ABISELECT(80,52), "S7186C2.s7186c2f1");
    test_class_info(&lv, &cd_S7186C2);
    dp->~S7186C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7186C2(Test_S7186C2, "S7186C2", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S7186C2C1Ev();
extern void _ZN7S7186C2D1Ev();
Name_Map name_map_S7186C2[] = {
  NSPAIR(_ZN7S7186C2C1Ev),
  NSPAIR(_ZN7S7186C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7186C2[];
extern void _ZN7S7186C2D1Ev();
extern void _ZN7S7186C2D0Ev();
extern void _ZN7S7186C22v9Ev();
extern void _ZN7S7186C23v10Ev();
extern void _ZN7S7186C23v11Ev();
extern void _ZN7S7186C23v12Ev();
static  VTBL_ENTRY vtc_S7186C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7186C2[0]),
  (VTBL_ENTRY)&_ZN7S7186C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7186C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7186C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S7186C2[];
extern  VTBL_ENTRY _ZTV7S7186C2[];
Class_Descriptor cd_S7186C2 = {  "S7186C2", // class name
  0,0,//no base classes
  &(vtc_S7186C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S7186C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7186C2),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  S7186C3  : S7186C2 {
  void *s7186c3f0[8];
  short s7186c3f1:11;
  short s7186c3f2;
  virtual  ~S7186C3(); // _ZN7S7186C3D1Ev
  virtual void  v13(); // _ZN7S7186C33v13Ev
  virtual void  v14(); // _ZN7S7186C33v14Ev
  virtual void  v15(); // _ZN7S7186C33v15Ev
  virtual void  v16(); // _ZN7S7186C33v16Ev
  virtual void  v17(); // _ZN7S7186C33v17Ev
  virtual void  v18(); // _ZN7S7186C33v18Ev
  S7186C3(); // tgen
};
//SIG(-1 S7186C3) C1{ BC2{ vd v7 v8 v9 v10 FD[4] Fc} vd v1 v2 v3 v4 v5 v6 Fp[8] Fs:11 Fs}


 S7186C3 ::~S7186C3(){ note_dtor("S7186C3", this);}
void  S7186C3 ::v13(){vfunc_called(this, "_ZN7S7186C33v13Ev");}
void  S7186C3 ::v14(){vfunc_called(this, "_ZN7S7186C33v14Ev");}
void  S7186C3 ::v15(){vfunc_called(this, "_ZN7S7186C33v15Ev");}
void  S7186C3 ::v16(){vfunc_called(this, "_ZN7S7186C33v16Ev");}
void  S7186C3 ::v17(){vfunc_called(this, "_ZN7S7186C33v17Ev");}
void  S7186C3 ::v18(){vfunc_called(this, "_ZN7S7186C33v18Ev");}
S7186C3 ::S7186C3(){ note_ctor("S7186C3", this);} // tgen

static void Test_S7186C3()
{
  extern Class_Descriptor cd_S7186C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S7186C3, buf);
    S7186C3 *dp, &lv = *(dp=new (buf) S7186C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S7186C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7186C3)");
    check_base_class_offset(lv, (S7186C2*), 0, "S7186C3");
    check_field_offset(lv, s7186c3f0, ABISELECT(88,56), "S7186C3.s7186c3f0");
    set_bf_and_test(lv, s7186c3f1, ABISELECT(152,88), 0, 11, 1, "S7186C3");
    set_bf_and_test(lv, s7186c3f1, ABISELECT(152,88), 0, 11, hide_sll(1LL<<10), "S7186C3");
    check_field_offset(lv, s7186c3f2, ABISELECT(154,90), "S7186C3.s7186c3f2");
    test_class_info(&lv, &cd_S7186C3);
    dp->~S7186C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7186C3(Test_S7186C3, "S7186C3", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN7S7186C3C1Ev();
extern void _ZN7S7186C3D1Ev();
Name_Map name_map_S7186C3[] = {
  NSPAIR(_ZN7S7186C3C1Ev),
  NSPAIR(_ZN7S7186C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7186C2;
extern VTBL_ENTRY _ZTI7S7186C2[];
extern  VTBL_ENTRY _ZTV7S7186C2[];
static Base_Class bases_S7186C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7186C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7186C3[];
extern void _ZN7S7186C3D1Ev();
extern void _ZN7S7186C3D0Ev();
extern void _ZN7S7186C22v9Ev();
extern void _ZN7S7186C23v10Ev();
extern void _ZN7S7186C23v11Ev();
extern void _ZN7S7186C23v12Ev();
extern void _ZN7S7186C33v13Ev();
extern void _ZN7S7186C33v14Ev();
extern void _ZN7S7186C33v15Ev();
extern void _ZN7S7186C33v16Ev();
extern void _ZN7S7186C33v17Ev();
extern void _ZN7S7186C33v18Ev();
static  VTBL_ENTRY vtc_S7186C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7186C3[0]),
  (VTBL_ENTRY)&_ZN7S7186C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7186C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7186C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v18Ev,
};
extern VTBL_ENTRY _ZTI7S7186C3[];
extern  VTBL_ENTRY _ZTV7S7186C3[];
Class_Descriptor cd_S7186C3 = {  "S7186C3", // class name
  bases_S7186C3, 1,
  &(vtc_S7186C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI7S7186C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7186C3),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  S7186C1  : S7186C2 , virtual S7186C3 {
  short s7186c1f0;
  virtual  ~S7186C1(); // _ZN7S7186C1D2Ev
  virtual void  v1(); // _ZN7S7186C12v1Ev
  virtual void  v2(); // _ZN7S7186C12v2Ev
  virtual void  v3(); // _ZN7S7186C12v3Ev
  virtual void  v4(); // _ZN7S7186C12v4Ev
  virtual void  v5(); // _ZN7S7186C12v5Ev
  virtual void  v6(); // _ZN7S7186C12v6Ev
  virtual void  v7(); // _ZN7S7186C12v7Ev
  virtual void  v8(); // _ZN7S7186C12v8Ev
  S7186C1(); // tgen
};
//SIG(1 S7186C1) C1{ BC2{ vd v9 v10 v11 v12 FD[4] Fc} VBC3{ BC2 vd v13 v14 v15 v16 v17 v18 Fp[8] Fs:11 Fs} vd v1 v2 v3 v4 v5 v6 v7 v8 Fs}


 S7186C1 ::~S7186C1(){ note_dtor("S7186C1", this);}
void  S7186C1 ::v1(){vfunc_called(this, "_ZN7S7186C12v1Ev");}
void  S7186C1 ::v2(){vfunc_called(this, "_ZN7S7186C12v2Ev");}
void  S7186C1 ::v3(){vfunc_called(this, "_ZN7S7186C12v3Ev");}
void  S7186C1 ::v4(){vfunc_called(this, "_ZN7S7186C12v4Ev");}
void  S7186C1 ::v5(){vfunc_called(this, "_ZN7S7186C12v5Ev");}
void  S7186C1 ::v6(){vfunc_called(this, "_ZN7S7186C12v6Ev");}
void  S7186C1 ::v7(){vfunc_called(this, "_ZN7S7186C12v7Ev");}
void  S7186C1 ::v8(){vfunc_called(this, "_ZN7S7186C12v8Ev");}
S7186C1 ::S7186C1(){ note_ctor("S7186C1", this);} // tgen

static void Test_S7186C1()
{
  extern Class_Descriptor cd_S7186C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S7186C1, buf);
    S7186C1 *dp, &lv = *(dp=new (buf) S7186C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S7186C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7186C1)");
    /*is_ambiguous_... S7186C1::S7186C2 */ AMB_check_base_class_offset(lv, (S7186C2*), 0, "S7186C1");
    check_base_class_offset(lv, (S7186C2*)(S7186C3*), ABISELECT(96,56), "S7186C1");
    check_base_class_offset(lv, (S7186C3*), ABISELECT(96,56), "S7186C1");
    check_field_offset(lv, s7186c1f0, ABISELECT(82,54), "S7186C1.s7186c1f0");
    test_class_info(&lv, &cd_S7186C1);
    dp->~S7186C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7186C1(Test_S7186C1, "S7186C1", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN7S7186C1C1Ev();
extern void _ZN7S7186C1D2Ev();
Name_Map name_map_S7186C1[] = {
  NSPAIR(_ZN7S7186C1C1Ev),
  NSPAIR(_ZN7S7186C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7186C2;
extern VTBL_ENTRY _ZTI7S7186C2[];
extern  VTBL_ENTRY _ZTV7S7186C2[];
extern Class_Descriptor cd_S7186C2;
extern VTBL_ENTRY _ZTI7S7186C2[];
extern  VTBL_ENTRY _ZTV7S7186C2[];
extern Class_Descriptor cd_S7186C3;
extern VTBL_ENTRY _ZTI7S7186C3[];
extern  VTBL_ENTRY _ZTV7S7186C3[];
static Base_Class bases_S7186C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7186C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7186C2,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7186C3,    ABISELECT(96,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    13, //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 _ZTI7S7186C1[];
extern void _ZN7S7186C1D1Ev();
extern void _ZN7S7186C1D0Ev();
extern void _ZN7S7186C22v9Ev();
extern void _ZN7S7186C23v10Ev();
extern void _ZN7S7186C23v11Ev();
extern void _ZN7S7186C23v12Ev();
extern void _ZN7S7186C12v1Ev();
extern void _ZN7S7186C12v2Ev();
extern void _ZN7S7186C12v3Ev();
extern void _ZN7S7186C12v4Ev();
extern void _ZN7S7186C12v5Ev();
extern void _ZN7S7186C12v6Ev();
extern void _ZN7S7186C12v7Ev();
extern void _ZN7S7186C12v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S7186C1D1Ev,_ZTv0_n12_N7S7186C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7186C1D1Ev,_ZThn56_N7S7186C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7186C1D0Ev,_ZTv0_n12_N7S7186C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7186C1D0Ev,_ZThn56_N7S7186C1D0Ev)() __attribute__((weak));
extern void _ZN7S7186C22v9Ev();
extern void _ZN7S7186C23v10Ev();
extern void _ZN7S7186C23v11Ev();
extern void _ZN7S7186C23v12Ev();
extern void _ZN7S7186C33v13Ev();
extern void _ZN7S7186C33v14Ev();
extern void _ZN7S7186C33v15Ev();
extern void _ZN7S7186C33v16Ev();
extern void _ZN7S7186C33v17Ev();
extern void _ZN7S7186C33v18Ev();
static  VTBL_ENTRY vtc_S7186C1[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7186C1[0]),
  (VTBL_ENTRY)&_ZN7S7186C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7186C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7186C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7186C12v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7186C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7186C1D1Ev,_ZTv0_n12_N7S7186C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7186C1D0Ev,_ZTv0_n12_N7S7186C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7186C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7186C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7186C33v18Ev,
};
extern VTBL_ENTRY _ZTV7S7186C1[];
static  VTT_ENTRY vtt_S7186C1[] = {
  {&(_ZTV7S7186C1[3]),  3,42},
  {&(_ZTV7S7186C1[30]),  30,42},
};
extern VTBL_ENTRY _ZTI7S7186C1[];
extern  VTBL_ENTRY _ZTV7S7186C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7186C1[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7186C1D0Ev,_ZTv0_n12_N7S7186C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7186C1D0Ev,_ZThn56_N7S7186C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7186C1D1Ev,_ZTv0_n12_N7S7186C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7186C1D1Ev,_ZThn56_N7S7186C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7186C1 = {  "S7186C1", // class name
  bases_S7186C1, 3,
  &(vtc_S7186C1[0]), // expected_vtbl_contents
  &(vtt_S7186C1[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI7S7186C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7186C1),42, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7186C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4495C3  {
  char s4495c3f0;
  int s4495c3f1;
  virtual  ~S4495C3(); // _ZN7S4495C3D1Ev
  virtual void  v2(); // _ZN7S4495C32v2Ev
  virtual void  v3(); // _ZN7S4495C32v3Ev
  virtual void  v4(); // _ZN7S4495C32v4Ev
  virtual void  v5(); // _ZN7S4495C32v5Ev
  S4495C3(); // tgen
};
//SIG(-1 S4495C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4495C3 ::~S4495C3(){ note_dtor("S4495C3", this);}
void  S4495C3 ::v2(){vfunc_called(this, "_ZN7S4495C32v2Ev");}
void  S4495C3 ::v3(){vfunc_called(this, "_ZN7S4495C32v3Ev");}
void  S4495C3 ::v4(){vfunc_called(this, "_ZN7S4495C32v4Ev");}
void  S4495C3 ::v5(){vfunc_called(this, "_ZN7S4495C32v5Ev");}
S4495C3 ::S4495C3(){ note_ctor("S4495C3", this);} // tgen

static void Test_S4495C3()
{
  extern Class_Descriptor cd_S4495C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4495C3, buf);
    S4495C3 *dp, &lv = *(dp=new (buf) S4495C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4495C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4495C3)");
    check_field_offset(lv, s4495c3f0, ABISELECT(8,4), "S4495C3.s4495c3f0");
    check_field_offset(lv, s4495c3f1, ABISELECT(12,8), "S4495C3.s4495c3f1");
    test_class_info(&lv, &cd_S4495C3);
    dp->~S4495C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4495C3(Test_S4495C3, "S4495C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4495C3C1Ev();
extern void _ZN7S4495C3D1Ev();
Name_Map name_map_S4495C3[] = {
  NSPAIR(_ZN7S4495C3C1Ev),
  NSPAIR(_ZN7S4495C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4495C3[];
extern void _ZN7S4495C3D1Ev();
extern void _ZN7S4495C3D0Ev();
extern void _ZN7S4495C32v2Ev();
extern void _ZN7S4495C32v3Ev();
extern void _ZN7S4495C32v4Ev();
extern void _ZN7S4495C32v5Ev();
static  VTBL_ENTRY vtc_S4495C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4495C3[0]),
  (VTBL_ENTRY)&_ZN7S4495C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4495C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4495C3[];
extern  VTBL_ENTRY _ZTV7S4495C3[];
Class_Descriptor cd_S4495C3 = {  "S4495C3", // class name
  0,0,//no base classes
  &(vtc_S4495C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4495C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4495C3),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  S4495C2  : S4495C3 {
  ::S4224C24 s4495c2f0[8];
  ::S5309C14_nt s4495c2f1[8];
  int s4495c2f2;
  virtual  ~S4495C2(); // _ZN7S4495C2D1Ev
  virtual void  v6(); // _ZN7S4495C22v6Ev
  virtual void  v7(); // _ZN7S4495C22v7Ev
  virtual void  v8(); // _ZN7S4495C22v8Ev
  S4495C2(); // tgen
};
//SIG(-1 S4495C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4495C2 ::~S4495C2(){ note_dtor("S4495C2", this);}
void  S4495C2 ::v6(){vfunc_called(this, "_ZN7S4495C22v6Ev");}
void  S4495C2 ::v7(){vfunc_called(this, "_ZN7S4495C22v7Ev");}
void  S4495C2 ::v8(){vfunc_called(this, "_ZN7S4495C22v8Ev");}
S4495C2 ::S4495C2(){ note_ctor("S4495C2", this);} // tgen

static void Test_S4495C2()
{
  extern Class_Descriptor cd_S4495C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4495C2, buf);
    S4495C2 *dp, &lv = *(dp=new (buf) S4495C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4495C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4495C2)");
    check_base_class_offset(lv, (S4495C3*), 0, "S4495C2");
    check_field_offset(lv, s4495c2f0, ABISELECT(16,12), "S4495C2.s4495c2f0");
    check_field_offset(lv, s4495c2f1, ABISELECT(144,108), "S4495C2.s4495c2f1");
    check_field_offset(lv, s4495c2f2, ABISELECT(272,172), "S4495C2.s4495c2f2");
    test_class_info(&lv, &cd_S4495C2);
    dp->~S4495C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4495C2(Test_S4495C2, "S4495C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4495C2C1Ev();
extern void _ZN7S4495C2D1Ev();
Name_Map name_map_S4495C2[] = {
  NSPAIR(_ZN7S4495C2C1Ev),
  NSPAIR(_ZN7S4495C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4495C3;
extern VTBL_ENTRY _ZTI7S4495C3[];
extern  VTBL_ENTRY _ZTV7S4495C3[];
static Base_Class bases_S4495C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4495C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4495C2[];
extern void _ZN7S4495C2D1Ev();
extern void _ZN7S4495C2D0Ev();
extern void _ZN7S4495C32v2Ev();
extern void _ZN7S4495C32v3Ev();
extern void _ZN7S4495C32v4Ev();
extern void _ZN7S4495C32v5Ev();
extern void _ZN7S4495C22v6Ev();
extern void _ZN7S4495C22v7Ev();
extern void _ZN7S4495C22v8Ev();
static  VTBL_ENTRY vtc_S4495C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4495C2[0]),
  (VTBL_ENTRY)&_ZN7S4495C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4495C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4495C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4495C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4495C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4495C2[];
extern  VTBL_ENTRY _ZTV7S4495C2[];
Class_Descriptor cd_S4495C2 = {  "S4495C2", // class name
  bases_S4495C2, 1,
  &(vtc_S4495C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4495C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4495C2),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  S4495C1  : S4495C2 {
  int s4495c1f0;
  void *s4495c1f1;
  char s4495c1f2;
  virtual  ~S4495C1(); // _ZN7S4495C1D1Ev
  virtual void  v1(); // _ZN7S4495C12v1Ev
  S4495C1(); // tgen
};
//SIG(1 S4495C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fi Fp Fc}


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

static void Test_S4495C1()
{
  extern Class_Descriptor cd_S4495C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,48)];
    init_test(&cd_S4495C1, buf);
    S4495C1 *dp, &lv = *(dp=new (buf) S4495C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,188), "sizeof(S4495C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4495C1)");
    check_base_class_offset(lv, (S4495C3*)(S4495C2*), 0, "S4495C1");
    check_base_class_offset(lv, (S4495C2*), 0, "S4495C1");
    check_field_offset(lv, s4495c1f0, ABISELECT(276,176), "S4495C1.s4495c1f0");
    check_field_offset(lv, s4495c1f1, ABISELECT(280,180), "S4495C1.s4495c1f1");
    check_field_offset(lv, s4495c1f2, ABISELECT(288,184), "S4495C1.s4495c1f2");
    test_class_info(&lv, &cd_S4495C1);
    dp->~S4495C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4495C1(Test_S4495C1, "S4495C1", ABISELECT(296,188));

#else // __cplusplus

extern void _ZN7S4495C1C1Ev();
extern void _ZN7S4495C1D1Ev();
Name_Map name_map_S4495C1[] = {
  NSPAIR(_ZN7S4495C1C1Ev),
  NSPAIR(_ZN7S4495C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4495C3;
extern VTBL_ENTRY _ZTI7S4495C3[];
extern  VTBL_ENTRY _ZTV7S4495C3[];
extern Class_Descriptor cd_S4495C2;
extern VTBL_ENTRY _ZTI7S4495C2[];
extern  VTBL_ENTRY _ZTV7S4495C2[];
static Base_Class bases_S4495C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4495C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4495C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4495C1[];
extern void _ZN7S4495C1D1Ev();
extern void _ZN7S4495C1D0Ev();
extern void _ZN7S4495C32v2Ev();
extern void _ZN7S4495C32v3Ev();
extern void _ZN7S4495C32v4Ev();
extern void _ZN7S4495C32v5Ev();
extern void _ZN7S4495C22v6Ev();
extern void _ZN7S4495C22v7Ev();
extern void _ZN7S4495C22v8Ev();
extern void _ZN7S4495C12v1Ev();
static  VTBL_ENTRY vtc_S4495C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4495C1[0]),
  (VTBL_ENTRY)&_ZN7S4495C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4495C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4495C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4495C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4495C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4495C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4495C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4495C1[];
extern  VTBL_ENTRY _ZTV7S4495C1[];
Class_Descriptor cd_S4495C1 = {  "S4495C1", // class name
  bases_S4495C1, 2,
  &(vtc_S4495C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,188), // object size
  NSPAIRA(_ZTI7S4495C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4495C1),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  S4489C3  {
  char s4489c3f0;
  int s4489c3f1;
  virtual  ~S4489C3(); // _ZN7S4489C3D1Ev
  virtual void  v2(); // _ZN7S4489C32v2Ev
  virtual void  v3(); // _ZN7S4489C32v3Ev
  virtual void  v4(); // _ZN7S4489C32v4Ev
  virtual void  v5(); // _ZN7S4489C32v5Ev
  S4489C3(); // tgen
};
//SIG(-1 S4489C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4489C3 ::~S4489C3(){ note_dtor("S4489C3", this);}
void  S4489C3 ::v2(){vfunc_called(this, "_ZN7S4489C32v2Ev");}
void  S4489C3 ::v3(){vfunc_called(this, "_ZN7S4489C32v3Ev");}
void  S4489C3 ::v4(){vfunc_called(this, "_ZN7S4489C32v4Ev");}
void  S4489C3 ::v5(){vfunc_called(this, "_ZN7S4489C32v5Ev");}
S4489C3 ::S4489C3(){ note_ctor("S4489C3", this);} // tgen

static void Test_S4489C3()
{
  extern Class_Descriptor cd_S4489C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4489C3, buf);
    S4489C3 *dp, &lv = *(dp=new (buf) S4489C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4489C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4489C3)");
    check_field_offset(lv, s4489c3f0, ABISELECT(8,4), "S4489C3.s4489c3f0");
    check_field_offset(lv, s4489c3f1, ABISELECT(12,8), "S4489C3.s4489c3f1");
    test_class_info(&lv, &cd_S4489C3);
    dp->~S4489C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4489C3(Test_S4489C3, "S4489C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4489C3C1Ev();
extern void _ZN7S4489C3D1Ev();
Name_Map name_map_S4489C3[] = {
  NSPAIR(_ZN7S4489C3C1Ev),
  NSPAIR(_ZN7S4489C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4489C3[];
extern void _ZN7S4489C3D1Ev();
extern void _ZN7S4489C3D0Ev();
extern void _ZN7S4489C32v2Ev();
extern void _ZN7S4489C32v3Ev();
extern void _ZN7S4489C32v4Ev();
extern void _ZN7S4489C32v5Ev();
static  VTBL_ENTRY vtc_S4489C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4489C3[0]),
  (VTBL_ENTRY)&_ZN7S4489C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4489C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4489C3[];
extern  VTBL_ENTRY _ZTV7S4489C3[];
Class_Descriptor cd_S4489C3 = {  "S4489C3", // class name
  0,0,//no base classes
  &(vtc_S4489C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4489C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4489C3),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  S4489C2  : S4489C3 {
  ::S4224C24 s4489c2f0[8];
  ::S5309C14_nt s4489c2f1[8];
  int s4489c2f2;
  virtual  ~S4489C2(); // _ZN7S4489C2D1Ev
  virtual void  v6(); // _ZN7S4489C22v6Ev
  virtual void  v7(); // _ZN7S4489C22v7Ev
  virtual void  v8(); // _ZN7S4489C22v8Ev
  S4489C2(); // tgen
};
//SIG(-1 S4489C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4489C2 ::~S4489C2(){ note_dtor("S4489C2", this);}
void  S4489C2 ::v6(){vfunc_called(this, "_ZN7S4489C22v6Ev");}
void  S4489C2 ::v7(){vfunc_called(this, "_ZN7S4489C22v7Ev");}
void  S4489C2 ::v8(){vfunc_called(this, "_ZN7S4489C22v8Ev");}
S4489C2 ::S4489C2(){ note_ctor("S4489C2", this);} // tgen

static void Test_S4489C2()
{
  extern Class_Descriptor cd_S4489C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4489C2, buf);
    S4489C2 *dp, &lv = *(dp=new (buf) S4489C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4489C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4489C2)");
    check_base_class_offset(lv, (S4489C3*), 0, "S4489C2");
    check_field_offset(lv, s4489c2f0, ABISELECT(16,12), "S4489C2.s4489c2f0");
    check_field_offset(lv, s4489c2f1, ABISELECT(144,108), "S4489C2.s4489c2f1");
    check_field_offset(lv, s4489c2f2, ABISELECT(272,172), "S4489C2.s4489c2f2");
    test_class_info(&lv, &cd_S4489C2);
    dp->~S4489C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4489C2(Test_S4489C2, "S4489C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4489C2C1Ev();
extern void _ZN7S4489C2D1Ev();
Name_Map name_map_S4489C2[] = {
  NSPAIR(_ZN7S4489C2C1Ev),
  NSPAIR(_ZN7S4489C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4489C3;
extern VTBL_ENTRY _ZTI7S4489C3[];
extern  VTBL_ENTRY _ZTV7S4489C3[];
static Base_Class bases_S4489C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4489C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4489C2[];
extern void _ZN7S4489C2D1Ev();
extern void _ZN7S4489C2D0Ev();
extern void _ZN7S4489C32v2Ev();
extern void _ZN7S4489C32v3Ev();
extern void _ZN7S4489C32v4Ev();
extern void _ZN7S4489C32v5Ev();
extern void _ZN7S4489C22v6Ev();
extern void _ZN7S4489C22v7Ev();
extern void _ZN7S4489C22v8Ev();
static  VTBL_ENTRY vtc_S4489C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4489C2[0]),
  (VTBL_ENTRY)&_ZN7S4489C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4489C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4489C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4489C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4489C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4489C2[];
extern  VTBL_ENTRY _ZTV7S4489C2[];
Class_Descriptor cd_S4489C2 = {  "S4489C2", // class name
  bases_S4489C2, 1,
  &(vtc_S4489C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4489C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4489C2),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  S4489C1  : S4489C2 {
  char s4489c1f0[2];
  void *s4489c1f1;
  virtual  ~S4489C1(); // _ZN7S4489C1D1Ev
  virtual void  v1(); // _ZN7S4489C12v1Ev
  S4489C1(); // tgen
};
//SIG(1 S4489C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fc[2] Fp}


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

static void Test_S4489C1()
{
  extern Class_Descriptor cd_S4489C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,47)];
    init_test(&cd_S4489C1, buf);
    S4489C1 *dp, &lv = *(dp=new (buf) S4489C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,184), "sizeof(S4489C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4489C1)");
    check_base_class_offset(lv, (S4489C3*)(S4489C2*), 0, "S4489C1");
    check_base_class_offset(lv, (S4489C2*), 0, "S4489C1");
    check_field_offset(lv, s4489c1f0, ABISELECT(276,176), "S4489C1.s4489c1f0");
    check_field_offset(lv, s4489c1f1, ABISELECT(280,180), "S4489C1.s4489c1f1");
    test_class_info(&lv, &cd_S4489C1);
    dp->~S4489C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4489C1(Test_S4489C1, "S4489C1", ABISELECT(288,184));

#else // __cplusplus

extern void _ZN7S4489C1C1Ev();
extern void _ZN7S4489C1D1Ev();
Name_Map name_map_S4489C1[] = {
  NSPAIR(_ZN7S4489C1C1Ev),
  NSPAIR(_ZN7S4489C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4489C3;
extern VTBL_ENTRY _ZTI7S4489C3[];
extern  VTBL_ENTRY _ZTV7S4489C3[];
extern Class_Descriptor cd_S4489C2;
extern VTBL_ENTRY _ZTI7S4489C2[];
extern  VTBL_ENTRY _ZTV7S4489C2[];
static Base_Class bases_S4489C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4489C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4489C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4489C1[];
extern void _ZN7S4489C1D1Ev();
extern void _ZN7S4489C1D0Ev();
extern void _ZN7S4489C32v2Ev();
extern void _ZN7S4489C32v3Ev();
extern void _ZN7S4489C32v4Ev();
extern void _ZN7S4489C32v5Ev();
extern void _ZN7S4489C22v6Ev();
extern void _ZN7S4489C22v7Ev();
extern void _ZN7S4489C22v8Ev();
extern void _ZN7S4489C12v1Ev();
static  VTBL_ENTRY vtc_S4489C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4489C1[0]),
  (VTBL_ENTRY)&_ZN7S4489C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4489C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4489C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4489C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4489C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4489C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4489C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4489C1[];
extern  VTBL_ENTRY _ZTV7S4489C1[];
Class_Descriptor cd_S4489C1 = {  "S4489C1", // class name
  bases_S4489C1, 2,
  &(vtc_S4489C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,184), // object size
  NSPAIRA(_ZTI7S4489C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4489C1),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  S4488C3  {
  char s4488c3f0;
  int s4488c3f1;
  virtual  ~S4488C3(); // _ZN7S4488C3D1Ev
  virtual void  v2(); // _ZN7S4488C32v2Ev
  virtual void  v3(); // _ZN7S4488C32v3Ev
  virtual void  v4(); // _ZN7S4488C32v4Ev
  virtual void  v5(); // _ZN7S4488C32v5Ev
  S4488C3(); // tgen
};
//SIG(-1 S4488C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4488C3 ::~S4488C3(){ note_dtor("S4488C3", this);}
void  S4488C3 ::v2(){vfunc_called(this, "_ZN7S4488C32v2Ev");}
void  S4488C3 ::v3(){vfunc_called(this, "_ZN7S4488C32v3Ev");}
void  S4488C3 ::v4(){vfunc_called(this, "_ZN7S4488C32v4Ev");}
void  S4488C3 ::v5(){vfunc_called(this, "_ZN7S4488C32v5Ev");}
S4488C3 ::S4488C3(){ note_ctor("S4488C3", this);} // tgen

static void Test_S4488C3()
{
  extern Class_Descriptor cd_S4488C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4488C3, buf);
    S4488C3 *dp, &lv = *(dp=new (buf) S4488C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4488C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4488C3)");
    check_field_offset(lv, s4488c3f0, ABISELECT(8,4), "S4488C3.s4488c3f0");
    check_field_offset(lv, s4488c3f1, ABISELECT(12,8), "S4488C3.s4488c3f1");
    test_class_info(&lv, &cd_S4488C3);
    dp->~S4488C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4488C3(Test_S4488C3, "S4488C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4488C3C1Ev();
extern void _ZN7S4488C3D1Ev();
Name_Map name_map_S4488C3[] = {
  NSPAIR(_ZN7S4488C3C1Ev),
  NSPAIR(_ZN7S4488C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4488C3[];
extern void _ZN7S4488C3D1Ev();
extern void _ZN7S4488C3D0Ev();
extern void _ZN7S4488C32v2Ev();
extern void _ZN7S4488C32v3Ev();
extern void _ZN7S4488C32v4Ev();
extern void _ZN7S4488C32v5Ev();
static  VTBL_ENTRY vtc_S4488C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4488C3[0]),
  (VTBL_ENTRY)&_ZN7S4488C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4488C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4488C3[];
extern  VTBL_ENTRY _ZTV7S4488C3[];
Class_Descriptor cd_S4488C3 = {  "S4488C3", // class name
  0,0,//no base classes
  &(vtc_S4488C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4488C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4488C3),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  S4488C2  : S4488C3 {
  ::S4224C24 s4488c2f0[8];
  ::S5309C14_nt s4488c2f1[8];
  int s4488c2f2;
  virtual  ~S4488C2(); // _ZN7S4488C2D1Ev
  virtual void  v6(); // _ZN7S4488C22v6Ev
  virtual void  v7(); // _ZN7S4488C22v7Ev
  virtual void  v8(); // _ZN7S4488C22v8Ev
  S4488C2(); // tgen
};
//SIG(-1 S4488C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4488C2 ::~S4488C2(){ note_dtor("S4488C2", this);}
void  S4488C2 ::v6(){vfunc_called(this, "_ZN7S4488C22v6Ev");}
void  S4488C2 ::v7(){vfunc_called(this, "_ZN7S4488C22v7Ev");}
void  S4488C2 ::v8(){vfunc_called(this, "_ZN7S4488C22v8Ev");}
S4488C2 ::S4488C2(){ note_ctor("S4488C2", this);} // tgen

static void Test_S4488C2()
{
  extern Class_Descriptor cd_S4488C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4488C2, buf);
    S4488C2 *dp, &lv = *(dp=new (buf) S4488C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4488C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4488C2)");
    check_base_class_offset(lv, (S4488C3*), 0, "S4488C2");
    check_field_offset(lv, s4488c2f0, ABISELECT(16,12), "S4488C2.s4488c2f0");
    check_field_offset(lv, s4488c2f1, ABISELECT(144,108), "S4488C2.s4488c2f1");
    check_field_offset(lv, s4488c2f2, ABISELECT(272,172), "S4488C2.s4488c2f2");
    test_class_info(&lv, &cd_S4488C2);
    dp->~S4488C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4488C2(Test_S4488C2, "S4488C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4488C2C1Ev();
extern void _ZN7S4488C2D1Ev();
Name_Map name_map_S4488C2[] = {
  NSPAIR(_ZN7S4488C2C1Ev),
  NSPAIR(_ZN7S4488C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4488C3;
extern VTBL_ENTRY _ZTI7S4488C3[];
extern  VTBL_ENTRY _ZTV7S4488C3[];
static Base_Class bases_S4488C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4488C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4488C2[];
extern void _ZN7S4488C2D1Ev();
extern void _ZN7S4488C2D0Ev();
extern void _ZN7S4488C32v2Ev();
extern void _ZN7S4488C32v3Ev();
extern void _ZN7S4488C32v4Ev();
extern void _ZN7S4488C32v5Ev();
extern void _ZN7S4488C22v6Ev();
extern void _ZN7S4488C22v7Ev();
extern void _ZN7S4488C22v8Ev();
static  VTBL_ENTRY vtc_S4488C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4488C2[0]),
  (VTBL_ENTRY)&_ZN7S4488C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4488C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4488C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4488C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4488C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4488C2[];
extern  VTBL_ENTRY _ZTV7S4488C2[];
Class_Descriptor cd_S4488C2 = {  "S4488C2", // class name
  bases_S4488C2, 1,
  &(vtc_S4488C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4488C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4488C2),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  S4488C1  : S4488C2 {
  int s4488c1f0[3];
  __tsi64 s4488c1f1;
  int s4488c1f2;
  virtual void  v1(); // _ZN7S4488C12v1Ev
  ~S4488C1(); // tgen
  S4488C1(); // tgen
};
//SIG(1 S4488C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} v1 Fi[3] FL Fi}


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

static void Test_S4488C1()
{
  extern Class_Descriptor cd_S4488C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,51)];
    init_test(&cd_S4488C1, buf);
    S4488C1 *dp, &lv = *(dp=new (buf) S4488C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,200), "sizeof(S4488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4488C1)");
    check_base_class_offset(lv, (S4488C3*)(S4488C2*), 0, "S4488C1");
    check_base_class_offset(lv, (S4488C2*), 0, "S4488C1");
    check_field_offset(lv, s4488c1f0, ABISELECT(276,176), "S4488C1.s4488c1f0");
    check_field_offset(lv, s4488c1f1, ABISELECT(288,188), "S4488C1.s4488c1f1");
    check_field_offset(lv, s4488c1f2, ABISELECT(296,196), "S4488C1.s4488c1f2");
    test_class_info(&lv, &cd_S4488C1);
    dp->~S4488C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4488C1(Test_S4488C1, "S4488C1", ABISELECT(304,200));

#else // __cplusplus

extern void _ZN7S4488C1C1Ev();
extern void _ZN7S4488C1D1Ev();
Name_Map name_map_S4488C1[] = {
  NSPAIR(_ZN7S4488C1C1Ev),
  NSPAIR(_ZN7S4488C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4488C3;
extern VTBL_ENTRY _ZTI7S4488C3[];
extern  VTBL_ENTRY _ZTV7S4488C3[];
extern Class_Descriptor cd_S4488C2;
extern VTBL_ENTRY _ZTI7S4488C2[];
extern  VTBL_ENTRY _ZTV7S4488C2[];
static Base_Class bases_S4488C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4488C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4488C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4488C1[];
extern void _ZN7S4488C1D1Ev();
extern void _ZN7S4488C1D0Ev();
extern void _ZN7S4488C32v2Ev();
extern void _ZN7S4488C32v3Ev();
extern void _ZN7S4488C32v4Ev();
extern void _ZN7S4488C32v5Ev();
extern void _ZN7S4488C22v6Ev();
extern void _ZN7S4488C22v7Ev();
extern void _ZN7S4488C22v8Ev();
extern void _ZN7S4488C12v1Ev();
static  VTBL_ENTRY vtc_S4488C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4488C1[0]),
  (VTBL_ENTRY)&_ZN7S4488C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4488C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4488C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4488C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4488C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4488C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4488C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4488C1[];
extern  VTBL_ENTRY _ZTV7S4488C1[];
Class_Descriptor cd_S4488C1 = {  "S4488C1", // class name
  bases_S4488C1, 2,
  &(vtc_S4488C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,200), // object size
  NSPAIRA(_ZTI7S4488C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4488C1),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  S4487C3  {
  char s4487c3f0;
  int s4487c3f1;
  virtual  ~S4487C3(); // _ZN7S4487C3D1Ev
  virtual void  v2(); // _ZN7S4487C32v2Ev
  virtual void  v3(); // _ZN7S4487C32v3Ev
  virtual void  v4(); // _ZN7S4487C32v4Ev
  virtual void  v5(); // _ZN7S4487C32v5Ev
  S4487C3(); // tgen
};
//SIG(-1 S4487C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4487C3 ::~S4487C3(){ note_dtor("S4487C3", this);}
void  S4487C3 ::v2(){vfunc_called(this, "_ZN7S4487C32v2Ev");}
void  S4487C3 ::v3(){vfunc_called(this, "_ZN7S4487C32v3Ev");}
void  S4487C3 ::v4(){vfunc_called(this, "_ZN7S4487C32v4Ev");}
void  S4487C3 ::v5(){vfunc_called(this, "_ZN7S4487C32v5Ev");}
S4487C3 ::S4487C3(){ note_ctor("S4487C3", this);} // tgen

static void Test_S4487C3()
{
  extern Class_Descriptor cd_S4487C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4487C3, buf);
    S4487C3 *dp, &lv = *(dp=new (buf) S4487C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4487C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4487C3)");
    check_field_offset(lv, s4487c3f0, ABISELECT(8,4), "S4487C3.s4487c3f0");
    check_field_offset(lv, s4487c3f1, ABISELECT(12,8), "S4487C3.s4487c3f1");
    test_class_info(&lv, &cd_S4487C3);
    dp->~S4487C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4487C3(Test_S4487C3, "S4487C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4487C3C1Ev();
extern void _ZN7S4487C3D1Ev();
Name_Map name_map_S4487C3[] = {
  NSPAIR(_ZN7S4487C3C1Ev),
  NSPAIR(_ZN7S4487C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4487C3[];
extern void _ZN7S4487C3D1Ev();
extern void _ZN7S4487C3D0Ev();
extern void _ZN7S4487C32v2Ev();
extern void _ZN7S4487C32v3Ev();
extern void _ZN7S4487C32v4Ev();
extern void _ZN7S4487C32v5Ev();
static  VTBL_ENTRY vtc_S4487C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4487C3[0]),
  (VTBL_ENTRY)&_ZN7S4487C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4487C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4487C3[];
extern  VTBL_ENTRY _ZTV7S4487C3[];
Class_Descriptor cd_S4487C3 = {  "S4487C3", // class name
  0,0,//no base classes
  &(vtc_S4487C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4487C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4487C3),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  S4487C2  : S4487C3 {
  ::S4224C24 s4487c2f0[8];
  ::S5309C14_nt s4487c2f1[8];
  int s4487c2f2;
  virtual  ~S4487C2(); // _ZN7S4487C2D1Ev
  virtual void  v6(); // _ZN7S4487C22v6Ev
  virtual void  v7(); // _ZN7S4487C22v7Ev
  virtual void  v8(); // _ZN7S4487C22v8Ev
  S4487C2(); // tgen
};
//SIG(-1 S4487C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4487C2 ::~S4487C2(){ note_dtor("S4487C2", this);}
void  S4487C2 ::v6(){vfunc_called(this, "_ZN7S4487C22v6Ev");}
void  S4487C2 ::v7(){vfunc_called(this, "_ZN7S4487C22v7Ev");}
void  S4487C2 ::v8(){vfunc_called(this, "_ZN7S4487C22v8Ev");}
S4487C2 ::S4487C2(){ note_ctor("S4487C2", this);} // tgen

static void Test_S4487C2()
{
  extern Class_Descriptor cd_S4487C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4487C2, buf);
    S4487C2 *dp, &lv = *(dp=new (buf) S4487C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4487C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4487C2)");
    check_base_class_offset(lv, (S4487C3*), 0, "S4487C2");
    check_field_offset(lv, s4487c2f0, ABISELECT(16,12), "S4487C2.s4487c2f0");
    check_field_offset(lv, s4487c2f1, ABISELECT(144,108), "S4487C2.s4487c2f1");
    check_field_offset(lv, s4487c2f2, ABISELECT(272,172), "S4487C2.s4487c2f2");
    test_class_info(&lv, &cd_S4487C2);
    dp->~S4487C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4487C2(Test_S4487C2, "S4487C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4487C2C1Ev();
extern void _ZN7S4487C2D1Ev();
Name_Map name_map_S4487C2[] = {
  NSPAIR(_ZN7S4487C2C1Ev),
  NSPAIR(_ZN7S4487C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4487C3;
extern VTBL_ENTRY _ZTI7S4487C3[];
extern  VTBL_ENTRY _ZTV7S4487C3[];
static Base_Class bases_S4487C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4487C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4487C2[];
extern void _ZN7S4487C2D1Ev();
extern void _ZN7S4487C2D0Ev();
extern void _ZN7S4487C32v2Ev();
extern void _ZN7S4487C32v3Ev();
extern void _ZN7S4487C32v4Ev();
extern void _ZN7S4487C32v5Ev();
extern void _ZN7S4487C22v6Ev();
extern void _ZN7S4487C22v7Ev();
extern void _ZN7S4487C22v8Ev();
static  VTBL_ENTRY vtc_S4487C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4487C2[0]),
  (VTBL_ENTRY)&_ZN7S4487C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4487C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4487C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4487C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4487C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4487C2[];
extern  VTBL_ENTRY _ZTV7S4487C2[];
Class_Descriptor cd_S4487C2 = {  "S4487C2", // class name
  bases_S4487C2, 1,
  &(vtc_S4487C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4487C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4487C2),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  S4487C1  : S4487C2 {
  int s4487c1f0[3];
  long s4487c1f1;
  int s4487c1f2;
  virtual void  v1(); // _ZN7S4487C12v1Ev
  ~S4487C1(); // tgen
  S4487C1(); // tgen
};
//SIG(1 S4487C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} v1 Fi[3] Fl Fi}


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

static void Test_S4487C1()
{
  extern Class_Descriptor cd_S4487C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,50)];
    init_test(&cd_S4487C1, buf);
    S4487C1 *dp, &lv = *(dp=new (buf) S4487C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,196), "sizeof(S4487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4487C1)");
    check_base_class_offset(lv, (S4487C3*)(S4487C2*), 0, "S4487C1");
    check_base_class_offset(lv, (S4487C2*), 0, "S4487C1");
    check_field_offset(lv, s4487c1f0, ABISELECT(276,176), "S4487C1.s4487c1f0");
    check_field_offset(lv, s4487c1f1, ABISELECT(288,188), "S4487C1.s4487c1f1");
    check_field_offset(lv, s4487c1f2, ABISELECT(296,192), "S4487C1.s4487c1f2");
    test_class_info(&lv, &cd_S4487C1);
    dp->~S4487C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4487C1(Test_S4487C1, "S4487C1", ABISELECT(304,196));

#else // __cplusplus

extern void _ZN7S4487C1C1Ev();
extern void _ZN7S4487C1D1Ev();
Name_Map name_map_S4487C1[] = {
  NSPAIR(_ZN7S4487C1C1Ev),
  NSPAIR(_ZN7S4487C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4487C3;
extern VTBL_ENTRY _ZTI7S4487C3[];
extern  VTBL_ENTRY _ZTV7S4487C3[];
extern Class_Descriptor cd_S4487C2;
extern VTBL_ENTRY _ZTI7S4487C2[];
extern  VTBL_ENTRY _ZTV7S4487C2[];
static Base_Class bases_S4487C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4487C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4487C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4487C1[];
extern void _ZN7S4487C1D1Ev();
extern void _ZN7S4487C1D0Ev();
extern void _ZN7S4487C32v2Ev();
extern void _ZN7S4487C32v3Ev();
extern void _ZN7S4487C32v4Ev();
extern void _ZN7S4487C32v5Ev();
extern void _ZN7S4487C22v6Ev();
extern void _ZN7S4487C22v7Ev();
extern void _ZN7S4487C22v8Ev();
extern void _ZN7S4487C12v1Ev();
static  VTBL_ENTRY vtc_S4487C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4487C1[0]),
  (VTBL_ENTRY)&_ZN7S4487C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4487C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4487C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4487C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4487C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4487C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4487C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4487C1[];
extern  VTBL_ENTRY _ZTV7S4487C1[];
Class_Descriptor cd_S4487C1 = {  "S4487C1", // class name
  bases_S4487C1, 2,
  &(vtc_S4487C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,196), // object size
  NSPAIRA(_ZTI7S4487C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4487C1),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  S4485C3  {
  char s4485c3f0;
  int s4485c3f1;
  virtual  ~S4485C3(); // _ZN7S4485C3D1Ev
  virtual void  v2(); // _ZN7S4485C32v2Ev
  virtual void  v3(); // _ZN7S4485C32v3Ev
  virtual void  v4(); // _ZN7S4485C32v4Ev
  virtual void  v5(); // _ZN7S4485C32v5Ev
  S4485C3(); // tgen
};
//SIG(-1 S4485C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4485C3 ::~S4485C3(){ note_dtor("S4485C3", this);}
void  S4485C3 ::v2(){vfunc_called(this, "_ZN7S4485C32v2Ev");}
void  S4485C3 ::v3(){vfunc_called(this, "_ZN7S4485C32v3Ev");}
void  S4485C3 ::v4(){vfunc_called(this, "_ZN7S4485C32v4Ev");}
void  S4485C3 ::v5(){vfunc_called(this, "_ZN7S4485C32v5Ev");}
S4485C3 ::S4485C3(){ note_ctor("S4485C3", this);} // tgen

static void Test_S4485C3()
{
  extern Class_Descriptor cd_S4485C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4485C3, buf);
    S4485C3 *dp, &lv = *(dp=new (buf) S4485C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4485C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4485C3)");
    check_field_offset(lv, s4485c3f0, ABISELECT(8,4), "S4485C3.s4485c3f0");
    check_field_offset(lv, s4485c3f1, ABISELECT(12,8), "S4485C3.s4485c3f1");
    test_class_info(&lv, &cd_S4485C3);
    dp->~S4485C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4485C3(Test_S4485C3, "S4485C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4485C3C1Ev();
extern void _ZN7S4485C3D1Ev();
Name_Map name_map_S4485C3[] = {
  NSPAIR(_ZN7S4485C3C1Ev),
  NSPAIR(_ZN7S4485C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4485C3[];
extern void _ZN7S4485C3D1Ev();
extern void _ZN7S4485C3D0Ev();
extern void _ZN7S4485C32v2Ev();
extern void _ZN7S4485C32v3Ev();
extern void _ZN7S4485C32v4Ev();
extern void _ZN7S4485C32v5Ev();
static  VTBL_ENTRY vtc_S4485C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4485C3[0]),
  (VTBL_ENTRY)&_ZN7S4485C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4485C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4485C3[];
extern  VTBL_ENTRY _ZTV7S4485C3[];
Class_Descriptor cd_S4485C3 = {  "S4485C3", // class name
  0,0,//no base classes
  &(vtc_S4485C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4485C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4485C3),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  S4485C2  : S4485C3 {
  ::S4224C24 s4485c2f0[8];
  ::S5309C14_nt s4485c2f1[8];
  int s4485c2f2;
  virtual  ~S4485C2(); // _ZN7S4485C2D1Ev
  virtual void  v6(); // _ZN7S4485C22v6Ev
  virtual void  v7(); // _ZN7S4485C22v7Ev
  virtual void  v8(); // _ZN7S4485C22v8Ev
  S4485C2(); // tgen
};
//SIG(-1 S4485C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4485C2 ::~S4485C2(){ note_dtor("S4485C2", this);}
void  S4485C2 ::v6(){vfunc_called(this, "_ZN7S4485C22v6Ev");}
void  S4485C2 ::v7(){vfunc_called(this, "_ZN7S4485C22v7Ev");}
void  S4485C2 ::v8(){vfunc_called(this, "_ZN7S4485C22v8Ev");}
S4485C2 ::S4485C2(){ note_ctor("S4485C2", this);} // tgen

static void Test_S4485C2()
{
  extern Class_Descriptor cd_S4485C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4485C2, buf);
    S4485C2 *dp, &lv = *(dp=new (buf) S4485C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4485C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4485C2)");
    check_base_class_offset(lv, (S4485C3*), 0, "S4485C2");
    check_field_offset(lv, s4485c2f0, ABISELECT(16,12), "S4485C2.s4485c2f0");
    check_field_offset(lv, s4485c2f1, ABISELECT(144,108), "S4485C2.s4485c2f1");
    check_field_offset(lv, s4485c2f2, ABISELECT(272,172), "S4485C2.s4485c2f2");
    test_class_info(&lv, &cd_S4485C2);
    dp->~S4485C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4485C2(Test_S4485C2, "S4485C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4485C2C1Ev();
extern void _ZN7S4485C2D1Ev();
Name_Map name_map_S4485C2[] = {
  NSPAIR(_ZN7S4485C2C1Ev),
  NSPAIR(_ZN7S4485C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4485C3;
extern VTBL_ENTRY _ZTI7S4485C3[];
extern  VTBL_ENTRY _ZTV7S4485C3[];
static Base_Class bases_S4485C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4485C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4485C2[];
extern void _ZN7S4485C2D1Ev();
extern void _ZN7S4485C2D0Ev();
extern void _ZN7S4485C32v2Ev();
extern void _ZN7S4485C32v3Ev();
extern void _ZN7S4485C32v4Ev();
extern void _ZN7S4485C32v5Ev();
extern void _ZN7S4485C22v6Ev();
extern void _ZN7S4485C22v7Ev();
extern void _ZN7S4485C22v8Ev();
static  VTBL_ENTRY vtc_S4485C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4485C2[0]),
  (VTBL_ENTRY)&_ZN7S4485C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4485C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4485C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4485C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4485C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4485C2[];
extern  VTBL_ENTRY _ZTV7S4485C2[];
Class_Descriptor cd_S4485C2 = {  "S4485C2", // class name
  bases_S4485C2, 1,
  &(vtc_S4485C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4485C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4485C2),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  S4485C1  : S4485C2 {
  char s4485c1f0[4];
  void *s4485c1f1[4];
  virtual void  v1(); // _ZN7S4485C12v1Ev
  ~S4485C1(); // tgen
  S4485C1(); // tgen
};
//SIG(1 S4485C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} v1 Fc[4] Fp[4]}


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

static void Test_S4485C1()
{
  extern Class_Descriptor cd_S4485C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,50)];
    init_test(&cd_S4485C1, buf);
    S4485C1 *dp, &lv = *(dp=new (buf) S4485C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,196), "sizeof(S4485C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4485C1)");
    check_base_class_offset(lv, (S4485C3*)(S4485C2*), 0, "S4485C1");
    check_base_class_offset(lv, (S4485C2*), 0, "S4485C1");
    check_field_offset(lv, s4485c1f0, ABISELECT(276,176), "S4485C1.s4485c1f0");
    check_field_offset(lv, s4485c1f1, ABISELECT(280,180), "S4485C1.s4485c1f1");
    test_class_info(&lv, &cd_S4485C1);
    dp->~S4485C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4485C1(Test_S4485C1, "S4485C1", ABISELECT(312,196));

#else // __cplusplus

extern void _ZN7S4485C1C1Ev();
extern void _ZN7S4485C1D1Ev();
Name_Map name_map_S4485C1[] = {
  NSPAIR(_ZN7S4485C1C1Ev),
  NSPAIR(_ZN7S4485C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4485C3;
extern VTBL_ENTRY _ZTI7S4485C3[];
extern  VTBL_ENTRY _ZTV7S4485C3[];
extern Class_Descriptor cd_S4485C2;
extern VTBL_ENTRY _ZTI7S4485C2[];
extern  VTBL_ENTRY _ZTV7S4485C2[];
static Base_Class bases_S4485C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4485C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4485C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4485C1[];
extern void _ZN7S4485C1D1Ev();
extern void _ZN7S4485C1D0Ev();
extern void _ZN7S4485C32v2Ev();
extern void _ZN7S4485C32v3Ev();
extern void _ZN7S4485C32v4Ev();
extern void _ZN7S4485C32v5Ev();
extern void _ZN7S4485C22v6Ev();
extern void _ZN7S4485C22v7Ev();
extern void _ZN7S4485C22v8Ev();
extern void _ZN7S4485C12v1Ev();
static  VTBL_ENTRY vtc_S4485C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4485C1[0]),
  (VTBL_ENTRY)&_ZN7S4485C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4485C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4485C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4485C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4485C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4485C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4485C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4485C1[];
extern  VTBL_ENTRY _ZTV7S4485C1[];
Class_Descriptor cd_S4485C1 = {  "S4485C1", // class name
  bases_S4485C1, 2,
  &(vtc_S4485C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,196), // object size
  NSPAIRA(_ZTI7S4485C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4485C1),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  S20817C3  {
  int s20817c3f0;
  virtual void  v2(); // _ZN8S20817C32v2Ev
  virtual void  v3(); // _ZN8S20817C32v3Ev
  virtual void  v4(); // _ZN8S20817C32v4Ev
  ~S20817C3(); // tgen
  S20817C3(); // tgen
};
//SIG(-1 S20817C3) C1{ v1 v2 v3 Fi}


void  S20817C3 ::v2(){vfunc_called(this, "_ZN8S20817C32v2Ev");}
void  S20817C3 ::v3(){vfunc_called(this, "_ZN8S20817C32v3Ev");}
void  S20817C3 ::v4(){vfunc_called(this, "_ZN8S20817C32v4Ev");}
S20817C3 ::~S20817C3(){ note_dtor("S20817C3", this);} // tgen
S20817C3 ::S20817C3(){ note_ctor("S20817C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20817C3C1Ev();
extern void _ZN8S20817C3D1Ev();
Name_Map name_map_S20817C3[] = {
  NSPAIR(_ZN8S20817C3C1Ev),
  NSPAIR(_ZN8S20817C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20817C3[];
extern void _ZN8S20817C32v2Ev();
extern void _ZN8S20817C32v3Ev();
extern void _ZN8S20817C32v4Ev();
static  VTBL_ENTRY vtc_S20817C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20817C3[0]),
  (VTBL_ENTRY)&_ZN8S20817C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20817C3[];
extern  VTBL_ENTRY _ZTV8S20817C3[];
Class_Descriptor cd_S20817C3 = {  "S20817C3", // class name
  0,0,//no base classes
  &(vtc_S20817C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20817C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20817C3),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  S20817C4  {
  __tsi64 s20817c4f0;
  virtual void  v5(); // _ZN8S20817C42v5Ev
  virtual void  v6(); // _ZN8S20817C42v6Ev
  virtual void  v7(); // _ZN8S20817C42v7Ev
  virtual void  v8(); // _ZN8S20817C42v8Ev
  virtual void  v9(); // _ZN8S20817C42v9Ev
  virtual void  v10(); // _ZN8S20817C43v10Ev
  ~S20817C4(); // tgen
  S20817C4(); // tgen
};
//SIG(-1 S20817C4) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S20817C4 ::v5(){vfunc_called(this, "_ZN8S20817C42v5Ev");}
void  S20817C4 ::v6(){vfunc_called(this, "_ZN8S20817C42v6Ev");}
void  S20817C4 ::v7(){vfunc_called(this, "_ZN8S20817C42v7Ev");}
void  S20817C4 ::v8(){vfunc_called(this, "_ZN8S20817C42v8Ev");}
void  S20817C4 ::v9(){vfunc_called(this, "_ZN8S20817C42v9Ev");}
void  S20817C4 ::v10(){vfunc_called(this, "_ZN8S20817C43v10Ev");}
S20817C4 ::~S20817C4(){ note_dtor("S20817C4", this);} // tgen
S20817C4 ::S20817C4(){ note_ctor("S20817C4", this);} // tgen

static void Test_S20817C4()
{
  extern Class_Descriptor cd_S20817C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20817C4, buf);
    S20817C4 *dp, &lv = *(dp=new (buf) S20817C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20817C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20817C4)");
    check_field_offset(lv, s20817c4f0, ABISELECT(8,4), "S20817C4.s20817c4f0");
    test_class_info(&lv, &cd_S20817C4);
    dp->~S20817C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20817C4(Test_S20817C4, "S20817C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20817C4C1Ev();
extern void _ZN8S20817C4D1Ev();
Name_Map name_map_S20817C4[] = {
  NSPAIR(_ZN8S20817C4C1Ev),
  NSPAIR(_ZN8S20817C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20817C4[];
extern void _ZN8S20817C42v5Ev();
extern void _ZN8S20817C42v6Ev();
extern void _ZN8S20817C42v7Ev();
extern void _ZN8S20817C42v8Ev();
extern void _ZN8S20817C42v9Ev();
extern void _ZN8S20817C43v10Ev();
static  VTBL_ENTRY vtc_S20817C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20817C4[0]),
  (VTBL_ENTRY)&_ZN8S20817C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20817C43v10Ev,
};
extern VTBL_ENTRY _ZTI8S20817C4[];
extern  VTBL_ENTRY _ZTV8S20817C4[];
Class_Descriptor cd_S20817C4 = {  "S20817C4", // class name
  0,0,//no base classes
  &(vtc_S20817C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20817C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20817C4),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  S20817C2  : virtual S20817C3 , S20817C4 {
  int s20817c2f0;
  virtual void  v11(); // _ZN8S20817C23v11Ev
  virtual void  v12(); // _ZN8S20817C23v12Ev
  virtual void  v13(); // _ZN8S20817C23v13Ev
  virtual void  v14(); // _ZN8S20817C23v14Ev
  virtual void  v15(); // _ZN8S20817C23v15Ev
  virtual void  v16(); // _ZN8S20817C23v16Ev
  ~S20817C2(); // tgen
  S20817C2(); // tgen
};
//SIG(-1 S20817C2) C1{ VBC2{ v7 v8 v9 Fi} BC3{ v10 v11 v12 v13 v14 v15 FL} v1 v2 v3 v4 v5 v6 Fi}


void  S20817C2 ::v11(){vfunc_called(this, "_ZN8S20817C23v11Ev");}
void  S20817C2 ::v12(){vfunc_called(this, "_ZN8S20817C23v12Ev");}
void  S20817C2 ::v13(){vfunc_called(this, "_ZN8S20817C23v13Ev");}
void  S20817C2 ::v14(){vfunc_called(this, "_ZN8S20817C23v14Ev");}
void  S20817C2 ::v15(){vfunc_called(this, "_ZN8S20817C23v15Ev");}
void  S20817C2 ::v16(){vfunc_called(this, "_ZN8S20817C23v16Ev");}
S20817C2 ::~S20817C2(){ note_dtor("S20817C2", this);} // tgen
S20817C2 ::S20817C2(){ note_ctor("S20817C2", this);} // tgen

static void Test_S20817C2()
{
  extern Class_Descriptor cd_S20817C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20817C2, buf);
    S20817C2 *dp, &lv = *(dp=new (buf) S20817C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20817C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20817C2)");
    check_base_class_offset(lv, (S20817C3*), ABISELECT(24,16), "S20817C2");
    check_base_class_offset(lv, (S20817C4*), 0, "S20817C2");
    check_field_offset(lv, s20817c2f0, ABISELECT(16,12), "S20817C2.s20817c2f0");
    test_class_info(&lv, &cd_S20817C2);
    dp->~S20817C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20817C2(Test_S20817C2, "S20817C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20817C2C1Ev();
extern void _ZN8S20817C2D1Ev();
Name_Map name_map_S20817C2[] = {
  NSPAIR(_ZN8S20817C2C1Ev),
  NSPAIR(_ZN8S20817C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20817C3;
extern VTBL_ENTRY _ZTI8S20817C3[];
extern  VTBL_ENTRY _ZTV8S20817C3[];
extern Class_Descriptor cd_S20817C4;
extern VTBL_ENTRY _ZTI8S20817C4[];
extern  VTBL_ENTRY _ZTV8S20817C4[];
static Base_Class bases_S20817C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20817C3,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20817C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20817C2[];
extern void _ZN8S20817C42v5Ev();
extern void _ZN8S20817C42v6Ev();
extern void _ZN8S20817C42v7Ev();
extern void _ZN8S20817C42v8Ev();
extern void _ZN8S20817C42v9Ev();
extern void _ZN8S20817C43v10Ev();
extern void _ZN8S20817C23v11Ev();
extern void _ZN8S20817C23v12Ev();
extern void _ZN8S20817C23v13Ev();
extern void _ZN8S20817C23v14Ev();
extern void _ZN8S20817C23v15Ev();
extern void _ZN8S20817C23v16Ev();
extern void _ZN8S20817C32v2Ev();
extern void _ZN8S20817C32v3Ev();
extern void _ZN8S20817C32v4Ev();
static  VTBL_ENTRY vtc_S20817C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20817C2[0]),
  (VTBL_ENTRY)&_ZN8S20817C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20817C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v16Ev,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20817C2[0]),
  (VTBL_ENTRY)&_ZN8S20817C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20817C2[];
static  VTT_ENTRY vtt_S20817C2[] = {
  {&(_ZTV8S20817C2[3]),  3,23},
  {&(_ZTV8S20817C2[20]),  20,23},
};
extern VTBL_ENTRY _ZTI8S20817C2[];
extern  VTBL_ENTRY _ZTV8S20817C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20817C2[];
Class_Descriptor cd_S20817C2 = {  "S20817C2", // class name
  bases_S20817C2, 2,
  &(vtc_S20817C2[0]), // expected_vtbl_contents
  &(vtt_S20817C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20817C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20817C2),23, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20817C2),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  S20817C5  {
  long double s20817c5f0;
  ::S20817C4 s20817c5f1;
  char s20817c5f2[3];
  virtual void  v17(); // _ZN8S20817C53v17Ev
  virtual void  v18(); // _ZN8S20817C53v18Ev
  virtual void  v19(); // _ZN8S20817C53v19Ev
  ~S20817C5(); // tgen
  S20817C5(); // tgen
};
//SIG(-1 S20817C5) C1{ v1 v2 v3 FD FC2{ v4 v5 v6 v7 v8 v9 FL} Fc[3]}


void  S20817C5 ::v17(){vfunc_called(this, "_ZN8S20817C53v17Ev");}
void  S20817C5 ::v18(){vfunc_called(this, "_ZN8S20817C53v18Ev");}
void  S20817C5 ::v19(){vfunc_called(this, "_ZN8S20817C53v19Ev");}
S20817C5 ::~S20817C5(){ note_dtor("S20817C5", this);} // tgen
S20817C5 ::S20817C5(){ note_ctor("S20817C5", this);} // tgen

static void Test_S20817C5()
{
  extern Class_Descriptor cd_S20817C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20817C5, buf);
    S20817C5 *dp, &lv = *(dp=new (buf) S20817C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20817C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20817C5)");
    check_field_offset(lv, s20817c5f0, ABISELECT(16,4), "S20817C5.s20817c5f0");
    check_field_offset(lv, s20817c5f1, ABISELECT(32,16), "S20817C5.s20817c5f1");
    check_field_offset(lv, s20817c5f2, ABISELECT(48,28), "S20817C5.s20817c5f2");
    test_class_info(&lv, &cd_S20817C5);
    dp->~S20817C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20817C5(Test_S20817C5, "S20817C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20817C5C1Ev();
extern void _ZN8S20817C5D1Ev();
Name_Map name_map_S20817C5[] = {
  NSPAIR(_ZN8S20817C5C1Ev),
  NSPAIR(_ZN8S20817C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20817C5[];
extern void _ZN8S20817C53v17Ev();
extern void _ZN8S20817C53v18Ev();
extern void _ZN8S20817C53v19Ev();
static  VTBL_ENTRY vtc_S20817C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20817C5[0]),
  (VTBL_ENTRY)&_ZN8S20817C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20817C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20817C53v19Ev,
};
extern VTBL_ENTRY _ZTI8S20817C5[];
extern  VTBL_ENTRY _ZTV8S20817C5[];
Class_Descriptor cd_S20817C5 = {  "S20817C5", // class name
  0,0,//no base classes
  &(vtc_S20817C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20817C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20817C5),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  S20817C1  : virtual S20817C2 , virtual S20817C5 {
  virtual void  v1(); // _ZN8S20817C12v1Ev
  ~S20817C1(); // tgen
  S20817C1(); // tgen
};
//SIG(1 S20817C1) C1{ VBC2{ VBC3{ v2 v3 v4 Fi} BC4{ v5 v6 v7 v8 v9 v10 FL} v11 v12 v13 v14 v15 v16 Fi} VBC5{ v17 v18 v19 FD FC4 Fc[3]} v1}


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

static void Test_S20817C1()
{
  extern Class_Descriptor cd_S20817C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S20817C1, buf);
    S20817C1 *dp, &lv = *(dp=new (buf) S20817C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S20817C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20817C1)");
    check_base_class_offset(lv, (S20817C3*)(S20817C2*), ABISELECT(32,20), "S20817C1");
    check_base_class_offset(lv, (S20817C4*)(S20817C2*), ABISELECT(8,4), "S20817C1");
    check_base_class_offset(lv, (S20817C2*), ABISELECT(8,4), "S20817C1");
    check_base_class_offset(lv, (S20817C5*), ABISELECT(48,28), "S20817C1");
    test_class_info(&lv, &cd_S20817C1);
    dp->~S20817C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20817C1(Test_S20817C1, "S20817C1", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S20817C1C1Ev();
extern void _ZN8S20817C1D1Ev();
Name_Map name_map_S20817C1[] = {
  NSPAIR(_ZN8S20817C1C1Ev),
  NSPAIR(_ZN8S20817C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20817C3;
extern VTBL_ENTRY _ZTI8S20817C3[];
extern  VTBL_ENTRY _ZTV8S20817C3[];
extern Class_Descriptor cd_S20817C4;
extern VTBL_ENTRY _ZTI8S20817C4[];
extern  VTBL_ENTRY _ZTV8S20817C4[];
extern Class_Descriptor cd_S20817C2;
extern VTBL_ENTRY _ZTI8S20817C2[];
extern  VTBL_ENTRY _ZTV8S20817C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20817C2[];
extern Class_Descriptor cd_S20817C5;
extern VTBL_ENTRY _ZTI8S20817C5[];
extern  VTBL_ENTRY _ZTV8S20817C5[];
static Base_Class bases_S20817C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20817C3,    ABISELECT(32,20), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20817C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20817C2,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20817C5,    ABISELECT(48,28), //bcp->offset
    41, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20817C1[];
extern void _ZN8S20817C12v1Ev();
extern void _ZN8S20817C42v5Ev();
extern void _ZN8S20817C42v6Ev();
extern void _ZN8S20817C42v7Ev();
extern void _ZN8S20817C42v8Ev();
extern void _ZN8S20817C42v9Ev();
extern void _ZN8S20817C43v10Ev();
extern void _ZN8S20817C23v11Ev();
extern void _ZN8S20817C23v12Ev();
extern void _ZN8S20817C23v13Ev();
extern void _ZN8S20817C23v14Ev();
extern void _ZN8S20817C23v15Ev();
extern void _ZN8S20817C23v16Ev();
extern void _ZN8S20817C32v2Ev();
extern void _ZN8S20817C32v3Ev();
extern void _ZN8S20817C32v4Ev();
extern void _ZN8S20817C53v17Ev();
extern void _ZN8S20817C53v18Ev();
extern void _ZN8S20817C53v19Ev();
static  VTBL_ENTRY vtc_S20817C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20817C1[0]),
  (VTBL_ENTRY)&_ZN8S20817C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20817C1[0]),
  (VTBL_ENTRY)&_ZN8S20817C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20817C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v16Ev,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20817C1[0]),
  (VTBL_ENTRY)&_ZN8S20817C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20817C1[0]),
  (VTBL_ENTRY)&_ZN8S20817C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20817C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20817C53v19Ev,
};
extern VTBL_ENTRY _ZTV8S20817C1[];
extern void _ZN8S20817C42v5Ev();
extern void _ZN8S20817C42v6Ev();
extern void _ZN8S20817C42v7Ev();
extern void _ZN8S20817C42v8Ev();
extern void _ZN8S20817C42v9Ev();
extern void _ZN8S20817C43v10Ev();
extern void _ZN8S20817C23v11Ev();
extern void _ZN8S20817C23v12Ev();
extern void _ZN8S20817C23v13Ev();
extern void _ZN8S20817C23v14Ev();
extern void _ZN8S20817C23v15Ev();
extern void _ZN8S20817C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20817C2__8S20817C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20817C2[0]),
  (VTBL_ENTRY)&_ZN8S20817C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20817C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20817C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20817C23v16Ev,
};
extern void _ZN8S20817C32v2Ev();
extern void _ZN8S20817C32v3Ev();
extern void _ZN8S20817C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20817C3__8S20817C2__8S20817C1[] = {
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20817C2[0]),
  (VTBL_ENTRY)&_ZN8S20817C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20817C32v4Ev,
};
static  VTT_ENTRY vtt_S20817C1[] = {
  {&(_ZTV8S20817C1[5]),  5,49},
  {&(_ZTV8S20817C1[21]),  21,49},
  {&(_ZTV8S20817C1[38]),  38,49},
  {&(_ZTV8S20817C1[46]),  46,49},
  {&(_tg__ZTV8S20817C2__8S20817C1[3]),  3,15},
  {&(_tg__ZTV8S20817C3__8S20817C2__8S20817C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20817C1[];
extern  VTBL_ENTRY _ZTV8S20817C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20817C1[];
Class_Descriptor cd_S20817C1 = {  "S20817C1", // class name
  bases_S20817C1, 4,
  &(vtc_S20817C1[0]), // expected_vtbl_contents
  &(vtt_S20817C1[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S20817C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20817C1),49, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20817C1),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4494C3  {
  char s4494c3f0;
  int s4494c3f1;
  virtual  ~S4494C3(); // _ZN7S4494C3D1Ev
  virtual void  v2(); // _ZN7S4494C32v2Ev
  virtual void  v3(); // _ZN7S4494C32v3Ev
  virtual void  v4(); // _ZN7S4494C32v4Ev
  virtual void  v5(); // _ZN7S4494C32v5Ev
  S4494C3(); // tgen
};
//SIG(-1 S4494C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4494C3 ::~S4494C3(){ note_dtor("S4494C3", this);}
void  S4494C3 ::v2(){vfunc_called(this, "_ZN7S4494C32v2Ev");}
void  S4494C3 ::v3(){vfunc_called(this, "_ZN7S4494C32v3Ev");}
void  S4494C3 ::v4(){vfunc_called(this, "_ZN7S4494C32v4Ev");}
void  S4494C3 ::v5(){vfunc_called(this, "_ZN7S4494C32v5Ev");}
S4494C3 ::S4494C3(){ note_ctor("S4494C3", this);} // tgen

static void Test_S4494C3()
{
  extern Class_Descriptor cd_S4494C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4494C3, buf);
    S4494C3 *dp, &lv = *(dp=new (buf) S4494C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4494C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4494C3)");
    check_field_offset(lv, s4494c3f0, ABISELECT(8,4), "S4494C3.s4494c3f0");
    check_field_offset(lv, s4494c3f1, ABISELECT(12,8), "S4494C3.s4494c3f1");
    test_class_info(&lv, &cd_S4494C3);
    dp->~S4494C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4494C3(Test_S4494C3, "S4494C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4494C3C1Ev();
extern void _ZN7S4494C3D1Ev();
Name_Map name_map_S4494C3[] = {
  NSPAIR(_ZN7S4494C3C1Ev),
  NSPAIR(_ZN7S4494C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4494C3[];
extern void _ZN7S4494C3D1Ev();
extern void _ZN7S4494C3D0Ev();
extern void _ZN7S4494C32v2Ev();
extern void _ZN7S4494C32v3Ev();
extern void _ZN7S4494C32v4Ev();
extern void _ZN7S4494C32v5Ev();
static  VTBL_ENTRY vtc_S4494C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4494C3[0]),
  (VTBL_ENTRY)&_ZN7S4494C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4494C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4494C3[];
extern  VTBL_ENTRY _ZTV7S4494C3[];
Class_Descriptor cd_S4494C3 = {  "S4494C3", // class name
  0,0,//no base classes
  &(vtc_S4494C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4494C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4494C3),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  S4494C2  : S4494C3 {
  ::S4224C24 s4494c2f0[8];
  ::S5309C14_nt s4494c2f1[8];
  int s4494c2f2;
  virtual  ~S4494C2(); // _ZN7S4494C2D1Ev
  virtual void  v6(); // _ZN7S4494C22v6Ev
  virtual void  v7(); // _ZN7S4494C22v7Ev
  virtual void  v8(); // _ZN7S4494C22v8Ev
  S4494C2(); // tgen
};
//SIG(-1 S4494C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4494C2 ::~S4494C2(){ note_dtor("S4494C2", this);}
void  S4494C2 ::v6(){vfunc_called(this, "_ZN7S4494C22v6Ev");}
void  S4494C2 ::v7(){vfunc_called(this, "_ZN7S4494C22v7Ev");}
void  S4494C2 ::v8(){vfunc_called(this, "_ZN7S4494C22v8Ev");}
S4494C2 ::S4494C2(){ note_ctor("S4494C2", this);} // tgen

static void Test_S4494C2()
{
  extern Class_Descriptor cd_S4494C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4494C2, buf);
    S4494C2 *dp, &lv = *(dp=new (buf) S4494C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4494C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4494C2)");
    check_base_class_offset(lv, (S4494C3*), 0, "S4494C2");
    check_field_offset(lv, s4494c2f0, ABISELECT(16,12), "S4494C2.s4494c2f0");
    check_field_offset(lv, s4494c2f1, ABISELECT(144,108), "S4494C2.s4494c2f1");
    check_field_offset(lv, s4494c2f2, ABISELECT(272,172), "S4494C2.s4494c2f2");
    test_class_info(&lv, &cd_S4494C2);
    dp->~S4494C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4494C2(Test_S4494C2, "S4494C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4494C2C1Ev();
extern void _ZN7S4494C2D1Ev();
Name_Map name_map_S4494C2[] = {
  NSPAIR(_ZN7S4494C2C1Ev),
  NSPAIR(_ZN7S4494C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4494C3;
extern VTBL_ENTRY _ZTI7S4494C3[];
extern  VTBL_ENTRY _ZTV7S4494C3[];
static Base_Class bases_S4494C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4494C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4494C2[];
extern void _ZN7S4494C2D1Ev();
extern void _ZN7S4494C2D0Ev();
extern void _ZN7S4494C32v2Ev();
extern void _ZN7S4494C32v3Ev();
extern void _ZN7S4494C32v4Ev();
extern void _ZN7S4494C32v5Ev();
extern void _ZN7S4494C22v6Ev();
extern void _ZN7S4494C22v7Ev();
extern void _ZN7S4494C22v8Ev();
static  VTBL_ENTRY vtc_S4494C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4494C2[0]),
  (VTBL_ENTRY)&_ZN7S4494C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4494C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4494C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4494C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4494C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4494C2[];
extern  VTBL_ENTRY _ZTV7S4494C2[];
Class_Descriptor cd_S4494C2 = {  "S4494C2", // class name
  bases_S4494C2, 1,
  &(vtc_S4494C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4494C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4494C2),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  S4494C1  : S4494C2 {
  int s4494c1f0;
  __tsi64 s4494c1f1;
  virtual  ~S4494C1(); // _ZN7S4494C1D1Ev
  virtual void  v1(); // _ZN7S4494C12v1Ev
  S4494C1(); // tgen
};
//SIG(1 S4494C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fi FL}


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

static void Test_S4494C1()
{
  extern Class_Descriptor cd_S4494C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,48)];
    init_test(&cd_S4494C1, buf);
    S4494C1 *dp, &lv = *(dp=new (buf) S4494C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,188), "sizeof(S4494C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4494C1)");
    check_base_class_offset(lv, (S4494C3*)(S4494C2*), 0, "S4494C1");
    check_base_class_offset(lv, (S4494C2*), 0, "S4494C1");
    check_field_offset(lv, s4494c1f0, ABISELECT(276,176), "S4494C1.s4494c1f0");
    check_field_offset(lv, s4494c1f1, ABISELECT(280,180), "S4494C1.s4494c1f1");
    test_class_info(&lv, &cd_S4494C1);
    dp->~S4494C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4494C1(Test_S4494C1, "S4494C1", ABISELECT(288,188));

#else // __cplusplus

extern void _ZN7S4494C1C1Ev();
extern void _ZN7S4494C1D1Ev();
Name_Map name_map_S4494C1[] = {
  NSPAIR(_ZN7S4494C1C1Ev),
  NSPAIR(_ZN7S4494C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4494C3;
extern VTBL_ENTRY _ZTI7S4494C3[];
extern  VTBL_ENTRY _ZTV7S4494C3[];
extern Class_Descriptor cd_S4494C2;
extern VTBL_ENTRY _ZTI7S4494C2[];
extern  VTBL_ENTRY _ZTV7S4494C2[];
static Base_Class bases_S4494C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4494C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4494C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4494C1[];
extern void _ZN7S4494C1D1Ev();
extern void _ZN7S4494C1D0Ev();
extern void _ZN7S4494C32v2Ev();
extern void _ZN7S4494C32v3Ev();
extern void _ZN7S4494C32v4Ev();
extern void _ZN7S4494C32v5Ev();
extern void _ZN7S4494C22v6Ev();
extern void _ZN7S4494C22v7Ev();
extern void _ZN7S4494C22v8Ev();
extern void _ZN7S4494C12v1Ev();
static  VTBL_ENTRY vtc_S4494C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4494C1[0]),
  (VTBL_ENTRY)&_ZN7S4494C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4494C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4494C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4494C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4494C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4494C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4494C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4494C1[];
extern  VTBL_ENTRY _ZTV7S4494C1[];
Class_Descriptor cd_S4494C1 = {  "S4494C1", // class name
  bases_S4494C1, 2,
  &(vtc_S4494C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,188), // object size
  NSPAIRA(_ZTI7S4494C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4494C1),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  S4486C3  {
  char s4486c3f0;
  int s4486c3f1;
  virtual  ~S4486C3(); // _ZN7S4486C3D1Ev
  virtual void  v2(); // _ZN7S4486C32v2Ev
  virtual void  v3(); // _ZN7S4486C32v3Ev
  virtual void  v4(); // _ZN7S4486C32v4Ev
  virtual void  v5(); // _ZN7S4486C32v5Ev
  S4486C3(); // tgen
};
//SIG(-1 S4486C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4486C3 ::~S4486C3(){ note_dtor("S4486C3", this);}
void  S4486C3 ::v2(){vfunc_called(this, "_ZN7S4486C32v2Ev");}
void  S4486C3 ::v3(){vfunc_called(this, "_ZN7S4486C32v3Ev");}
void  S4486C3 ::v4(){vfunc_called(this, "_ZN7S4486C32v4Ev");}
void  S4486C3 ::v5(){vfunc_called(this, "_ZN7S4486C32v5Ev");}
S4486C3 ::S4486C3(){ note_ctor("S4486C3", this);} // tgen

static void Test_S4486C3()
{
  extern Class_Descriptor cd_S4486C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4486C3, buf);
    S4486C3 *dp, &lv = *(dp=new (buf) S4486C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4486C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4486C3)");
    check_field_offset(lv, s4486c3f0, ABISELECT(8,4), "S4486C3.s4486c3f0");
    check_field_offset(lv, s4486c3f1, ABISELECT(12,8), "S4486C3.s4486c3f1");
    test_class_info(&lv, &cd_S4486C3);
    dp->~S4486C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4486C3(Test_S4486C3, "S4486C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4486C3C1Ev();
extern void _ZN7S4486C3D1Ev();
Name_Map name_map_S4486C3[] = {
  NSPAIR(_ZN7S4486C3C1Ev),
  NSPAIR(_ZN7S4486C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4486C3[];
extern void _ZN7S4486C3D1Ev();
extern void _ZN7S4486C3D0Ev();
extern void _ZN7S4486C32v2Ev();
extern void _ZN7S4486C32v3Ev();
extern void _ZN7S4486C32v4Ev();
extern void _ZN7S4486C32v5Ev();
static  VTBL_ENTRY vtc_S4486C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4486C3[0]),
  (VTBL_ENTRY)&_ZN7S4486C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4486C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4486C3[];
extern  VTBL_ENTRY _ZTV7S4486C3[];
Class_Descriptor cd_S4486C3 = {  "S4486C3", // class name
  0,0,//no base classes
  &(vtc_S4486C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4486C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4486C3),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  S4486C2  : S4486C3 {
  ::S4224C24 s4486c2f0[8];
  ::S5309C14_nt s4486c2f1[8];
  int s4486c2f2;
  virtual  ~S4486C2(); // _ZN7S4486C2D1Ev
  virtual void  v6(); // _ZN7S4486C22v6Ev
  virtual void  v7(); // _ZN7S4486C22v7Ev
  virtual void  v8(); // _ZN7S4486C22v8Ev
  S4486C2(); // tgen
};
//SIG(-1 S4486C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4486C2 ::~S4486C2(){ note_dtor("S4486C2", this);}
void  S4486C2 ::v6(){vfunc_called(this, "_ZN7S4486C22v6Ev");}
void  S4486C2 ::v7(){vfunc_called(this, "_ZN7S4486C22v7Ev");}
void  S4486C2 ::v8(){vfunc_called(this, "_ZN7S4486C22v8Ev");}
S4486C2 ::S4486C2(){ note_ctor("S4486C2", this);} // tgen

static void Test_S4486C2()
{
  extern Class_Descriptor cd_S4486C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4486C2, buf);
    S4486C2 *dp, &lv = *(dp=new (buf) S4486C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4486C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4486C2)");
    check_base_class_offset(lv, (S4486C3*), 0, "S4486C2");
    check_field_offset(lv, s4486c2f0, ABISELECT(16,12), "S4486C2.s4486c2f0");
    check_field_offset(lv, s4486c2f1, ABISELECT(144,108), "S4486C2.s4486c2f1");
    check_field_offset(lv, s4486c2f2, ABISELECT(272,172), "S4486C2.s4486c2f2");
    test_class_info(&lv, &cd_S4486C2);
    dp->~S4486C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4486C2(Test_S4486C2, "S4486C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4486C2C1Ev();
extern void _ZN7S4486C2D1Ev();
Name_Map name_map_S4486C2[] = {
  NSPAIR(_ZN7S4486C2C1Ev),
  NSPAIR(_ZN7S4486C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4486C3;
extern VTBL_ENTRY _ZTI7S4486C3[];
extern  VTBL_ENTRY _ZTV7S4486C3[];
static Base_Class bases_S4486C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4486C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4486C2[];
extern void _ZN7S4486C2D1Ev();
extern void _ZN7S4486C2D0Ev();
extern void _ZN7S4486C32v2Ev();
extern void _ZN7S4486C32v3Ev();
extern void _ZN7S4486C32v4Ev();
extern void _ZN7S4486C32v5Ev();
extern void _ZN7S4486C22v6Ev();
extern void _ZN7S4486C22v7Ev();
extern void _ZN7S4486C22v8Ev();
static  VTBL_ENTRY vtc_S4486C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4486C2[0]),
  (VTBL_ENTRY)&_ZN7S4486C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4486C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4486C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4486C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4486C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4486C2[];
extern  VTBL_ENTRY _ZTV7S4486C2[];
Class_Descriptor cd_S4486C2 = {  "S4486C2", // class name
  bases_S4486C2, 1,
  &(vtc_S4486C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4486C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4486C2),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  S4486C1  : S4486C2 {
  int s4486c1f0[2];
  virtual void  v1(); // _ZN7S4486C12v1Ev
  ~S4486C1(); // tgen
  S4486C1(); // tgen
};
//SIG(1 S4486C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} v1 Fi[2]}


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

static void Test_S4486C1()
{
  extern Class_Descriptor cd_S4486C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,47)];
    init_test(&cd_S4486C1, buf);
    S4486C1 *dp, &lv = *(dp=new (buf) S4486C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,184), "sizeof(S4486C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4486C1)");
    check_base_class_offset(lv, (S4486C3*)(S4486C2*), 0, "S4486C1");
    check_base_class_offset(lv, (S4486C2*), 0, "S4486C1");
    check_field_offset(lv, s4486c1f0, ABISELECT(276,176), "S4486C1.s4486c1f0");
    test_class_info(&lv, &cd_S4486C1);
    dp->~S4486C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4486C1(Test_S4486C1, "S4486C1", ABISELECT(288,184));

#else // __cplusplus

extern void _ZN7S4486C1C1Ev();
extern void _ZN7S4486C1D1Ev();
Name_Map name_map_S4486C1[] = {
  NSPAIR(_ZN7S4486C1C1Ev),
  NSPAIR(_ZN7S4486C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4486C3;
extern VTBL_ENTRY _ZTI7S4486C3[];
extern  VTBL_ENTRY _ZTV7S4486C3[];
extern Class_Descriptor cd_S4486C2;
extern VTBL_ENTRY _ZTI7S4486C2[];
extern  VTBL_ENTRY _ZTV7S4486C2[];
static Base_Class bases_S4486C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4486C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4486C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4486C1[];
extern void _ZN7S4486C1D1Ev();
extern void _ZN7S4486C1D0Ev();
extern void _ZN7S4486C32v2Ev();
extern void _ZN7S4486C32v3Ev();
extern void _ZN7S4486C32v4Ev();
extern void _ZN7S4486C32v5Ev();
extern void _ZN7S4486C22v6Ev();
extern void _ZN7S4486C22v7Ev();
extern void _ZN7S4486C22v8Ev();
extern void _ZN7S4486C12v1Ev();
static  VTBL_ENTRY vtc_S4486C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4486C1[0]),
  (VTBL_ENTRY)&_ZN7S4486C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4486C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4486C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4486C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4486C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4486C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4486C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4486C1[];
extern  VTBL_ENTRY _ZTV7S4486C1[];
Class_Descriptor cd_S4486C1 = {  "S4486C1", // class name
  bases_S4486C1, 2,
  &(vtc_S4486C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,184), // object size
  NSPAIRA(_ZTI7S4486C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4486C1),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  S4498C3  {
  char s4498c3f0;
  int s4498c3f1;
  virtual  ~S4498C3(); // _ZN7S4498C3D1Ev
  virtual void  v2(); // _ZN7S4498C32v2Ev
  virtual void  v3(); // _ZN7S4498C32v3Ev
  virtual void  v4(); // _ZN7S4498C32v4Ev
  virtual void  v5(); // _ZN7S4498C32v5Ev
  S4498C3(); // tgen
};
//SIG(-1 S4498C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4498C3 ::~S4498C3(){ note_dtor("S4498C3", this);}
void  S4498C3 ::v2(){vfunc_called(this, "_ZN7S4498C32v2Ev");}
void  S4498C3 ::v3(){vfunc_called(this, "_ZN7S4498C32v3Ev");}
void  S4498C3 ::v4(){vfunc_called(this, "_ZN7S4498C32v4Ev");}
void  S4498C3 ::v5(){vfunc_called(this, "_ZN7S4498C32v5Ev");}
S4498C3 ::S4498C3(){ note_ctor("S4498C3", this);} // tgen

static void Test_S4498C3()
{
  extern Class_Descriptor cd_S4498C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4498C3, buf);
    S4498C3 *dp, &lv = *(dp=new (buf) S4498C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4498C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4498C3)");
    check_field_offset(lv, s4498c3f0, ABISELECT(8,4), "S4498C3.s4498c3f0");
    check_field_offset(lv, s4498c3f1, ABISELECT(12,8), "S4498C3.s4498c3f1");
    test_class_info(&lv, &cd_S4498C3);
    dp->~S4498C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4498C3(Test_S4498C3, "S4498C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4498C3C1Ev();
extern void _ZN7S4498C3D1Ev();
Name_Map name_map_S4498C3[] = {
  NSPAIR(_ZN7S4498C3C1Ev),
  NSPAIR(_ZN7S4498C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4498C3[];
extern void _ZN7S4498C3D1Ev();
extern void _ZN7S4498C3D0Ev();
extern void _ZN7S4498C32v2Ev();
extern void _ZN7S4498C32v3Ev();
extern void _ZN7S4498C32v4Ev();
extern void _ZN7S4498C32v5Ev();
static  VTBL_ENTRY vtc_S4498C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4498C3[0]),
  (VTBL_ENTRY)&_ZN7S4498C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4498C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4498C3[];
extern  VTBL_ENTRY _ZTV7S4498C3[];
Class_Descriptor cd_S4498C3 = {  "S4498C3", // class name
  0,0,//no base classes
  &(vtc_S4498C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4498C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4498C3),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  S4498C2  : S4498C3 {
  ::S4224C24 s4498c2f0[8];
  ::S5309C14_nt s4498c2f1[8];
  int s4498c2f2;
  virtual  ~S4498C2(); // _ZN7S4498C2D1Ev
  virtual void  v6(); // _ZN7S4498C22v6Ev
  virtual void  v7(); // _ZN7S4498C22v7Ev
  virtual void  v8(); // _ZN7S4498C22v8Ev
  S4498C2(); // tgen
};
//SIG(-1 S4498C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4498C2 ::~S4498C2(){ note_dtor("S4498C2", this);}
void  S4498C2 ::v6(){vfunc_called(this, "_ZN7S4498C22v6Ev");}
void  S4498C2 ::v7(){vfunc_called(this, "_ZN7S4498C22v7Ev");}
void  S4498C2 ::v8(){vfunc_called(this, "_ZN7S4498C22v8Ev");}
S4498C2 ::S4498C2(){ note_ctor("S4498C2", this);} // tgen

static void Test_S4498C2()
{
  extern Class_Descriptor cd_S4498C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4498C2, buf);
    S4498C2 *dp, &lv = *(dp=new (buf) S4498C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4498C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4498C2)");
    check_base_class_offset(lv, (S4498C3*), 0, "S4498C2");
    check_field_offset(lv, s4498c2f0, ABISELECT(16,12), "S4498C2.s4498c2f0");
    check_field_offset(lv, s4498c2f1, ABISELECT(144,108), "S4498C2.s4498c2f1");
    check_field_offset(lv, s4498c2f2, ABISELECT(272,172), "S4498C2.s4498c2f2");
    test_class_info(&lv, &cd_S4498C2);
    dp->~S4498C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4498C2(Test_S4498C2, "S4498C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4498C2C1Ev();
extern void _ZN7S4498C2D1Ev();
Name_Map name_map_S4498C2[] = {
  NSPAIR(_ZN7S4498C2C1Ev),
  NSPAIR(_ZN7S4498C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4498C3;
extern VTBL_ENTRY _ZTI7S4498C3[];
extern  VTBL_ENTRY _ZTV7S4498C3[];
static Base_Class bases_S4498C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4498C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4498C2[];
extern void _ZN7S4498C2D1Ev();
extern void _ZN7S4498C2D0Ev();
extern void _ZN7S4498C32v2Ev();
extern void _ZN7S4498C32v3Ev();
extern void _ZN7S4498C32v4Ev();
extern void _ZN7S4498C32v5Ev();
extern void _ZN7S4498C22v6Ev();
extern void _ZN7S4498C22v7Ev();
extern void _ZN7S4498C22v8Ev();
static  VTBL_ENTRY vtc_S4498C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4498C2[0]),
  (VTBL_ENTRY)&_ZN7S4498C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4498C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4498C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4498C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4498C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4498C2[];
extern  VTBL_ENTRY _ZTV7S4498C2[];
Class_Descriptor cd_S4498C2 = {  "S4498C2", // class name
  bases_S4498C2, 1,
  &(vtc_S4498C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4498C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4498C2),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  S4498C1  : S4498C2 {
  void *s4498c1f0;
  virtual  ~S4498C1(); // _ZN7S4498C1D1Ev
  virtual void  v1(); // _ZN7S4498C12v1Ev
  S4498C1(); // tgen
};
//SIG(1 S4498C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fp}


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

static void Test_S4498C1()
{
  extern Class_Descriptor cd_S4498C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,46)];
    init_test(&cd_S4498C1, buf);
    S4498C1 *dp, &lv = *(dp=new (buf) S4498C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,180), "sizeof(S4498C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4498C1)");
    check_base_class_offset(lv, (S4498C3*)(S4498C2*), 0, "S4498C1");
    check_base_class_offset(lv, (S4498C2*), 0, "S4498C1");
    check_field_offset(lv, s4498c1f0, ABISELECT(280,176), "S4498C1.s4498c1f0");
    test_class_info(&lv, &cd_S4498C1);
    dp->~S4498C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4498C1(Test_S4498C1, "S4498C1", ABISELECT(288,180));

#else // __cplusplus

extern void _ZN7S4498C1C1Ev();
extern void _ZN7S4498C1D1Ev();
Name_Map name_map_S4498C1[] = {
  NSPAIR(_ZN7S4498C1C1Ev),
  NSPAIR(_ZN7S4498C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4498C3;
extern VTBL_ENTRY _ZTI7S4498C3[];
extern  VTBL_ENTRY _ZTV7S4498C3[];
extern Class_Descriptor cd_S4498C2;
extern VTBL_ENTRY _ZTI7S4498C2[];
extern  VTBL_ENTRY _ZTV7S4498C2[];
static Base_Class bases_S4498C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4498C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4498C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4498C1[];
extern void _ZN7S4498C1D1Ev();
extern void _ZN7S4498C1D0Ev();
extern void _ZN7S4498C32v2Ev();
extern void _ZN7S4498C32v3Ev();
extern void _ZN7S4498C32v4Ev();
extern void _ZN7S4498C32v5Ev();
extern void _ZN7S4498C22v6Ev();
extern void _ZN7S4498C22v7Ev();
extern void _ZN7S4498C22v8Ev();
extern void _ZN7S4498C12v1Ev();
static  VTBL_ENTRY vtc_S4498C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4498C1[0]),
  (VTBL_ENTRY)&_ZN7S4498C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4498C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4498C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4498C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4498C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4498C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4498C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4498C1[];
extern  VTBL_ENTRY _ZTV7S4498C1[];
Class_Descriptor cd_S4498C1 = {  "S4498C1", // class name
  bases_S4498C1, 2,
  &(vtc_S4498C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,180), // object size
  NSPAIRA(_ZTI7S4498C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4498C1),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  S4490C3  {
  char s4490c3f0;
  int s4490c3f1;
  virtual  ~S4490C3(); // _ZN7S4490C3D1Ev
  virtual void  v2(); // _ZN7S4490C32v2Ev
  virtual void  v3(); // _ZN7S4490C32v3Ev
  virtual void  v4(); // _ZN7S4490C32v4Ev
  virtual void  v5(); // _ZN7S4490C32v5Ev
  S4490C3(); // tgen
};
//SIG(-1 S4490C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4490C3 ::~S4490C3(){ note_dtor("S4490C3", this);}
void  S4490C3 ::v2(){vfunc_called(this, "_ZN7S4490C32v2Ev");}
void  S4490C3 ::v3(){vfunc_called(this, "_ZN7S4490C32v3Ev");}
void  S4490C3 ::v4(){vfunc_called(this, "_ZN7S4490C32v4Ev");}
void  S4490C3 ::v5(){vfunc_called(this, "_ZN7S4490C32v5Ev");}
S4490C3 ::S4490C3(){ note_ctor("S4490C3", this);} // tgen

static void Test_S4490C3()
{
  extern Class_Descriptor cd_S4490C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4490C3, buf);
    S4490C3 *dp, &lv = *(dp=new (buf) S4490C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4490C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4490C3)");
    check_field_offset(lv, s4490c3f0, ABISELECT(8,4), "S4490C3.s4490c3f0");
    check_field_offset(lv, s4490c3f1, ABISELECT(12,8), "S4490C3.s4490c3f1");
    test_class_info(&lv, &cd_S4490C3);
    dp->~S4490C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4490C3(Test_S4490C3, "S4490C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4490C3C1Ev();
extern void _ZN7S4490C3D1Ev();
Name_Map name_map_S4490C3[] = {
  NSPAIR(_ZN7S4490C3C1Ev),
  NSPAIR(_ZN7S4490C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4490C3[];
extern void _ZN7S4490C3D1Ev();
extern void _ZN7S4490C3D0Ev();
extern void _ZN7S4490C32v2Ev();
extern void _ZN7S4490C32v3Ev();
extern void _ZN7S4490C32v4Ev();
extern void _ZN7S4490C32v5Ev();
static  VTBL_ENTRY vtc_S4490C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4490C3[0]),
  (VTBL_ENTRY)&_ZN7S4490C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4490C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4490C3[];
extern  VTBL_ENTRY _ZTV7S4490C3[];
Class_Descriptor cd_S4490C3 = {  "S4490C3", // class name
  0,0,//no base classes
  &(vtc_S4490C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4490C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4490C3),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  S4490C2  : S4490C3 {
  ::S4224C24 s4490c2f0[8];
  ::S5309C14_nt s4490c2f1[8];
  int s4490c2f2;
  virtual  ~S4490C2(); // _ZN7S4490C2D1Ev
  virtual void  v6(); // _ZN7S4490C22v6Ev
  virtual void  v7(); // _ZN7S4490C22v7Ev
  virtual void  v8(); // _ZN7S4490C22v8Ev
  S4490C2(); // tgen
};
//SIG(-1 S4490C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4490C2 ::~S4490C2(){ note_dtor("S4490C2", this);}
void  S4490C2 ::v6(){vfunc_called(this, "_ZN7S4490C22v6Ev");}
void  S4490C2 ::v7(){vfunc_called(this, "_ZN7S4490C22v7Ev");}
void  S4490C2 ::v8(){vfunc_called(this, "_ZN7S4490C22v8Ev");}
S4490C2 ::S4490C2(){ note_ctor("S4490C2", this);} // tgen

static void Test_S4490C2()
{
  extern Class_Descriptor cd_S4490C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4490C2, buf);
    S4490C2 *dp, &lv = *(dp=new (buf) S4490C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4490C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4490C2)");
    check_base_class_offset(lv, (S4490C3*), 0, "S4490C2");
    check_field_offset(lv, s4490c2f0, ABISELECT(16,12), "S4490C2.s4490c2f0");
    check_field_offset(lv, s4490c2f1, ABISELECT(144,108), "S4490C2.s4490c2f1");
    check_field_offset(lv, s4490c2f2, ABISELECT(272,172), "S4490C2.s4490c2f2");
    test_class_info(&lv, &cd_S4490C2);
    dp->~S4490C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4490C2(Test_S4490C2, "S4490C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4490C2C1Ev();
extern void _ZN7S4490C2D1Ev();
Name_Map name_map_S4490C2[] = {
  NSPAIR(_ZN7S4490C2C1Ev),
  NSPAIR(_ZN7S4490C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4490C3;
extern VTBL_ENTRY _ZTI7S4490C3[];
extern  VTBL_ENTRY _ZTV7S4490C3[];
static Base_Class bases_S4490C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4490C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4490C2[];
extern void _ZN7S4490C2D1Ev();
extern void _ZN7S4490C2D0Ev();
extern void _ZN7S4490C32v2Ev();
extern void _ZN7S4490C32v3Ev();
extern void _ZN7S4490C32v4Ev();
extern void _ZN7S4490C32v5Ev();
extern void _ZN7S4490C22v6Ev();
extern void _ZN7S4490C22v7Ev();
extern void _ZN7S4490C22v8Ev();
static  VTBL_ENTRY vtc_S4490C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4490C2[0]),
  (VTBL_ENTRY)&_ZN7S4490C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4490C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4490C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4490C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4490C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4490C2[];
extern  VTBL_ENTRY _ZTV7S4490C2[];
Class_Descriptor cd_S4490C2 = {  "S4490C2", // class name
  bases_S4490C2, 1,
  &(vtc_S4490C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4490C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4490C2),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  S4490C1  : S4490C2 {
  char s4490c1f0;
  virtual  ~S4490C1(); // _ZN7S4490C1D1Ev
  virtual void  v1(); // _ZN7S4490C12v1Ev
  S4490C1(); // tgen
};
//SIG(1 S4490C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1 Fc}


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

static void Test_S4490C1()
{
  extern Class_Descriptor cd_S4490C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,46)];
    init_test(&cd_S4490C1, buf);
    S4490C1 *dp, &lv = *(dp=new (buf) S4490C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,180), "sizeof(S4490C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4490C1)");
    check_base_class_offset(lv, (S4490C3*)(S4490C2*), 0, "S4490C1");
    check_base_class_offset(lv, (S4490C2*), 0, "S4490C1");
    check_field_offset(lv, s4490c1f0, ABISELECT(276,176), "S4490C1.s4490c1f0");
    test_class_info(&lv, &cd_S4490C1);
    dp->~S4490C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4490C1(Test_S4490C1, "S4490C1", ABISELECT(280,180));

#else // __cplusplus

extern void _ZN7S4490C1C1Ev();
extern void _ZN7S4490C1D1Ev();
Name_Map name_map_S4490C1[] = {
  NSPAIR(_ZN7S4490C1C1Ev),
  NSPAIR(_ZN7S4490C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4490C3;
extern VTBL_ENTRY _ZTI7S4490C3[];
extern  VTBL_ENTRY _ZTV7S4490C3[];
extern Class_Descriptor cd_S4490C2;
extern VTBL_ENTRY _ZTI7S4490C2[];
extern  VTBL_ENTRY _ZTV7S4490C2[];
static Base_Class bases_S4490C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4490C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4490C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4490C1[];
extern void _ZN7S4490C1D1Ev();
extern void _ZN7S4490C1D0Ev();
extern void _ZN7S4490C32v2Ev();
extern void _ZN7S4490C32v3Ev();
extern void _ZN7S4490C32v4Ev();
extern void _ZN7S4490C32v5Ev();
extern void _ZN7S4490C22v6Ev();
extern void _ZN7S4490C22v7Ev();
extern void _ZN7S4490C22v8Ev();
extern void _ZN7S4490C12v1Ev();
static  VTBL_ENTRY vtc_S4490C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4490C1[0]),
  (VTBL_ENTRY)&_ZN7S4490C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4490C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4490C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4490C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4490C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4490C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4490C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4490C1[];
extern  VTBL_ENTRY _ZTV7S4490C1[];
Class_Descriptor cd_S4490C1 = {  "S4490C1", // class name
  bases_S4490C1, 2,
  &(vtc_S4490C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,180), // object size
  NSPAIRA(_ZTI7S4490C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4490C1),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  S4499C3  {
  char s4499c3f0;
  int s4499c3f1;
  virtual  ~S4499C3(); // _ZN7S4499C3D1Ev
  virtual void  v2(); // _ZN7S4499C32v2Ev
  virtual void  v3(); // _ZN7S4499C32v3Ev
  virtual void  v4(); // _ZN7S4499C32v4Ev
  virtual void  v5(); // _ZN7S4499C32v5Ev
  S4499C3(); // tgen
};
//SIG(-1 S4499C3) C1{ vd v1 v2 v3 v4 Fc Fi}


 S4499C3 ::~S4499C3(){ note_dtor("S4499C3", this);}
void  S4499C3 ::v2(){vfunc_called(this, "_ZN7S4499C32v2Ev");}
void  S4499C3 ::v3(){vfunc_called(this, "_ZN7S4499C32v3Ev");}
void  S4499C3 ::v4(){vfunc_called(this, "_ZN7S4499C32v4Ev");}
void  S4499C3 ::v5(){vfunc_called(this, "_ZN7S4499C32v5Ev");}
S4499C3 ::S4499C3(){ note_ctor("S4499C3", this);} // tgen

static void Test_S4499C3()
{
  extern Class_Descriptor cd_S4499C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4499C3, buf);
    S4499C3 *dp, &lv = *(dp=new (buf) S4499C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4499C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4499C3)");
    check_field_offset(lv, s4499c3f0, ABISELECT(8,4), "S4499C3.s4499c3f0");
    check_field_offset(lv, s4499c3f1, ABISELECT(12,8), "S4499C3.s4499c3f1");
    test_class_info(&lv, &cd_S4499C3);
    dp->~S4499C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4499C3(Test_S4499C3, "S4499C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4499C3C1Ev();
extern void _ZN7S4499C3D1Ev();
Name_Map name_map_S4499C3[] = {
  NSPAIR(_ZN7S4499C3C1Ev),
  NSPAIR(_ZN7S4499C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4499C3[];
extern void _ZN7S4499C3D1Ev();
extern void _ZN7S4499C3D0Ev();
extern void _ZN7S4499C32v2Ev();
extern void _ZN7S4499C32v3Ev();
extern void _ZN7S4499C32v4Ev();
extern void _ZN7S4499C32v5Ev();
static  VTBL_ENTRY vtc_S4499C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4499C3[0]),
  (VTBL_ENTRY)&_ZN7S4499C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4499C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4499C3[];
extern  VTBL_ENTRY _ZTV7S4499C3[];
Class_Descriptor cd_S4499C3 = {  "S4499C3", // class name
  0,0,//no base classes
  &(vtc_S4499C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4499C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4499C3),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  S4499C2  : S4499C3 {
  ::S4224C24 s4499c2f0[8];
  ::S5309C14_nt s4499c2f1[8];
  int s4499c2f2;
  virtual  ~S4499C2(); // _ZN7S4499C2D1Ev
  virtual void  v6(); // _ZN7S4499C22v6Ev
  virtual void  v7(); // _ZN7S4499C22v7Ev
  virtual void  v8(); // _ZN7S4499C22v8Ev
  S4499C2(); // tgen
};
//SIG(-1 S4499C2) C1{ BC2{ vd v4 v5 v6 v7 Fc Fi} vd v1 v2 v3 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}[8] FC7{ m Fp[2]}[8] Fi}


 S4499C2 ::~S4499C2(){ note_dtor("S4499C2", this);}
void  S4499C2 ::v6(){vfunc_called(this, "_ZN7S4499C22v6Ev");}
void  S4499C2 ::v7(){vfunc_called(this, "_ZN7S4499C22v7Ev");}
void  S4499C2 ::v8(){vfunc_called(this, "_ZN7S4499C22v8Ev");}
S4499C2 ::S4499C2(){ note_ctor("S4499C2", this);} // tgen

static void Test_S4499C2()
{
  extern Class_Descriptor cd_S4499C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4499C2, buf);
    S4499C2 *dp, &lv = *(dp=new (buf) S4499C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4499C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4499C2)");
    check_base_class_offset(lv, (S4499C3*), 0, "S4499C2");
    check_field_offset(lv, s4499c2f0, ABISELECT(16,12), "S4499C2.s4499c2f0");
    check_field_offset(lv, s4499c2f1, ABISELECT(144,108), "S4499C2.s4499c2f1");
    check_field_offset(lv, s4499c2f2, ABISELECT(272,172), "S4499C2.s4499c2f2");
    test_class_info(&lv, &cd_S4499C2);
    dp->~S4499C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4499C2(Test_S4499C2, "S4499C2", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4499C2C1Ev();
extern void _ZN7S4499C2D1Ev();
Name_Map name_map_S4499C2[] = {
  NSPAIR(_ZN7S4499C2C1Ev),
  NSPAIR(_ZN7S4499C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4499C3;
extern VTBL_ENTRY _ZTI7S4499C3[];
extern  VTBL_ENTRY _ZTV7S4499C3[];
static Base_Class bases_S4499C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4499C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4499C2[];
extern void _ZN7S4499C2D1Ev();
extern void _ZN7S4499C2D0Ev();
extern void _ZN7S4499C32v2Ev();
extern void _ZN7S4499C32v3Ev();
extern void _ZN7S4499C32v4Ev();
extern void _ZN7S4499C32v5Ev();
extern void _ZN7S4499C22v6Ev();
extern void _ZN7S4499C22v7Ev();
extern void _ZN7S4499C22v8Ev();
static  VTBL_ENTRY vtc_S4499C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4499C2[0]),
  (VTBL_ENTRY)&_ZN7S4499C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4499C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4499C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4499C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4499C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4499C2[];
extern  VTBL_ENTRY _ZTV7S4499C2[];
Class_Descriptor cd_S4499C2 = {  "S4499C2", // class name
  bases_S4499C2, 1,
  &(vtc_S4499C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4499C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4499C2),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  S4499C1  : S4499C2 {
  virtual  ~S4499C1(); // _ZN7S4499C1D1Ev
  virtual void  v1(); // _ZN7S4499C12v1Ev
  S4499C1(); // tgen
};
//SIG(1 S4499C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fc Fi} vd v6 v7 v8 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}[8] FC8{ m Fp[2]}[8] Fi} vd v1}


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

static void Test_S4499C1()
{
  extern Class_Descriptor cd_S4499C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,45)];
    init_test(&cd_S4499C1, buf);
    S4499C1 *dp, &lv = *(dp=new (buf) S4499C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,176), "sizeof(S4499C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4499C1)");
    check_base_class_offset(lv, (S4499C3*)(S4499C2*), 0, "S4499C1");
    check_base_class_offset(lv, (S4499C2*), 0, "S4499C1");
    test_class_info(&lv, &cd_S4499C1);
    dp->~S4499C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4499C1(Test_S4499C1, "S4499C1", ABISELECT(280,176));

#else // __cplusplus

extern void _ZN7S4499C1C1Ev();
extern void _ZN7S4499C1D1Ev();
Name_Map name_map_S4499C1[] = {
  NSPAIR(_ZN7S4499C1C1Ev),
  NSPAIR(_ZN7S4499C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4499C3;
extern VTBL_ENTRY _ZTI7S4499C3[];
extern  VTBL_ENTRY _ZTV7S4499C3[];
extern Class_Descriptor cd_S4499C2;
extern VTBL_ENTRY _ZTI7S4499C2[];
extern  VTBL_ENTRY _ZTV7S4499C2[];
static Base_Class bases_S4499C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4499C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4499C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4499C1[];
extern void _ZN7S4499C1D1Ev();
extern void _ZN7S4499C1D0Ev();
extern void _ZN7S4499C32v2Ev();
extern void _ZN7S4499C32v3Ev();
extern void _ZN7S4499C32v4Ev();
extern void _ZN7S4499C32v5Ev();
extern void _ZN7S4499C22v6Ev();
extern void _ZN7S4499C22v7Ev();
extern void _ZN7S4499C22v8Ev();
extern void _ZN7S4499C12v1Ev();
static  VTBL_ENTRY vtc_S4499C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4499C1[0]),
  (VTBL_ENTRY)&_ZN7S4499C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4499C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4499C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4499C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4499C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4499C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4499C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4499C1[];
extern  VTBL_ENTRY _ZTV7S4499C1[];
Class_Descriptor cd_S4499C1 = {  "S4499C1", // class name
  bases_S4499C1, 2,
  &(vtc_S4499C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,176), // object size
  NSPAIRA(_ZTI7S4499C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4499C1),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  S18662C2_nt  {
  virtual  ~S18662C2_nt(); // _ZN11S18662C2_ntD1Ev
  virtual void  v5(); // _ZN11S18662C2_nt2v5Ev
  S18662C2_nt(); // tgen
};
//SIG(-1 S18662C2_nt) C1{ vd v1}


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

//skip512 S18662C2_nt

#else // __cplusplus

extern void _ZN11S18662C2_ntC1Ev();
extern void _ZN11S18662C2_ntD1Ev();
Name_Map name_map_S18662C2_nt[] = {
  NSPAIR(_ZN11S18662C2_ntC1Ev),
  NSPAIR(_ZN11S18662C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S18662C2_nt[];
extern void _ZN11S18662C2_ntD1Ev();
extern void _ZN11S18662C2_ntD0Ev();
extern void _ZN11S18662C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S18662C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S18662C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S18662C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S18662C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S18662C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI11S18662C2_nt[];
VTBL_ENTRY *P__ZTI11S18662C2_nt = _ZTI11S18662C2_nt; 
extern  VTBL_ENTRY _ZTV11S18662C2_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18662C1  {
  ::S18662C2_nt s18662c1f0;
  ::S7604C2 s18662c1f1[4];
  virtual void  v1(); // _ZN8S18662C12v1Ev
  virtual void  v2(); // _ZN8S18662C12v2Ev
  virtual void  v3(); // _ZN8S18662C12v3Ev
  virtual void  v4(); // _ZN8S18662C12v4Ev
  ~S18662C1(); // tgen
  S18662C1(); // tgen
};
//SIG(1 S18662C1) C1{ v1 v2 v3 v4 FC2{ vd v5} FC3{ VBC4{ v11 v12 v13 v14 v15 v16 FL} v6 v7 v8 v9 v10}[4]}


void  S18662C1 ::v1(){vfunc_called(this, "_ZN8S18662C12v1Ev");}
void  S18662C1 ::v2(){vfunc_called(this, "_ZN8S18662C12v2Ev");}
void  S18662C1 ::v3(){vfunc_called(this, "_ZN8S18662C12v3Ev");}
void  S18662C1 ::v4(){vfunc_called(this, "_ZN8S18662C12v4Ev");}
S18662C1 ::~S18662C1(){ note_dtor("S18662C1", this);} // tgen
S18662C1 ::S18662C1(){ note_ctor("S18662C1", this);} // tgen

static void Test_S18662C1()
{
  extern Class_Descriptor cd_S18662C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S18662C1, buf);
    S18662C1 *dp, &lv = *(dp=new (buf) S18662C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S18662C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18662C1)");
    check_field_offset(lv, s18662c1f0, ABISELECT(8,4), "S18662C1.s18662c1f0");
    check_field_offset(lv, s18662c1f1, ABISELECT(16,8), "S18662C1.s18662c1f1");
    test_class_info(&lv, &cd_S18662C1);
    dp->~S18662C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18662C1(Test_S18662C1, "S18662C1", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S18662C1C1Ev();
extern void _ZN8S18662C1D1Ev();
Name_Map name_map_S18662C1[] = {
  NSPAIR(_ZN8S18662C1C1Ev),
  NSPAIR(_ZN8S18662C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18662C1[];
extern void _ZN8S18662C12v1Ev();
extern void _ZN8S18662C12v2Ev();
extern void _ZN8S18662C12v3Ev();
extern void _ZN8S18662C12v4Ev();
static  VTBL_ENTRY vtc_S18662C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18662C1[0]),
  (VTBL_ENTRY)&_ZN8S18662C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18662C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18662C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18662C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18662C1[];
extern  VTBL_ENTRY _ZTV8S18662C1[];
Class_Descriptor cd_S18662C1 = {  "S18662C1", // class name
  0,0,//no base classes
  &(vtc_S18662C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S18662C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18662C1),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  S3276C3  {
  virtual void  v5(); // _ZN7S3276C32v5Ev
  virtual void  v6(); // _ZN7S3276C32v6Ev
  virtual void  v7(); // _ZN7S3276C32v7Ev
  virtual void  v8(); // _ZN7S3276C32v8Ev
  ~S3276C3(); // tgen
  S3276C3(); // tgen
};
//SIG(-1 S3276C3) C1{ v1 v2 v3 v4}


void  S3276C3 ::v5(){vfunc_called(this, "_ZN7S3276C32v5Ev");}
void  S3276C3 ::v6(){vfunc_called(this, "_ZN7S3276C32v6Ev");}
void  S3276C3 ::v7(){vfunc_called(this, "_ZN7S3276C32v7Ev");}
void  S3276C3 ::v8(){vfunc_called(this, "_ZN7S3276C32v8Ev");}
S3276C3 ::~S3276C3(){ note_dtor("S3276C3", this);} // tgen
S3276C3 ::S3276C3(){ note_ctor("S3276C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3276C3C1Ev();
extern void _ZN7S3276C3D1Ev();
Name_Map name_map_S3276C3[] = {
  NSPAIR(_ZN7S3276C3C1Ev),
  NSPAIR(_ZN7S3276C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3276C3[];
extern void _ZN7S3276C32v5Ev();
extern void _ZN7S3276C32v6Ev();
extern void _ZN7S3276C32v7Ev();
extern void _ZN7S3276C32v8Ev();
static  VTBL_ENTRY vtc_S3276C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3276C3[0]),
  (VTBL_ENTRY)&_ZN7S3276C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S3276C3[];
extern  VTBL_ENTRY _ZTV7S3276C3[];
Class_Descriptor cd_S3276C3 = {  "S3276C3", // class name
  0,0,//no base classes
  &(vtc_S3276C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3276C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3276C3),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  S3276C2  : S3276C3 {
  virtual  ~S3276C2(); // _ZN7S3276C2D1Ev
  virtual void  v9(); // _ZN7S3276C22v9Ev
  S3276C2(); // tgen
};
//SIG(-1 S3276C2) C1{ BC2{ v2 v3 v4 v5} vd v1}


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

static void Test_S3276C2()
{
  extern Class_Descriptor cd_S3276C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3276C2, buf);
    S3276C2 *dp, &lv = *(dp=new (buf) S3276C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3276C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3276C2)");
    check_base_class_offset(lv, (S3276C3*), 0, "S3276C2");
    test_class_info(&lv, &cd_S3276C2);
    dp->~S3276C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3276C2(Test_S3276C2, "S3276C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3276C2C1Ev();
extern void _ZN7S3276C2D1Ev();
Name_Map name_map_S3276C2[] = {
  NSPAIR(_ZN7S3276C2C1Ev),
  NSPAIR(_ZN7S3276C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3276C3;
extern VTBL_ENTRY _ZTI7S3276C3[];
extern  VTBL_ENTRY _ZTV7S3276C3[];
static Base_Class bases_S3276C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3276C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3276C2[];
extern void _ZN7S3276C32v5Ev();
extern void _ZN7S3276C32v6Ev();
extern void _ZN7S3276C32v7Ev();
extern void _ZN7S3276C32v8Ev();
extern void _ZN7S3276C2D1Ev();
extern void _ZN7S3276C2D0Ev();
extern void _ZN7S3276C22v9Ev();
static  VTBL_ENTRY vtc_S3276C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3276C2[0]),
  (VTBL_ENTRY)&_ZN7S3276C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3276C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3276C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3276C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S3276C2[];
extern  VTBL_ENTRY _ZTV7S3276C2[];
Class_Descriptor cd_S3276C2 = {  "S3276C2", // class name
  bases_S3276C2, 1,
  &(vtc_S3276C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3276C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3276C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3276C4_nt  {
  virtual  ~S3276C4_nt(); // _ZN10S3276C4_ntD1Ev
  virtual void  v10(); // _ZN10S3276C4_nt3v10Ev
  virtual void  v11(); // _ZN10S3276C4_nt3v11Ev
  virtual void  v12(); // _ZN10S3276C4_nt3v12Ev
  virtual void  v13(); // _ZN10S3276C4_nt3v13Ev
  virtual void  v14(); // _ZN10S3276C4_nt3v14Ev
  virtual void  v15(); // _ZN10S3276C4_nt3v15Ev
  S3276C4_nt(); // tgen
};
//SIG(-1 S3276C4_nt) C1{ vd v1 v2 v3 v4 v5 v6}


 S3276C4_nt ::~S3276C4_nt(){ note_dtor("S3276C4_nt", this);}
void  S3276C4_nt ::v10(){vfunc_called(this, "_ZN10S3276C4_nt3v10Ev");}
void  S3276C4_nt ::v11(){vfunc_called(this, "_ZN10S3276C4_nt3v11Ev");}
void  S3276C4_nt ::v12(){vfunc_called(this, "_ZN10S3276C4_nt3v12Ev");}
void  S3276C4_nt ::v13(){vfunc_called(this, "_ZN10S3276C4_nt3v13Ev");}
void  S3276C4_nt ::v14(){vfunc_called(this, "_ZN10S3276C4_nt3v14Ev");}
void  S3276C4_nt ::v15(){vfunc_called(this, "_ZN10S3276C4_nt3v15Ev");}
S3276C4_nt ::S3276C4_nt(){ note_ctor("S3276C4_nt", this);} // tgen

//skip512 S3276C4_nt

#else // __cplusplus

extern void _ZN10S3276C4_ntC1Ev();
extern void _ZN10S3276C4_ntD1Ev();
Name_Map name_map_S3276C4_nt[] = {
  NSPAIR(_ZN10S3276C4_ntC1Ev),
  NSPAIR(_ZN10S3276C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3276C4_nt[];
extern void _ZN10S3276C4_ntD1Ev();
extern void _ZN10S3276C4_ntD0Ev();
extern void _ZN10S3276C4_nt3v10Ev();
extern void _ZN10S3276C4_nt3v11Ev();
extern void _ZN10S3276C4_nt3v12Ev();
extern void _ZN10S3276C4_nt3v13Ev();
extern void _ZN10S3276C4_nt3v14Ev();
extern void _ZN10S3276C4_nt3v15Ev();
static  VTBL_ENTRY vtc_S3276C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3276C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S3276C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v15Ev,
};
extern VTBL_ENTRY _ZTI10S3276C4_nt[];
VTBL_ENTRY *P__ZTI10S3276C4_nt = _ZTI10S3276C4_nt; 
extern  VTBL_ENTRY _ZTV10S3276C4_nt[];
Class_Descriptor cd_S3276C4_nt = {  "S3276C4_nt", // class name
  0,0,//no base classes
  &(vtc_S3276C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3276C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3276C4_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3276C1  : S3276C2 , S3276C4_nt {
  __tsi64 s3276c1f0;
  virtual void  v1(); // _ZN7S3276C12v1Ev
  virtual void  v2(); // _ZN7S3276C12v2Ev
  virtual void  v3(); // _ZN7S3276C12v3Ev
  virtual void  v4(); // _ZN7S3276C12v4Ev
  ~S3276C1(); // tgen
  S3276C1(); // tgen
};
//SIG(1 S3276C1) C1{ BC2{ BC3{ v5 v6 v7 v8} vd v9} BC4{ vd v10 v11 v12 v13 v14 v15} v1 v2 v3 v4 FL}


void  S3276C1 ::v1(){vfunc_called(this, "_ZN7S3276C12v1Ev");}
void  S3276C1 ::v2(){vfunc_called(this, "_ZN7S3276C12v2Ev");}
void  S3276C1 ::v3(){vfunc_called(this, "_ZN7S3276C12v3Ev");}
void  S3276C1 ::v4(){vfunc_called(this, "_ZN7S3276C12v4Ev");}
S3276C1 ::~S3276C1(){ note_dtor("S3276C1", this);} // tgen
S3276C1 ::S3276C1(){ note_ctor("S3276C1", this);} // tgen

static void Test_S3276C1()
{
  extern Class_Descriptor cd_S3276C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3276C1, buf);
    S3276C1 *dp, &lv = *(dp=new (buf) S3276C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3276C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3276C1)");
    check_base_class_offset(lv, (S3276C3*)(S3276C2*), 0, "S3276C1");
    check_base_class_offset(lv, (S3276C2*), 0, "S3276C1");
    check_base_class_offset(lv, (S3276C4_nt*), ABISELECT(8,4), "S3276C1");
    check_field_offset(lv, s3276c1f0, ABISELECT(16,8), "S3276C1.s3276c1f0");
    test_class_info(&lv, &cd_S3276C1);
    dp->~S3276C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3276C1(Test_S3276C1, "S3276C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3276C1C1Ev();
extern void _ZN7S3276C1D1Ev();
Name_Map name_map_S3276C1[] = {
  NSPAIR(_ZN7S3276C1C1Ev),
  NSPAIR(_ZN7S3276C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3276C3;
extern VTBL_ENTRY _ZTI7S3276C3[];
extern  VTBL_ENTRY _ZTV7S3276C3[];
extern Class_Descriptor cd_S3276C2;
extern VTBL_ENTRY _ZTI7S3276C2[];
extern  VTBL_ENTRY _ZTV7S3276C2[];
extern Class_Descriptor cd_S3276C4_nt;
extern VTBL_ENTRY _ZTI10S3276C4_nt[];
extern  VTBL_ENTRY _ZTV10S3276C4_nt[];
static Base_Class bases_S3276C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3276C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3276C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3276C4_nt,    ABISELECT(8,4), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3276C1[];
extern void _ZN7S3276C32v5Ev();
extern void _ZN7S3276C32v6Ev();
extern void _ZN7S3276C32v7Ev();
extern void _ZN7S3276C32v8Ev();
extern void _ZN7S3276C1D1Ev();
extern void _ZN7S3276C1D0Ev();
extern void _ZN7S3276C22v9Ev();
extern void _ZN7S3276C12v1Ev();
extern void _ZN7S3276C12v2Ev();
extern void _ZN7S3276C12v3Ev();
extern void _ZN7S3276C12v4Ev();
extern void ABISELECT(_ZThn8_N7S3276C1D1Ev,_ZThn4_N7S3276C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S3276C1D0Ev,_ZThn4_N7S3276C1D0Ev)();
extern void _ZN10S3276C4_nt3v10Ev();
extern void _ZN10S3276C4_nt3v11Ev();
extern void _ZN10S3276C4_nt3v12Ev();
extern void _ZN10S3276C4_nt3v13Ev();
extern void _ZN10S3276C4_nt3v14Ev();
extern void _ZN10S3276C4_nt3v15Ev();
static  VTBL_ENTRY vtc_S3276C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3276C1[0]),
  (VTBL_ENTRY)&_ZN7S3276C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3276C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3276C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3276C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3276C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3276C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3276C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3276C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3276C12v4Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S3276C1D1Ev,_ZThn4_N7S3276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S3276C1D0Ev,_ZThn4_N7S3276C1D0Ev),
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3276C4_nt3v15Ev,
};
extern VTBL_ENTRY _ZTI7S3276C1[];
extern  VTBL_ENTRY _ZTV7S3276C1[];
Class_Descriptor cd_S3276C1 = {  "S3276C1", // class name
  bases_S3276C1, 3,
  &(vtc_S3276C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3276C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3276C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3275C3  {
  virtual void  v5(); // _ZN7S3275C32v5Ev
  virtual void  v6(); // _ZN7S3275C32v6Ev
  virtual void  v7(); // _ZN7S3275C32v7Ev
  virtual void  v8(); // _ZN7S3275C32v8Ev
  ~S3275C3(); // tgen
  S3275C3(); // tgen
};
//SIG(-1 S3275C3) C1{ v1 v2 v3 v4}


void  S3275C3 ::v5(){vfunc_called(this, "_ZN7S3275C32v5Ev");}
void  S3275C3 ::v6(){vfunc_called(this, "_ZN7S3275C32v6Ev");}
void  S3275C3 ::v7(){vfunc_called(this, "_ZN7S3275C32v7Ev");}
void  S3275C3 ::v8(){vfunc_called(this, "_ZN7S3275C32v8Ev");}
S3275C3 ::~S3275C3(){ note_dtor("S3275C3", this);} // tgen
S3275C3 ::S3275C3(){ note_ctor("S3275C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3275C3C1Ev();
extern void _ZN7S3275C3D1Ev();
Name_Map name_map_S3275C3[] = {
  NSPAIR(_ZN7S3275C3C1Ev),
  NSPAIR(_ZN7S3275C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3275C3[];
extern void _ZN7S3275C32v5Ev();
extern void _ZN7S3275C32v6Ev();
extern void _ZN7S3275C32v7Ev();
extern void _ZN7S3275C32v8Ev();
static  VTBL_ENTRY vtc_S3275C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3275C3[0]),
  (VTBL_ENTRY)&_ZN7S3275C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S3275C3[];
extern  VTBL_ENTRY _ZTV7S3275C3[];
Class_Descriptor cd_S3275C3 = {  "S3275C3", // class name
  0,0,//no base classes
  &(vtc_S3275C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3275C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3275C3),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  S3275C2  : S3275C3 {
  virtual  ~S3275C2(); // _ZN7S3275C2D1Ev
  virtual void  v9(); // _ZN7S3275C22v9Ev
  S3275C2(); // tgen
};
//SIG(-1 S3275C2) C1{ BC2{ v2 v3 v4 v5} vd v1}


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

static void Test_S3275C2()
{
  extern Class_Descriptor cd_S3275C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3275C2, buf);
    S3275C2 *dp, &lv = *(dp=new (buf) S3275C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3275C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3275C2)");
    check_base_class_offset(lv, (S3275C3*), 0, "S3275C2");
    test_class_info(&lv, &cd_S3275C2);
    dp->~S3275C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3275C2(Test_S3275C2, "S3275C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3275C2C1Ev();
extern void _ZN7S3275C2D1Ev();
Name_Map name_map_S3275C2[] = {
  NSPAIR(_ZN7S3275C2C1Ev),
  NSPAIR(_ZN7S3275C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3275C3;
extern VTBL_ENTRY _ZTI7S3275C3[];
extern  VTBL_ENTRY _ZTV7S3275C3[];
static Base_Class bases_S3275C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3275C2[];
extern void _ZN7S3275C32v5Ev();
extern void _ZN7S3275C32v6Ev();
extern void _ZN7S3275C32v7Ev();
extern void _ZN7S3275C32v8Ev();
extern void _ZN7S3275C2D1Ev();
extern void _ZN7S3275C2D0Ev();
extern void _ZN7S3275C22v9Ev();
static  VTBL_ENTRY vtc_S3275C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3275C2[0]),
  (VTBL_ENTRY)&_ZN7S3275C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3275C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3275C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3275C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S3275C2[];
extern  VTBL_ENTRY _ZTV7S3275C2[];
Class_Descriptor cd_S3275C2 = {  "S3275C2", // class name
  bases_S3275C2, 1,
  &(vtc_S3275C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3275C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3275C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3275C4  {
  virtual  ~S3275C4(); // _ZN7S3275C4D1Ev
  virtual void  v10(); // _ZN7S3275C43v10Ev
  virtual void  v11(); // _ZN7S3275C43v11Ev
  virtual void  v12(); // _ZN7S3275C43v12Ev
  virtual void  v13(); // _ZN7S3275C43v13Ev
  virtual void  v14(); // _ZN7S3275C43v14Ev
  virtual void  v15(); // _ZN7S3275C43v15Ev
  S3275C4(); // tgen
};
//SIG(-1 S3275C4) C1{ vd v1 v2 v3 v4 v5 v6}


 S3275C4 ::~S3275C4(){ note_dtor("S3275C4", this);}
void  S3275C4 ::v10(){vfunc_called(this, "_ZN7S3275C43v10Ev");}
void  S3275C4 ::v11(){vfunc_called(this, "_ZN7S3275C43v11Ev");}
void  S3275C4 ::v12(){vfunc_called(this, "_ZN7S3275C43v12Ev");}
void  S3275C4 ::v13(){vfunc_called(this, "_ZN7S3275C43v13Ev");}
void  S3275C4 ::v14(){vfunc_called(this, "_ZN7S3275C43v14Ev");}
void  S3275C4 ::v15(){vfunc_called(this, "_ZN7S3275C43v15Ev");}
S3275C4 ::S3275C4(){ note_ctor("S3275C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3275C4C1Ev();
extern void _ZN7S3275C4D1Ev();
Name_Map name_map_S3275C4[] = {
  NSPAIR(_ZN7S3275C4C1Ev),
  NSPAIR(_ZN7S3275C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3275C4[];
extern void _ZN7S3275C4D1Ev();
extern void _ZN7S3275C4D0Ev();
extern void _ZN7S3275C43v10Ev();
extern void _ZN7S3275C43v11Ev();
extern void _ZN7S3275C43v12Ev();
extern void _ZN7S3275C43v13Ev();
extern void _ZN7S3275C43v14Ev();
extern void _ZN7S3275C43v15Ev();
static  VTBL_ENTRY vtc_S3275C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3275C4[0]),
  (VTBL_ENTRY)&_ZN7S3275C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3275C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v15Ev,
};
extern VTBL_ENTRY _ZTI7S3275C4[];
extern  VTBL_ENTRY _ZTV7S3275C4[];
Class_Descriptor cd_S3275C4 = {  "S3275C4", // class name
  0,0,//no base classes
  &(vtc_S3275C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3275C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3275C4),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  S3275C1  : S3275C2 , S3275C4 {
  long s3275c1f0;
  virtual void  v1(); // _ZN7S3275C12v1Ev
  virtual void  v2(); // _ZN7S3275C12v2Ev
  virtual void  v3(); // _ZN7S3275C12v3Ev
  virtual void  v4(); // _ZN7S3275C12v4Ev
  ~S3275C1(); // tgen
  S3275C1(); // tgen
};
//SIG(1 S3275C1) C1{ BC2{ BC3{ v5 v6 v7 v8} vd v9} BC4{ vd v10 v11 v12 v13 v14 v15} v1 v2 v3 v4 Fl}


void  S3275C1 ::v1(){vfunc_called(this, "_ZN7S3275C12v1Ev");}
void  S3275C1 ::v2(){vfunc_called(this, "_ZN7S3275C12v2Ev");}
void  S3275C1 ::v3(){vfunc_called(this, "_ZN7S3275C12v3Ev");}
void  S3275C1 ::v4(){vfunc_called(this, "_ZN7S3275C12v4Ev");}
S3275C1 ::~S3275C1(){ note_dtor("S3275C1", this);} // tgen
S3275C1 ::S3275C1(){ note_ctor("S3275C1", this);} // tgen

static void Test_S3275C1()
{
  extern Class_Descriptor cd_S3275C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3275C1, buf);
    S3275C1 *dp, &lv = *(dp=new (buf) S3275C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3275C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3275C1)");
    check_base_class_offset(lv, (S3275C3*)(S3275C2*), 0, "S3275C1");
    check_base_class_offset(lv, (S3275C2*), 0, "S3275C1");
    check_base_class_offset(lv, (S3275C4*), ABISELECT(8,4), "S3275C1");
    check_field_offset(lv, s3275c1f0, ABISELECT(16,8), "S3275C1.s3275c1f0");
    test_class_info(&lv, &cd_S3275C1);
    dp->~S3275C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3275C1(Test_S3275C1, "S3275C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3275C1C1Ev();
extern void _ZN7S3275C1D1Ev();
Name_Map name_map_S3275C1[] = {
  NSPAIR(_ZN7S3275C1C1Ev),
  NSPAIR(_ZN7S3275C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3275C3;
extern VTBL_ENTRY _ZTI7S3275C3[];
extern  VTBL_ENTRY _ZTV7S3275C3[];
extern Class_Descriptor cd_S3275C2;
extern VTBL_ENTRY _ZTI7S3275C2[];
extern  VTBL_ENTRY _ZTV7S3275C2[];
extern Class_Descriptor cd_S3275C4;
extern VTBL_ENTRY _ZTI7S3275C4[];
extern  VTBL_ENTRY _ZTV7S3275C4[];
static Base_Class bases_S3275C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3275C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3275C4,    ABISELECT(8,4), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3275C1[];
extern void _ZN7S3275C32v5Ev();
extern void _ZN7S3275C32v6Ev();
extern void _ZN7S3275C32v7Ev();
extern void _ZN7S3275C32v8Ev();
extern void _ZN7S3275C1D1Ev();
extern void _ZN7S3275C1D0Ev();
extern void _ZN7S3275C22v9Ev();
extern void _ZN7S3275C12v1Ev();
extern void _ZN7S3275C12v2Ev();
extern void _ZN7S3275C12v3Ev();
extern void _ZN7S3275C12v4Ev();
extern void ABISELECT(_ZThn8_N7S3275C1D1Ev,_ZThn4_N7S3275C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S3275C1D0Ev,_ZThn4_N7S3275C1D0Ev)();
extern void _ZN7S3275C43v10Ev();
extern void _ZN7S3275C43v11Ev();
extern void _ZN7S3275C43v12Ev();
extern void _ZN7S3275C43v13Ev();
extern void _ZN7S3275C43v14Ev();
extern void _ZN7S3275C43v15Ev();
static  VTBL_ENTRY vtc_S3275C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3275C1[0]),
  (VTBL_ENTRY)&_ZN7S3275C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3275C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3275C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3275C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3275C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3275C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3275C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3275C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3275C12v4Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S3275C1D1Ev,_ZThn4_N7S3275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S3275C1D0Ev,_ZThn4_N7S3275C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3275C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3275C43v15Ev,
};
extern VTBL_ENTRY _ZTI7S3275C1[];
extern  VTBL_ENTRY _ZTV7S3275C1[];
Class_Descriptor cd_S3275C1 = {  "S3275C1", // class name
  bases_S3275C1, 3,
  &(vtc_S3275C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3275C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3275C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17466C1  {
  void *s17466c1f0;
  char s17466c1f1[2];
  int s17466c1f2[3];
  ::S4224C19_nt s17466c1f3;
  char s17466c1f4;
  int s17466c1f5;
  void *s17466c1f6;
  char s17466c1f7[2];
  void *s17466c1f8;
  char s17466c1f9;
  ::S4794C8_nt s17466c1f10;
  void  mf17466c1(); // _ZN8S17466C19mf17466c1Ev
};
//SIG(1 S17466C1) C1{ m Fp Fc[2] Fi[3] FC2{ m Fp Fi FC3{ m}} Fc Fi Fp Fc[2] Fp Fc FC4{ m FL[4]}}


void  S17466C1 ::mf17466c1(){}

static void Test_S17466C1()
{
  {
    init_simple_test("S17466C1");
    S17466C1 lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S17466C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17466C1)");
    check_field_offset(lv, s17466c1f0, 0, "S17466C1.s17466c1f0");
    check_field_offset(lv, s17466c1f1, ABISELECT(8,4), "S17466C1.s17466c1f1");
    check_field_offset(lv, s17466c1f2, ABISELECT(12,8), "S17466C1.s17466c1f2");
    check_field_offset(lv, s17466c1f3, ABISELECT(24,20), "S17466C1.s17466c1f3");
    check_field_offset(lv, s17466c1f4, ABISELECT(40,32), "S17466C1.s17466c1f4");
    check_field_offset(lv, s17466c1f5, ABISELECT(44,36), "S17466C1.s17466c1f5");
    check_field_offset(lv, s17466c1f6, ABISELECT(48,40), "S17466C1.s17466c1f6");
    check_field_offset(lv, s17466c1f7, ABISELECT(56,44), "S17466C1.s17466c1f7");
    check_field_offset(lv, s17466c1f8, ABISELECT(64,48), "S17466C1.s17466c1f8");
    check_field_offset(lv, s17466c1f9, ABISELECT(72,52), "S17466C1.s17466c1f9");
    check_field_offset(lv, s17466c1f10, ABISELECT(80,56), "S17466C1.s17466c1f10");
  }
}
static Arrange_To_Call_Me vS17466C1(Test_S17466C1, "S17466C1", ABISELECT(112,88));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S21049C4C1Ev();
extern void _ZN8S21049C4D1Ev();
Name_Map name_map_S21049C4[] = {
  NSPAIR(_ZN8S21049C4C1Ev),
  NSPAIR(_ZN8S21049C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21049C4[];
extern void _ZN8S21049C42v1Ev();
static  VTBL_ENTRY vtc_S21049C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C4[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
};
extern VTBL_ENTRY _ZTI8S21049C4[];
extern  VTBL_ENTRY _ZTV8S21049C4[];
Class_Descriptor cd_S21049C4 = {  "S21049C4", // class name
  0,0,//no base classes
  &(vtc_S21049C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21049C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21049C4),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  S21049C3  : virtual S21049C4 {
  __tsi64 s21049c3f0;
  int s21049c3f1[7];
  __tsi64 s21049c3f2;
  virtual void  v2(); // _ZN8S21049C32v2Ev
  ~S21049C3(); // tgen
  S21049C3(); // tgen
};
//SIG(-1 S21049C3) C1{ VBC2{ v2} v1 FL Fi[7] FL}


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

static void Test_S21049C3()
{
  extern Class_Descriptor cd_S21049C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S21049C3, buf);
    S21049C3 *dp, &lv = *(dp=new (buf) S21049C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S21049C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21049C3)");
    check_base_class_offset(lv, (S21049C4*), 0, "S21049C3");
    check_field_offset(lv, s21049c3f0, ABISELECT(8,4), "S21049C3.s21049c3f0");
    check_field_offset(lv, s21049c3f1, ABISELECT(16,12), "S21049C3.s21049c3f1");
    check_field_offset(lv, s21049c3f2, ABISELECT(48,40), "S21049C3.s21049c3f2");
    test_class_info(&lv, &cd_S21049C3);
    dp->~S21049C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21049C3(Test_S21049C3, "S21049C3", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN8S21049C3C1Ev();
extern void _ZN8S21049C3D1Ev();
Name_Map name_map_S21049C3[] = {
  NSPAIR(_ZN8S21049C3C1Ev),
  NSPAIR(_ZN8S21049C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21049C4;
extern VTBL_ENTRY _ZTI8S21049C4[];
extern  VTBL_ENTRY _ZTV8S21049C4[];
static Base_Class bases_S21049C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21049C4,    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 _ZTI8S21049C3[];
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C32v2Ev();
static  VTBL_ENTRY vtc_S21049C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C3[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21049C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S21049C3[];
static  VTT_ENTRY vtt_S21049C3[] = {
  {&(_ZTV8S21049C3[4]),  4,6},
  {&(_ZTV8S21049C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21049C3[];
extern  VTBL_ENTRY _ZTV8S21049C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21049C3[];
Class_Descriptor cd_S21049C3 = {  "S21049C3", // class name
  bases_S21049C3, 1,
  &(vtc_S21049C3[0]), // expected_vtbl_contents
  &(vtt_S21049C3[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI8S21049C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21049C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21049C3),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  S21049C2  : virtual S21049C3 {
  char  :0;
  ::S21049C4 s21049c2f1[6];
  int s21049c2f2;
  void *s21049c2f3;
  int s21049c2f4;
  ~S21049C2(); // tgen
  S21049C2(); // tgen
};
//SIG(-1 S21049C2) C1{ VBC2{ VBC3{ v1} v2 FL Fi[7] FL} Fc:0 FC3[6] Fi Fp Fi}


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

static void Test_S21049C2()
{
  extern Class_Descriptor cd_S21049C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S21049C2, buf);
    S21049C2 *dp, &lv = *(dp=new (buf) S21049C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S21049C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21049C2)");
    check_base_class_offset(lv, (S21049C4*)(S21049C3*), 0, "S21049C2");
    check_base_class_offset(lv, (S21049C3*), ABISELECT(80,40), "S21049C2");
    check_field_offset(lv, s21049c2f1, ABISELECT(8,4), "S21049C2.s21049c2f1");
    check_field_offset(lv, s21049c2f2, ABISELECT(56,28), "S21049C2.s21049c2f2");
    check_field_offset(lv, s21049c2f3, ABISELECT(64,32), "S21049C2.s21049c2f3");
    check_field_offset(lv, s21049c2f4, ABISELECT(72,36), "S21049C2.s21049c2f4");
    test_class_info(&lv, &cd_S21049C2);
    dp->~S21049C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21049C2(Test_S21049C2, "S21049C2", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN8S21049C2C1Ev();
extern void _ZN8S21049C2D1Ev();
Name_Map name_map_S21049C2[] = {
  NSPAIR(_ZN8S21049C2C1Ev),
  NSPAIR(_ZN8S21049C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21049C4;
extern VTBL_ENTRY _ZTI8S21049C4[];
extern  VTBL_ENTRY _ZTV8S21049C4[];
extern Class_Descriptor cd_S21049C3;
extern VTBL_ENTRY _ZTI8S21049C3[];
extern  VTBL_ENTRY _ZTV8S21049C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21049C3[];
static Base_Class bases_S21049C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21049C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21049C3,    ABISELECT(80,40), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21049C2[];
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C32v2Ev();
static  VTBL_ENTRY vtc_S21049C2[] = {
  0,
  ABISELECT(80,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C2[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  0,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21049C2[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21049C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S21049C2[];
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C3__8S21049C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C3[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21049C32v2Ev,
};
extern void _ZN8S21049C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C4__8S21049C3__8S21049C2[] = {
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S21049C3[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
};
static  VTT_ENTRY vtt_S21049C2[] = {
  {&(_ZTV8S21049C2[5]),  5,13},
  {&(_ZTV8S21049C2[11]),  11,13},
  {&(_ZTV8S21049C2[5]),  5,13},
  {&(_tg__ZTV8S21049C3__8S21049C2[4]),  4,6},
  {&(_tg__ZTV8S21049C4__8S21049C3__8S21049C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21049C2[];
extern  VTBL_ENTRY _ZTV8S21049C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21049C2[];
Class_Descriptor cd_S21049C2 = {  "S21049C2", // class name
  bases_S21049C2, 2,
  &(vtc_S21049C2[0]), // expected_vtbl_contents
  &(vtt_S21049C2[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI8S21049C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21049C2),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21049C2),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  S21049C1  : virtual S21049C2 {
  __tsi64 s21049c1f0;
  char s21049c1f1[9];
  ::S20636C21_nt s21049c1f2;
  ~S21049C1(); // tgen
  S21049C1(); // tgen
};
//SIG(1 S21049C1) C1{ VBC2{ VBC3{ VBC4{ v1} v2 FL Fi[7] FL} Fc:0 FC4[6] Fi Fp Fi} FL Fc[9] FC5{}}


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

static void Test_S21049C1()
{
  extern Class_Descriptor cd_S21049C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,29)];
    init_test(&cd_S21049C1, buf);
    S21049C1 *dp, &lv = *(dp=new (buf) S21049C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,112), "sizeof(S21049C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21049C1)");
    check_base_class_offset(lv, (S21049C4*)(S21049C3*), 0, "S21049C1");
    check_base_class_offset(lv, (S21049C3*)(S21049C2*), ABISELECT(112,64), "S21049C1");
    check_base_class_offset(lv, (S21049C2*), ABISELECT(32,24), "S21049C1");
    check_field_offset(lv, s21049c1f0, ABISELECT(8,4), "S21049C1.s21049c1f0");
    check_field_offset(lv, s21049c1f1, ABISELECT(16,12), "S21049C1.s21049c1f1");
    check_field_offset(lv, s21049c1f2, ABISELECT(25,21), "S21049C1.s21049c1f2");
    test_class_info(&lv, &cd_S21049C1);
    dp->~S21049C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21049C1(Test_S21049C1, "S21049C1", ABISELECT(168,112));

#else // __cplusplus

extern void _ZN8S21049C1C1Ev();
extern void _ZN8S21049C1D1Ev();
Name_Map name_map_S21049C1[] = {
  NSPAIR(_ZN8S21049C1C1Ev),
  NSPAIR(_ZN8S21049C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21049C4;
extern VTBL_ENTRY _ZTI8S21049C4[];
extern  VTBL_ENTRY _ZTV8S21049C4[];
extern Class_Descriptor cd_S21049C3;
extern VTBL_ENTRY _ZTI8S21049C3[];
extern  VTBL_ENTRY _ZTV8S21049C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21049C3[];
extern Class_Descriptor cd_S21049C2;
extern VTBL_ENTRY _ZTI8S21049C2[];
extern  VTBL_ENTRY _ZTV8S21049C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21049C2[];
static Base_Class bases_S21049C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21049C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21049C3,    ABISELECT(112,64), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21049C2,    ABISELECT(32,24), //bcp->offset
    7, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21049C1[];
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C32v2Ev();
static  VTBL_ENTRY vtc_S21049C1[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(32,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C1[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  ABISELECT(-32,-24),
  ABISELECT(80,40),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21049C1[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21049C1[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21049C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S21049C1[];
extern void _ZN8S21049C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C2__8S21049C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(80,40),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C2[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
};
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C3__8S21049C2__8S21049C1[] = {
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21049C2[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21049C32v2Ev,
};
extern void _ZN8S21049C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C4__8S21049C2__8S21049C1[] = {
  0,
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21049C2[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
};
extern void _ZN8S21049C42v1Ev();
extern void _ZN8S21049C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C3__8S21049C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21049C3[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21049C32v2Ev,
};
extern void _ZN8S21049C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21049C4__8S21049C3__8S21049C1[] = {
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21049C3[0]),
  (VTBL_ENTRY)&_ZN8S21049C42v1Ev,
};
static  VTT_ENTRY vtt_S21049C1[] = {
  {&(_ZTV8S21049C1[6]),  6,20},
  {&(_ZTV8S21049C1[12]),  12,20},
  {&(_ZTV8S21049C1[18]),  18,20},
  {&(_ZTV8S21049C1[6]),  6,20},
  {&(_tg__ZTV8S21049C2__8S21049C1[5]),  5,6},
  {&(_tg__ZTV8S21049C3__8S21049C2__8S21049C1[5]),  5,7},
  {&(_tg__ZTV8S21049C4__8S21049C2__8S21049C1[3]),  3,4},
  {&(_tg__ZTV8S21049C3__8S21049C1[4]),  4,6},
  {&(_tg__ZTV8S21049C4__8S21049C3__8S21049C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21049C1[];
extern  VTBL_ENTRY _ZTV8S21049C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21049C1[];
Class_Descriptor cd_S21049C1 = {  "S21049C1", // class name
  bases_S21049C1, 3,
  &(vtc_S21049C1[0]), // expected_vtbl_contents
  &(vtt_S21049C1[0]), // expected_vtt_contents
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI8S21049C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21049C1),20, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21049C1),9, //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  S12387C3_nt  {
  char s12387c3f0[20];
};
//SIG(-1 S12387C3_nt) C1{ Fc[20]}



//skip512 S12387C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12387C2_nt  {
  ::S12387C3_nt s12387c2f0;
  char s12387c2f1[16];
};
//SIG(-1 S12387C2_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S12387C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12387C4_nt  {
  char s12387c4f0[12];
};
//SIG(-1 S12387C4_nt) C1{ Fc[12]}



//skip512 S12387C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12387C5  {
  ::S12387C2_nt s12387c5f0;
  int s12387c5f1;
  char s12387c5f2[4];
};
//SIG(1 S12387C5) C1{ FC2{ FC3{ Fc[20]} Fc[16]} Fi Fc[4]}



static void Test_S12387C5()
{
  {
    init_simple_test("S12387C5");
    S12387C5 lv;
    check2(sizeof(lv), 44, "sizeof(S12387C5)");
    check2(__alignof__(lv), 4, "__alignof__(S12387C5)");
    check_field_offset(lv, s12387c5f0, 0, "S12387C5.s12387c5f0");
    check_field_offset(lv, s12387c5f1, 36, "S12387C5.s12387c5f1");
    check_field_offset(lv, s12387c5f2, 40, "S12387C5.s12387c5f2");
  }
}
static Arrange_To_Call_Me vS12387C5(Test_S12387C5, "S12387C5", 44);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12387C1  {
  int s12387c1f0;
  ::S12387C2_nt s12387c1f1;
  ::S12387C4_nt s12387c1f2;
  int s12387c1f3;
  ::S12387C5 s12387c1f4[101];
  int s12387c1f5[3];
};
//SIG(1 S12387C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi FC5{ FC2 Fi Fc[4]}[101] Fi[3]}



static void Test_S12387C1()
{
  {
    init_simple_test("S12387C1");
    S12387C1 lv;
    check2(sizeof(lv), 4512, "sizeof(S12387C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12387C1)");
    check_field_offset(lv, s12387c1f0, 0, "S12387C1.s12387c1f0");
    check_field_offset(lv, s12387c1f1, 4, "S12387C1.s12387c1f1");
    check_field_offset(lv, s12387c1f2, 40, "S12387C1.s12387c1f2");
    check_field_offset(lv, s12387c1f3, 52, "S12387C1.s12387c1f3");
    check_field_offset(lv, s12387c1f4, 56, "S12387C1.s12387c1f4");
    check_field_offset(lv, s12387c1f5, 4500, "S12387C1.s12387c1f5");
  }
}
static Arrange_To_Call_Me vS12387C1(Test_S12387C1, "S12387C1", 4512);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20146C2_nt  {
  virtual  ~S20146C2_nt(); // _ZN11S20146C2_ntD1Ev
  virtual void  v3(); // _ZN11S20146C2_nt2v3Ev
  virtual void  v4(); // _ZN11S20146C2_nt2v4Ev
  virtual void  v5(); // _ZN11S20146C2_nt2v5Ev
  virtual void  v6(); // _ZN11S20146C2_nt2v6Ev
  virtual void  v7(); // _ZN11S20146C2_nt2v7Ev
  S20146C2_nt(); // tgen
};
//SIG(-1 S20146C2_nt) C1{ vd v1 v2 v3 v4 v5}


 S20146C2_nt ::~S20146C2_nt(){ note_dtor("S20146C2_nt", this);}
void  S20146C2_nt ::v3(){vfunc_called(this, "_ZN11S20146C2_nt2v3Ev");}
void  S20146C2_nt ::v4(){vfunc_called(this, "_ZN11S20146C2_nt2v4Ev");}
void  S20146C2_nt ::v5(){vfunc_called(this, "_ZN11S20146C2_nt2v5Ev");}
void  S20146C2_nt ::v6(){vfunc_called(this, "_ZN11S20146C2_nt2v6Ev");}
void  S20146C2_nt ::v7(){vfunc_called(this, "_ZN11S20146C2_nt2v7Ev");}
S20146C2_nt ::S20146C2_nt(){ note_ctor("S20146C2_nt", this);} // tgen

//skip512 S20146C2_nt

#else // __cplusplus

extern void _ZN11S20146C2_ntC1Ev();
extern void _ZN11S20146C2_ntD1Ev();
Name_Map name_map_S20146C2_nt[] = {
  NSPAIR(_ZN11S20146C2_ntC1Ev),
  NSPAIR(_ZN11S20146C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20146C2_nt[];
extern void _ZN11S20146C2_ntD1Ev();
extern void _ZN11S20146C2_ntD0Ev();
extern void _ZN11S20146C2_nt2v3Ev();
extern void _ZN11S20146C2_nt2v4Ev();
extern void _ZN11S20146C2_nt2v5Ev();
extern void _ZN11S20146C2_nt2v6Ev();
extern void _ZN11S20146C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S20146C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20146C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20146C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI11S20146C2_nt[];
VTBL_ENTRY *P__ZTI11S20146C2_nt = _ZTI11S20146C2_nt; 
extern  VTBL_ENTRY _ZTV11S20146C2_nt[];
Class_Descriptor cd_S20146C2_nt = {  "S20146C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20146C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20146C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20146C2_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  S20146C3  {
  __tsi64 s20146c3f0;
  virtual void  v8(); // _ZN8S20146C32v8Ev
  virtual void  v9(); // _ZN8S20146C32v9Ev
  virtual void  v10(); // _ZN8S20146C33v10Ev
  virtual void  v11(); // _ZN8S20146C33v11Ev
  virtual void  v12(); // _ZN8S20146C33v12Ev
  virtual void  v13(); // _ZN8S20146C33v13Ev
  ~S20146C3(); // tgen
  S20146C3(); // tgen
};
//SIG(-1 S20146C3) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S20146C3 ::v8(){vfunc_called(this, "_ZN8S20146C32v8Ev");}
void  S20146C3 ::v9(){vfunc_called(this, "_ZN8S20146C32v9Ev");}
void  S20146C3 ::v10(){vfunc_called(this, "_ZN8S20146C33v10Ev");}
void  S20146C3 ::v11(){vfunc_called(this, "_ZN8S20146C33v11Ev");}
void  S20146C3 ::v12(){vfunc_called(this, "_ZN8S20146C33v12Ev");}
void  S20146C3 ::v13(){vfunc_called(this, "_ZN8S20146C33v13Ev");}
S20146C3 ::~S20146C3(){ note_dtor("S20146C3", this);} // tgen
S20146C3 ::S20146C3(){ note_ctor("S20146C3", this);} // tgen

static void Test_S20146C3()
{
  extern Class_Descriptor cd_S20146C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20146C3, buf);
    S20146C3 *dp, &lv = *(dp=new (buf) S20146C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20146C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20146C3)");
    check_field_offset(lv, s20146c3f0, ABISELECT(8,4), "S20146C3.s20146c3f0");
    test_class_info(&lv, &cd_S20146C3);
    dp->~S20146C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20146C3(Test_S20146C3, "S20146C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20146C3C1Ev();
extern void _ZN8S20146C3D1Ev();
Name_Map name_map_S20146C3[] = {
  NSPAIR(_ZN8S20146C3C1Ev),
  NSPAIR(_ZN8S20146C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20146C3[];
extern void _ZN8S20146C32v8Ev();
extern void _ZN8S20146C32v9Ev();
extern void _ZN8S20146C33v10Ev();
extern void _ZN8S20146C33v11Ev();
extern void _ZN8S20146C33v12Ev();
extern void _ZN8S20146C33v13Ev();
static  VTBL_ENTRY vtc_S20146C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20146C3[0]),
  (VTBL_ENTRY)&_ZN8S20146C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20146C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v13Ev,
};
extern VTBL_ENTRY _ZTI8S20146C3[];
extern  VTBL_ENTRY _ZTV8S20146C3[];
Class_Descriptor cd_S20146C3 = {  "S20146C3", // class name
  0,0,//no base classes
  &(vtc_S20146C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20146C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20146C3),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  S20146C1  : virtual S20146C2_nt , S20146C3 {
  short s20146c1f0[2];
  virtual  ~S20146C1(); // _ZN8S20146C1D2Ev
  virtual void  v1(); // _ZN8S20146C12v1Ev
  virtual void  v2(); // _ZN8S20146C12v2Ev
  S20146C1(); // tgen
};
//SIG(1 S20146C1) C1{ VBC2{ vd v3 v4 v5 v6 v7} BC3{ v8 v9 v10 v11 v12 v13 FL} vd v1 v2 Fs[2]}


 S20146C1 ::~S20146C1(){ note_dtor("S20146C1", this);}
void  S20146C1 ::v1(){vfunc_called(this, "_ZN8S20146C12v1Ev");}
void  S20146C1 ::v2(){vfunc_called(this, "_ZN8S20146C12v2Ev");}
S20146C1 ::S20146C1(){ note_ctor("S20146C1", this);} // tgen

static void Test_S20146C1()
{
  extern Class_Descriptor cd_S20146C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20146C1, buf);
    S20146C1 *dp, &lv = *(dp=new (buf) S20146C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20146C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20146C1)");
    check_base_class_offset(lv, (S20146C2_nt*), ABISELECT(24,16), "S20146C1");
    check_base_class_offset(lv, (S20146C3*), 0, "S20146C1");
    check_field_offset(lv, s20146c1f0, ABISELECT(16,12), "S20146C1.s20146c1f0");
    test_class_info(&lv, &cd_S20146C1);
    dp->~S20146C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20146C1(Test_S20146C1, "S20146C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20146C1C1Ev();
extern void _ZN8S20146C1D2Ev();
Name_Map name_map_S20146C1[] = {
  NSPAIR(_ZN8S20146C1C1Ev),
  NSPAIR(_ZN8S20146C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20146C2_nt;
extern VTBL_ENTRY _ZTI11S20146C2_nt[];
extern  VTBL_ENTRY _ZTV11S20146C2_nt[];
extern Class_Descriptor cd_S20146C3;
extern VTBL_ENTRY _ZTI8S20146C3[];
extern  VTBL_ENTRY _ZTV8S20146C3[];
static Base_Class bases_S20146C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20146C2_nt,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20146C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20146C1[];
extern void _ZN8S20146C32v8Ev();
extern void _ZN8S20146C32v9Ev();
extern void _ZN8S20146C33v10Ev();
extern void _ZN8S20146C33v11Ev();
extern void _ZN8S20146C33v12Ev();
extern void _ZN8S20146C33v13Ev();
extern void _ZN8S20146C1D1Ev();
extern void _ZN8S20146C1D0Ev();
extern void _ZN8S20146C12v1Ev();
extern void _ZN8S20146C12v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S20146C1D1Ev,_ZTv0_n12_N8S20146C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20146C1D1Ev,_ZThn16_N8S20146C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20146C1D0Ev,_ZTv0_n12_N8S20146C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S20146C1D0Ev,_ZThn16_N8S20146C1D0Ev)() __attribute__((weak));
extern void _ZN11S20146C2_nt2v3Ev();
extern void _ZN11S20146C2_nt2v4Ev();
extern void _ZN11S20146C2_nt2v5Ev();
extern void _ZN11S20146C2_nt2v6Ev();
extern void _ZN11S20146C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S20146C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20146C1[0]),
  (VTBL_ENTRY)&_ZN8S20146C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20146C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20146C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20146C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20146C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20146C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20146C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20146C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20146C1D1Ev,_ZTv0_n12_N8S20146C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20146C1D0Ev,_ZTv0_n12_N8S20146C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20146C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTV8S20146C1[];
static  VTT_ENTRY vtt_S20146C1[] = {
  {&(_ZTV8S20146C1[3]),  3,28},
  {&(_ZTV8S20146C1[21]),  21,28},
};
extern VTBL_ENTRY _ZTI8S20146C1[];
extern  VTBL_ENTRY _ZTV8S20146C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20146C1[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20146C1D0Ev,_ZTv0_n12_N8S20146C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20146C1D0Ev,_ZThn16_N8S20146C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20146C1D1Ev,_ZTv0_n12_N8S20146C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20146C1D1Ev,_ZThn16_N8S20146C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20146C1 = {  "S20146C1", // class name
  bases_S20146C1, 2,
  &(vtc_S20146C1[0]), // expected_vtbl_contents
  &(vtt_S20146C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20146C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20146C1),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20146C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7559C3  {
  int s7559c3f0;
  virtual  ~S7559C3(); // _ZN7S7559C3D1Ev
  virtual void  v2(); // _ZN7S7559C32v2Ev
  virtual void  v3(); // _ZN7S7559C32v3Ev
  virtual void  v4(); // _ZN7S7559C32v4Ev
  virtual void  v5(); // _ZN7S7559C32v5Ev
  S7559C3(); // tgen
};
//SIG(-1 S7559C3) C1{ vd v1 v2 v3 v4 Fi}


 S7559C3 ::~S7559C3(){ note_dtor("S7559C3", this);}
void  S7559C3 ::v2(){vfunc_called(this, "_ZN7S7559C32v2Ev");}
void  S7559C3 ::v3(){vfunc_called(this, "_ZN7S7559C32v3Ev");}
void  S7559C3 ::v4(){vfunc_called(this, "_ZN7S7559C32v4Ev");}
void  S7559C3 ::v5(){vfunc_called(this, "_ZN7S7559C32v5Ev");}
S7559C3 ::S7559C3(){ note_ctor("S7559C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7559C3C1Ev();
extern void _ZN7S7559C3D1Ev();
Name_Map name_map_S7559C3[] = {
  NSPAIR(_ZN7S7559C3C1Ev),
  NSPAIR(_ZN7S7559C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7559C3[];
extern void _ZN7S7559C3D1Ev();
extern void _ZN7S7559C3D0Ev();
extern void _ZN7S7559C32v2Ev();
extern void _ZN7S7559C32v3Ev();
extern void _ZN7S7559C32v4Ev();
extern void _ZN7S7559C32v5Ev();
static  VTBL_ENTRY vtc_S7559C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7559C3[0]),
  (VTBL_ENTRY)&_ZN7S7559C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7559C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S7559C3[];
extern  VTBL_ENTRY _ZTV7S7559C3[];
Class_Descriptor cd_S7559C3 = {  "S7559C3", // class name
  0,0,//no base classes
  &(vtc_S7559C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7559C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7559C3),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  S7559C2  : virtual S7559C3 {
  __tsi64 s7559c2f0;
  int s7559c2f1;
  virtual void  v6(); // _ZN7S7559C22v6Ev
  virtual void  v7(); // _ZN7S7559C22v7Ev
  virtual void  v8(); // _ZN7S7559C22v8Ev
  virtual void  v9(); // _ZN7S7559C22v9Ev
  virtual void  v10(); // _ZN7S7559C23v10Ev
  virtual void  v11(); // _ZN7S7559C23v11Ev
  virtual void  v12(); // _ZN7S7559C23v12Ev
  ~S7559C2(); // tgen
  S7559C2(); // tgen
};
//SIG(-1 S7559C2) C1{ VBC2{ vd v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S7559C2 ::v6(){vfunc_called(this, "_ZN7S7559C22v6Ev");}
void  S7559C2 ::v7(){vfunc_called(this, "_ZN7S7559C22v7Ev");}
void  S7559C2 ::v8(){vfunc_called(this, "_ZN7S7559C22v8Ev");}
void  S7559C2 ::v9(){vfunc_called(this, "_ZN7S7559C22v9Ev");}
void  S7559C2 ::v10(){vfunc_called(this, "_ZN7S7559C23v10Ev");}
void  S7559C2 ::v11(){vfunc_called(this, "_ZN7S7559C23v11Ev");}
void  S7559C2 ::v12(){vfunc_called(this, "_ZN7S7559C23v12Ev");}
S7559C2 ::~S7559C2(){ note_dtor("S7559C2", this);} // tgen
S7559C2 ::S7559C2(){ note_ctor("S7559C2", this);} // tgen

static void Test_S7559C2()
{
  extern Class_Descriptor cd_S7559C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7559C2, buf);
    S7559C2 *dp, &lv = *(dp=new (buf) S7559C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7559C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7559C2)");
    check_base_class_offset(lv, (S7559C3*), ABISELECT(24,16), "S7559C2");
    check_field_offset(lv, s7559c2f0, ABISELECT(8,4), "S7559C2.s7559c2f0");
    check_field_offset(lv, s7559c2f1, ABISELECT(16,12), "S7559C2.s7559c2f1");
    test_class_info(&lv, &cd_S7559C2);
    dp->~S7559C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7559C2(Test_S7559C2, "S7559C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7559C2C1Ev();
extern void _ZN7S7559C2D1Ev();
Name_Map name_map_S7559C2[] = {
  NSPAIR(_ZN7S7559C2C1Ev),
  NSPAIR(_ZN7S7559C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7559C3;
extern VTBL_ENTRY _ZTI7S7559C3[];
extern  VTBL_ENTRY _ZTV7S7559C3[];
static Base_Class bases_S7559C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7559C3,    ABISELECT(24,16), //bcp->offset
    12, //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 _ZTI7S7559C2[];
extern void _ZN7S7559C22v6Ev();
extern void _ZN7S7559C22v7Ev();
extern void _ZN7S7559C22v8Ev();
extern void _ZN7S7559C22v9Ev();
extern void _ZN7S7559C23v10Ev();
extern void _ZN7S7559C23v11Ev();
extern void _ZN7S7559C23v12Ev();
extern void _ZN7S7559C2D1Ev();
extern void _ZN7S7559C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7559C2D1Ev,_ZTv0_n12_N7S7559C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7559C2D1Ev,_ZThn16_N7S7559C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7559C2D0Ev,_ZTv0_n12_N7S7559C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7559C2D0Ev,_ZThn16_N7S7559C2D0Ev)() __attribute__((weak));
extern void _ZN7S7559C32v2Ev();
extern void _ZN7S7559C32v3Ev();
extern void _ZN7S7559C32v4Ev();
extern void _ZN7S7559C32v5Ev();
static  VTBL_ENTRY vtc_S7559C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7559C2[0]),
  (VTBL_ENTRY)&_ZN7S7559C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7559C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7559C2D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7559C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7559C2D1Ev,_ZTv0_n12_N7S7559C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7559C2D0Ev,_ZTv0_n12_N7S7559C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7559C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7559C2[];
static  VTT_ENTRY vtt_S7559C2[] = {
  {&(_ZTV7S7559C2[3]),  3,25},
  {&(_ZTV7S7559C2[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S7559C2[];
extern  VTBL_ENTRY _ZTV7S7559C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7559C2[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7559C2D0Ev,_ZTv0_n12_N7S7559C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7559C2D0Ev,_ZThn16_N7S7559C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7559C2D1Ev,_ZTv0_n12_N7S7559C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7559C2D1Ev,_ZThn16_N7S7559C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7559C2 = {  "S7559C2", // class name
  bases_S7559C2, 1,
  &(vtc_S7559C2[0]), // expected_vtbl_contents
  &(vtt_S7559C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7559C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7559C2),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7559C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7559C1  : S7559C2 {
  int s7559c1f0;
  virtual  ~S7559C1(); // _ZN7S7559C1D2Ev
  virtual void  v1(); // _ZN7S7559C12v1Ev
  S7559C1(); // tgen
};
//SIG(1 S7559C1) C1{ BC2{ VBC3{ vd v2 v3 v4 v5 Fi} v6 v7 v8 v9 v10 v11 v12 FL Fi} vd v1 Fi}


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

static void Test_S7559C1()
{
  extern Class_Descriptor cd_S7559C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7559C1, buf);
    S7559C1 *dp, &lv = *(dp=new (buf) S7559C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7559C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7559C1)");
    check_base_class_offset(lv, (S7559C3*)(S7559C2*), ABISELECT(24,20), "S7559C1");
    check_base_class_offset(lv, (S7559C2*), 0, "S7559C1");
    check_field_offset(lv, s7559c1f0, ABISELECT(20,16), "S7559C1.s7559c1f0");
    test_class_info(&lv, &cd_S7559C1);
    dp->~S7559C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7559C1(Test_S7559C1, "S7559C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7559C1C1Ev();
extern void _ZN7S7559C1D2Ev();
Name_Map name_map_S7559C1[] = {
  NSPAIR(_ZN7S7559C1C1Ev),
  NSPAIR(_ZN7S7559C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7559C3;
extern VTBL_ENTRY _ZTI7S7559C3[];
extern  VTBL_ENTRY _ZTV7S7559C3[];
extern Class_Descriptor cd_S7559C2;
extern VTBL_ENTRY _ZTI7S7559C2[];
extern  VTBL_ENTRY _ZTV7S7559C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7559C2[];
static Base_Class bases_S7559C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7559C3,    ABISELECT(24,20), //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_S7559C2,    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 _ZTI7S7559C1[];
extern void _ZN7S7559C22v6Ev();
extern void _ZN7S7559C22v7Ev();
extern void _ZN7S7559C22v8Ev();
extern void _ZN7S7559C22v9Ev();
extern void _ZN7S7559C23v10Ev();
extern void _ZN7S7559C23v11Ev();
extern void _ZN7S7559C23v12Ev();
extern void _ZN7S7559C1D1Ev();
extern void _ZN7S7559C1D0Ev();
extern void _ZN7S7559C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S7559C1D1Ev,_ZTv0_n12_N7S7559C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7559C1D1Ev,_ZThn20_N7S7559C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7559C1D0Ev,_ZTv0_n12_N7S7559C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7559C1D0Ev,_ZThn20_N7S7559C1D0Ev)() __attribute__((weak));
extern void _ZN7S7559C32v2Ev();
extern void _ZN7S7559C32v3Ev();
extern void _ZN7S7559C32v4Ev();
extern void _ZN7S7559C32v5Ev();
static  VTBL_ENTRY vtc_S7559C1[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7559C1[0]),
  (VTBL_ENTRY)&_ZN7S7559C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7559C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7559C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7559C12v1Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI7S7559C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7559C1D1Ev,_ZTv0_n12_N7S7559C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7559C1D0Ev,_ZTv0_n12_N7S7559C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7559C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7559C1[];
extern void _ZN7S7559C22v6Ev();
extern void _ZN7S7559C22v7Ev();
extern void _ZN7S7559C22v8Ev();
extern void _ZN7S7559C22v9Ev();
extern void _ZN7S7559C23v10Ev();
extern void _ZN7S7559C23v11Ev();
extern void _ZN7S7559C23v12Ev();
extern void _ZN7S7559C2D1Ev();
extern void _ZN7S7559C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7559C2__7S7559C1[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7559C2[0]),
  (VTBL_ENTRY)&_ZN7S7559C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7559C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7559C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7559C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7559C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7559C2D1Ev,_ZTv0_n12_N7S7559C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7559C2D1Ev,_ZThn20_N7S7559C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7559C2D0Ev,_ZTv0_n12_N7S7559C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7559C2D0Ev,_ZThn20_N7S7559C2D0Ev)() __attribute__((weak));
extern void _ZN7S7559C32v2Ev();
extern void _ZN7S7559C32v3Ev();
extern void _ZN7S7559C32v4Ev();
extern void _ZN7S7559C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7559C3__7S7559C2__7S7559C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI7S7559C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7559C2D1Ev,_ZTv0_n12_N7S7559C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7559C2D0Ev,_ZTv0_n12_N7S7559C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7559C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7559C32v5Ev,
};
static  VTT_ENTRY vtt_S7559C1[] = {
  {&(_ZTV7S7559C1[3]),  3,26},
  {&(_tg__ZTV7S7559C2__7S7559C1[3]),  3,12},
  {&(_tg__ZTV7S7559C3__7S7559C2__7S7559C1[7]),  7,13},
  {&(_ZTV7S7559C1[20]),  20,26},
};
extern VTBL_ENTRY _ZTI7S7559C1[];
extern  VTBL_ENTRY _ZTV7S7559C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7559C1[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7559C2D0Ev,_ZTv0_n12_N7S7559C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7559C2D0Ev,_ZThn20_N7S7559C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7559C2D1Ev,_ZTv0_n12_N7S7559C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7559C2D1Ev,_ZThn20_N7S7559C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7559C1D0Ev,_ZTv0_n12_N7S7559C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7559C1D0Ev,_ZThn20_N7S7559C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7559C1D1Ev,_ZTv0_n12_N7S7559C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7559C1D1Ev,_ZThn20_N7S7559C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7559C1 = {  "S7559C1", // class name
  bases_S7559C1, 2,
  &(vtc_S7559C1[0]), // expected_vtbl_contents
  &(vtt_S7559C1[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7559C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7559C1),26, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7559C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18233C3  {
  int s18233c3f0[2];
  char s18233c3f1;
  int s18233c3f2[2];
  ::S4224C19_nt s18233c3f3;
  void  mf18233c3(); // _ZN8S18233C39mf18233c3Ev
};
//SIG(-1 S18233C3) C1{ m Fi[2] Fc Fi[2] FC2{ m Fp Fi FC3{ m}}}


void  S18233C3 ::mf18233c3(){}

static void Test_S18233C3()
{
  {
    init_simple_test("S18233C3");
    S18233C3 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S18233C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18233C3)");
    check_field_offset(lv, s18233c3f0, 0, "S18233C3.s18233c3f0");
    check_field_offset(lv, s18233c3f1, 8, "S18233C3.s18233c3f1");
    check_field_offset(lv, s18233c3f2, 12, "S18233C3.s18233c3f2");
    check_field_offset(lv, s18233c3f3, ABISELECT(24,20), "S18233C3.s18233c3f3");
  }
}
static Arrange_To_Call_Me vS18233C3(Test_S18233C3, "S18233C3", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18233C2  {
  int s18233c2f0;
  ::S18233C3 s18233c2f1;
  void  mf18233c2(); // _ZN8S18233C29mf18233c2Ev
};
//SIG(-1 S18233C2) C1{ m Fi FC2{ m Fi[2] Fc Fi[2] FC3{ m Fp Fi FC4{ m}}}}


void  S18233C2 ::mf18233c2(){}

static void Test_S18233C2()
{
  {
    init_simple_test("S18233C2");
    S18233C2 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S18233C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18233C2)");
    check_field_offset(lv, s18233c2f0, 0, "S18233C2.s18233c2f0");
    check_field_offset(lv, s18233c2f1, ABISELECT(8,4), "S18233C2.s18233c2f1");
  }
}
static Arrange_To_Call_Me vS18233C2(Test_S18233C2, "S18233C2", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18233C1  {
  void *s18233c1f0[3];
  ::S18233C2 s18233c1f1;
  char s18233c1f2[2];
  void  mf18233c1(); // _ZN8S18233C19mf18233c1Ev
};
//SIG(1 S18233C1) C1{ m Fp[3] FC2{ m Fi FC3{ m Fi[2] Fc Fi[2] FC4{ m Fp Fi FC5{ m}}}} Fc[2]}


void  S18233C1 ::mf18233c1(){}

static void Test_S18233C1()
{
  {
    init_simple_test("S18233C1");
    S18233C1 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S18233C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18233C1)");
    check_field_offset(lv, s18233c1f0, 0, "S18233C1.s18233c1f0");
    check_field_offset(lv, s18233c1f1, ABISELECT(24,12), "S18233C1.s18233c1f1");
    check_field_offset(lv, s18233c1f2, ABISELECT(72,48), "S18233C1.s18233c1f2");
  }
}
static Arrange_To_Call_Me vS18233C1(Test_S18233C1, "S18233C1", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20171C2  {
  virtual void  v3(); // _ZN8S20171C22v3Ev
  ~S20171C2(); // tgen
  S20171C2(); // tgen
};
//SIG(-1 S20171C2) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20171C2C1Ev();
extern void _ZN8S20171C2D1Ev();
Name_Map name_map_S20171C2[] = {
  NSPAIR(_ZN8S20171C2C1Ev),
  NSPAIR(_ZN8S20171C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20171C2[];
extern void _ZN8S20171C22v3Ev();
static  VTBL_ENTRY vtc_S20171C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20171C2[0]),
  (VTBL_ENTRY)&_ZN8S20171C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S20171C2[];
extern  VTBL_ENTRY _ZTV8S20171C2[];
Class_Descriptor cd_S20171C2 = {  "S20171C2", // class name
  0,0,//no base classes
  &(vtc_S20171C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20171C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20171C2),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  S20171C4  {
  __tsi64 s20171c4f0;
  virtual void  v4(); // _ZN8S20171C42v4Ev
  virtual void  v5(); // _ZN8S20171C42v5Ev
  virtual void  v6(); // _ZN8S20171C42v6Ev
  virtual void  v7(); // _ZN8S20171C42v7Ev
  virtual void  v8(); // _ZN8S20171C42v8Ev
  virtual void  v9(); // _ZN8S20171C42v9Ev
  ~S20171C4(); // tgen
  S20171C4(); // tgen
};
//SIG(-1 S20171C4) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S20171C4 ::v4(){vfunc_called(this, "_ZN8S20171C42v4Ev");}
void  S20171C4 ::v5(){vfunc_called(this, "_ZN8S20171C42v5Ev");}
void  S20171C4 ::v6(){vfunc_called(this, "_ZN8S20171C42v6Ev");}
void  S20171C4 ::v7(){vfunc_called(this, "_ZN8S20171C42v7Ev");}
void  S20171C4 ::v8(){vfunc_called(this, "_ZN8S20171C42v8Ev");}
void  S20171C4 ::v9(){vfunc_called(this, "_ZN8S20171C42v9Ev");}
S20171C4 ::~S20171C4(){ note_dtor("S20171C4", this);} // tgen
S20171C4 ::S20171C4(){ note_ctor("S20171C4", this);} // tgen

static void Test_S20171C4()
{
  extern Class_Descriptor cd_S20171C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20171C4, buf);
    S20171C4 *dp, &lv = *(dp=new (buf) S20171C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20171C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20171C4)");
    check_field_offset(lv, s20171c4f0, ABISELECT(8,4), "S20171C4.s20171c4f0");
    test_class_info(&lv, &cd_S20171C4);
    dp->~S20171C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20171C4(Test_S20171C4, "S20171C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20171C4C1Ev();
extern void _ZN8S20171C4D1Ev();
Name_Map name_map_S20171C4[] = {
  NSPAIR(_ZN8S20171C4C1Ev),
  NSPAIR(_ZN8S20171C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20171C4[];
extern void _ZN8S20171C42v4Ev();
extern void _ZN8S20171C42v5Ev();
extern void _ZN8S20171C42v6Ev();
extern void _ZN8S20171C42v7Ev();
extern void _ZN8S20171C42v8Ev();
extern void _ZN8S20171C42v9Ev();
static  VTBL_ENTRY vtc_S20171C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20171C4[0]),
  (VTBL_ENTRY)&_ZN8S20171C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v9Ev,
};
extern VTBL_ENTRY _ZTI8S20171C4[];
extern  VTBL_ENTRY _ZTV8S20171C4[];
Class_Descriptor cd_S20171C4 = {  "S20171C4", // class name
  0,0,//no base classes
  &(vtc_S20171C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20171C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20171C4),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  S20171C3  : virtual S20171C4 {
  virtual void  v10(); // _ZN8S20171C33v10Ev
  virtual void  v11(); // _ZN8S20171C33v11Ev
  virtual void  v12(); // _ZN8S20171C33v12Ev
  virtual void  v13(); // _ZN8S20171C33v13Ev
  virtual void  v14(); // _ZN8S20171C33v14Ev
  ~S20171C3(); // tgen
  S20171C3(); // tgen
};
//SIG(-1 S20171C3) C1{ VBC2{ v6 v7 v8 v9 v10 v11 FL} v1 v2 v3 v4 v5}


void  S20171C3 ::v10(){vfunc_called(this, "_ZN8S20171C33v10Ev");}
void  S20171C3 ::v11(){vfunc_called(this, "_ZN8S20171C33v11Ev");}
void  S20171C3 ::v12(){vfunc_called(this, "_ZN8S20171C33v12Ev");}
void  S20171C3 ::v13(){vfunc_called(this, "_ZN8S20171C33v13Ev");}
void  S20171C3 ::v14(){vfunc_called(this, "_ZN8S20171C33v14Ev");}
S20171C3 ::~S20171C3(){ note_dtor("S20171C3", this);} // tgen
S20171C3 ::S20171C3(){ note_ctor("S20171C3", this);} // tgen

static void Test_S20171C3()
{
  extern Class_Descriptor cd_S20171C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20171C3, buf);
    S20171C3 *dp, &lv = *(dp=new (buf) S20171C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20171C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20171C3)");
    check_base_class_offset(lv, (S20171C4*), ABISELECT(8,4), "S20171C3");
    test_class_info(&lv, &cd_S20171C3);
    dp->~S20171C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20171C3(Test_S20171C3, "S20171C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20171C3C1Ev();
extern void _ZN8S20171C3D1Ev();
Name_Map name_map_S20171C3[] = {
  NSPAIR(_ZN8S20171C3C1Ev),
  NSPAIR(_ZN8S20171C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20171C4;
extern VTBL_ENTRY _ZTI8S20171C4[];
extern  VTBL_ENTRY _ZTV8S20171C4[];
static Base_Class bases_S20171C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20171C4,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20171C3[];
extern void _ZN8S20171C33v10Ev();
extern void _ZN8S20171C33v11Ev();
extern void _ZN8S20171C33v12Ev();
extern void _ZN8S20171C33v13Ev();
extern void _ZN8S20171C33v14Ev();
extern void _ZN8S20171C42v4Ev();
extern void _ZN8S20171C42v5Ev();
extern void _ZN8S20171C42v6Ev();
extern void _ZN8S20171C42v7Ev();
extern void _ZN8S20171C42v8Ev();
extern void _ZN8S20171C42v9Ev();
static  VTBL_ENTRY vtc_S20171C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20171C3[0]),
  (VTBL_ENTRY)&_ZN8S20171C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20171C3[0]),
  (VTBL_ENTRY)&_ZN8S20171C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v9Ev,
};
extern VTBL_ENTRY _ZTV8S20171C3[];
static  VTT_ENTRY vtt_S20171C3[] = {
  {&(_ZTV8S20171C3[3]),  3,22},
  {&(_ZTV8S20171C3[16]),  16,22},
};
extern VTBL_ENTRY _ZTI8S20171C3[];
extern  VTBL_ENTRY _ZTV8S20171C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20171C3[];
Class_Descriptor cd_S20171C3 = {  "S20171C3", // class name
  bases_S20171C3, 1,
  &(vtc_S20171C3[0]), // expected_vtbl_contents
  &(vtt_S20171C3[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20171C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20171C3),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20171C3),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  S20171C1  : virtual S20171C2 , virtual S20171C3 {
  virtual void  v1(); // _ZN8S20171C12v1Ev
  virtual void  v2(); // _ZN8S20171C12v2Ev
  ~S20171C1(); // tgen
  S20171C1(); // tgen
};
//SIG(1 S20171C1) C1{ VBC2{ v3} VBC3{ VBC4{ v4 v5 v6 v7 v8 v9 FL} v10 v11 v12 v13 v14} v1 v2}


void  S20171C1 ::v1(){vfunc_called(this, "_ZN8S20171C12v1Ev");}
void  S20171C1 ::v2(){vfunc_called(this, "_ZN8S20171C12v2Ev");}
S20171C1 ::~S20171C1(){ note_dtor("S20171C1", this);} // tgen
S20171C1 ::S20171C1(){ note_ctor("S20171C1", this);} // tgen

static void Test_S20171C1()
{
  extern Class_Descriptor cd_S20171C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20171C1, buf);
    S20171C1 *dp, &lv = *(dp=new (buf) S20171C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20171C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20171C1)");
    check_base_class_offset(lv, (S20171C2*), 0, "S20171C1");
    check_base_class_offset(lv, (S20171C4*)(S20171C3*), ABISELECT(16,8), "S20171C1");
    check_base_class_offset(lv, (S20171C3*), ABISELECT(8,4), "S20171C1");
    test_class_info(&lv, &cd_S20171C1);
    dp->~S20171C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20171C1(Test_S20171C1, "S20171C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20171C1C1Ev();
extern void _ZN8S20171C1D1Ev();
Name_Map name_map_S20171C1[] = {
  NSPAIR(_ZN8S20171C1C1Ev),
  NSPAIR(_ZN8S20171C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20171C2;
extern VTBL_ENTRY _ZTI8S20171C2[];
extern  VTBL_ENTRY _ZTV8S20171C2[];
extern Class_Descriptor cd_S20171C4;
extern VTBL_ENTRY _ZTI8S20171C4[];
extern  VTBL_ENTRY _ZTV8S20171C4[];
extern Class_Descriptor cd_S20171C3;
extern VTBL_ENTRY _ZTI8S20171C3[];
extern  VTBL_ENTRY _ZTV8S20171C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20171C3[];
static Base_Class bases_S20171C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20171C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20171C4,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20171C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    8, //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 _ZTI8S20171C1[];
extern void _ZN8S20171C22v3Ev();
extern void _ZN8S20171C12v1Ev();
extern void _ZN8S20171C12v2Ev();
extern void _ZN8S20171C33v10Ev();
extern void _ZN8S20171C33v11Ev();
extern void _ZN8S20171C33v12Ev();
extern void _ZN8S20171C33v13Ev();
extern void _ZN8S20171C33v14Ev();
extern void _ZN8S20171C42v4Ev();
extern void _ZN8S20171C42v5Ev();
extern void _ZN8S20171C42v6Ev();
extern void _ZN8S20171C42v7Ev();
extern void _ZN8S20171C42v8Ev();
extern void _ZN8S20171C42v9Ev();
static  VTBL_ENTRY vtc_S20171C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20171C1[0]),
  (VTBL_ENTRY)&_ZN8S20171C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20171C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20171C12v2Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20171C1[0]),
  (VTBL_ENTRY)&_ZN8S20171C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20171C1[0]),
  (VTBL_ENTRY)&_ZN8S20171C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v9Ev,
};
extern VTBL_ENTRY _ZTV8S20171C1[];
extern void _ZN8S20171C33v10Ev();
extern void _ZN8S20171C33v11Ev();
extern void _ZN8S20171C33v12Ev();
extern void _ZN8S20171C33v13Ev();
extern void _ZN8S20171C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20171C3__8S20171C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20171C3[0]),
  (VTBL_ENTRY)&_ZN8S20171C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20171C33v14Ev,
};
extern void _ZN8S20171C42v4Ev();
extern void _ZN8S20171C42v5Ev();
extern void _ZN8S20171C42v6Ev();
extern void _ZN8S20171C42v7Ev();
extern void _ZN8S20171C42v8Ev();
extern void _ZN8S20171C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20171C4__8S20171C3__8S20171C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20171C3[0]),
  (VTBL_ENTRY)&_ZN8S20171C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20171C42v9Ev,
};
static  VTT_ENTRY vtt_S20171C1[] = {
  {&(_ZTV8S20171C1[6]),  6,36},
  {&(_ZTV8S20171C1[6]),  6,36},
  {&(_ZTV8S20171C1[17]),  17,36},
  {&(_ZTV8S20171C1[30]),  30,36},
  {&(_tg__ZTV8S20171C3__8S20171C1[3]),  3,8},
  {&(_tg__ZTV8S20171C4__8S20171C3__8S20171C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20171C1[];
extern  VTBL_ENTRY _ZTV8S20171C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20171C1[];
Class_Descriptor cd_S20171C1 = {  "S20171C1", // class name
  bases_S20171C1, 3,
  &(vtc_S20171C1[0]), // expected_vtbl_contents
  &(vtt_S20171C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20171C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20171C1),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20171C1),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  S17253C3_nt  {
  ::S4224C25 s17253c3f0;
  void  mf17253c3(); // _ZN11S17253C3_nt9mf17253c3Ev
};
//SIG(-1 S17253C3_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}}}


void  S17253C3_nt ::mf17253c3(){}

//skip512 S17253C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17253C1  {
  int s17253c1f0[5];
  char s17253c1f1;
  int s17253c1f2;
  char s17253c1f3;
  ::S21713C14_nt s17253c1f4;
  ::S17253C3_nt s17253c1f5;
  int s17253c1f6;
  void  mf17253c1(); // _ZN8S17253C19mf17253c1Ev
};
//SIG(1 S17253C1) C1{ m Fi[5] Fc Fi Fc FC2{ FL[4]} FC3{ m FC4{ m Fp Fi FC5{ m} FC6{ m}}} Fi}


void  S17253C1 ::mf17253c1(){}

static void Test_S17253C1()
{
  {
    init_simple_test("S17253C1");
    S17253C1 lv;
    check2(sizeof(lv), ABISELECT(88,80), "sizeof(S17253C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17253C1)");
    check_field_offset(lv, s17253c1f0, 0, "S17253C1.s17253c1f0");
    check_field_offset(lv, s17253c1f1, 20, "S17253C1.s17253c1f1");
    check_field_offset(lv, s17253c1f2, 24, "S17253C1.s17253c1f2");
    check_field_offset(lv, s17253c1f3, 28, "S17253C1.s17253c1f3");
    check_field_offset(lv, s17253c1f4, 32, "S17253C1.s17253c1f4");
    check_field_offset(lv, s17253c1f5, 64, "S17253C1.s17253c1f5");
    check_field_offset(lv, s17253c1f6, ABISELECT(80,76), "S17253C1.s17253c1f6");
  }
}
static Arrange_To_Call_Me vS17253C1(Test_S17253C1, "S17253C1", ABISELECT(88,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7133C2  {
  void *s7133c2f0;
  char s7133c2f1;
  virtual void  v8(); // _ZN7S7133C22v8Ev
  virtual void  v9(); // _ZN7S7133C22v9Ev
  ~S7133C2(); // tgen
  S7133C2(); // tgen
};
//SIG(-1 S7133C2) C1{ v1 v2 Fp Fc}


void  S7133C2 ::v8(){vfunc_called(this, "_ZN7S7133C22v8Ev");}
void  S7133C2 ::v9(){vfunc_called(this, "_ZN7S7133C22v9Ev");}
S7133C2 ::~S7133C2(){ note_dtor("S7133C2", this);} // tgen
S7133C2 ::S7133C2(){ note_ctor("S7133C2", this);} // tgen

static void Test_S7133C2()
{
  extern Class_Descriptor cd_S7133C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7133C2, buf);
    S7133C2 *dp, &lv = *(dp=new (buf) S7133C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7133C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7133C2)");
    check_field_offset(lv, s7133c2f0, ABISELECT(8,4), "S7133C2.s7133c2f0");
    check_field_offset(lv, s7133c2f1, ABISELECT(16,8), "S7133C2.s7133c2f1");
    test_class_info(&lv, &cd_S7133C2);
    dp->~S7133C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7133C2(Test_S7133C2, "S7133C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7133C2C1Ev();
extern void _ZN7S7133C2D1Ev();
Name_Map name_map_S7133C2[] = {
  NSPAIR(_ZN7S7133C2C1Ev),
  NSPAIR(_ZN7S7133C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7133C2[];
extern void _ZN7S7133C22v8Ev();
extern void _ZN7S7133C22v9Ev();
static  VTBL_ENTRY vtc_S7133C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7133C2[0]),
  (VTBL_ENTRY)&_ZN7S7133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7133C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S7133C2[];
extern  VTBL_ENTRY _ZTV7S7133C2[];
Class_Descriptor cd_S7133C2 = {  "S7133C2", // class name
  0,0,//no base classes
  &(vtc_S7133C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7133C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7133C2),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  S7133C3  : S7133C2 {
  virtual void  v10(); // _ZN7S7133C33v10Ev
  ~S7133C3(); // tgen
  S7133C3(); // tgen
};
//SIG(-1 S7133C3) C1{ BC2{ v2 v3 Fp Fc} v1}


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

static void Test_S7133C3()
{
  extern Class_Descriptor cd_S7133C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7133C3, buf);
    S7133C3 *dp, &lv = *(dp=new (buf) S7133C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7133C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7133C3)");
    check_base_class_offset(lv, (S7133C2*), 0, "S7133C3");
    test_class_info(&lv, &cd_S7133C3);
    dp->~S7133C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7133C3(Test_S7133C3, "S7133C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7133C3C1Ev();
extern void _ZN7S7133C3D1Ev();
Name_Map name_map_S7133C3[] = {
  NSPAIR(_ZN7S7133C3C1Ev),
  NSPAIR(_ZN7S7133C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7133C2;
extern VTBL_ENTRY _ZTI7S7133C2[];
extern  VTBL_ENTRY _ZTV7S7133C2[];
static Base_Class bases_S7133C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7133C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7133C3[];
extern void _ZN7S7133C22v8Ev();
extern void _ZN7S7133C22v9Ev();
extern void _ZN7S7133C33v10Ev();
static  VTBL_ENTRY vtc_S7133C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7133C3[0]),
  (VTBL_ENTRY)&_ZN7S7133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7133C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7133C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S7133C3[];
extern  VTBL_ENTRY _ZTV7S7133C3[];
Class_Descriptor cd_S7133C3 = {  "S7133C3", // class name
  bases_S7133C3, 1,
  &(vtc_S7133C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7133C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7133C3),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  S7133C1  : S7133C2 , S7133C3 {
  short s7133c1f0[7];
  int s7133c1f1;
  virtual  ~S7133C1(); // _ZN7S7133C1D1Ev
  virtual void  v1(); // _ZN7S7133C12v1Ev
  virtual void  v2(); // _ZN7S7133C12v2Ev
  virtual void  v3(); // _ZN7S7133C12v3Ev
  virtual void  v4(); // _ZN7S7133C12v4Ev
  virtual void  v5(); // _ZN7S7133C12v5Ev
  virtual void  v6(); // _ZN7S7133C12v6Ev
  virtual void  v7(); // _ZN7S7133C12v7Ev
  S7133C1(); // tgen
};
//SIG(1 S7133C1) C1{ BC2{ v8 v9 Fp Fc} BC3{ BC2 v10} vd v1 v2 v3 v4 v5 v6 v7 Fs[7] Fi}


 S7133C1 ::~S7133C1(){ note_dtor("S7133C1", this);}
void  S7133C1 ::v1(){vfunc_called(this, "_ZN7S7133C12v1Ev");}
void  S7133C1 ::v2(){vfunc_called(this, "_ZN7S7133C12v2Ev");}
void  S7133C1 ::v3(){vfunc_called(this, "_ZN7S7133C12v3Ev");}
void  S7133C1 ::v4(){vfunc_called(this, "_ZN7S7133C12v4Ev");}
void  S7133C1 ::v5(){vfunc_called(this, "_ZN7S7133C12v5Ev");}
void  S7133C1 ::v6(){vfunc_called(this, "_ZN7S7133C12v6Ev");}
void  S7133C1 ::v7(){vfunc_called(this, "_ZN7S7133C12v7Ev");}
S7133C1 ::S7133C1(){ note_ctor("S7133C1", this);} // tgen

static void Test_S7133C1()
{
  extern Class_Descriptor cd_S7133C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S7133C1, buf);
    S7133C1 *dp, &lv = *(dp=new (buf) S7133C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7133C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7133C1)");
    /*is_ambiguous_... S7133C1::S7133C2 */ AMB_check_base_class_offset(lv, (S7133C2*), 0, "S7133C1");
    check_base_class_offset(lv, (S7133C2*)(S7133C3*), ABISELECT(24,12), "S7133C1");
    check_base_class_offset(lv, (S7133C3*), ABISELECT(24,12), "S7133C1");
    check_field_offset(lv, s7133c1f0, ABISELECT(42,22), "S7133C1.s7133c1f0");
    check_field_offset(lv, s7133c1f1, ABISELECT(56,36), "S7133C1.s7133c1f1");
    test_class_info(&lv, &cd_S7133C1);
    dp->~S7133C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7133C1(Test_S7133C1, "S7133C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S7133C1C1Ev();
extern void _ZN7S7133C1D1Ev();
Name_Map name_map_S7133C1[] = {
  NSPAIR(_ZN7S7133C1C1Ev),
  NSPAIR(_ZN7S7133C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7133C2;
extern VTBL_ENTRY _ZTI7S7133C2[];
extern  VTBL_ENTRY _ZTV7S7133C2[];
extern Class_Descriptor cd_S7133C2;
extern VTBL_ENTRY _ZTI7S7133C2[];
extern  VTBL_ENTRY _ZTV7S7133C2[];
extern Class_Descriptor cd_S7133C3;
extern VTBL_ENTRY _ZTI7S7133C3[];
extern  VTBL_ENTRY _ZTV7S7133C3[];
static Base_Class bases_S7133C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7133C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7133C2,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7133C3,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7133C1[];
extern void _ZN7S7133C22v8Ev();
extern void _ZN7S7133C22v9Ev();
extern void _ZN7S7133C1D1Ev();
extern void _ZN7S7133C1D0Ev();
extern void _ZN7S7133C12v1Ev();
extern void _ZN7S7133C12v2Ev();
extern void _ZN7S7133C12v3Ev();
extern void _ZN7S7133C12v4Ev();
extern void _ZN7S7133C12v5Ev();
extern void _ZN7S7133C12v6Ev();
extern void _ZN7S7133C12v7Ev();
extern void _ZN7S7133C22v8Ev();
extern void _ZN7S7133C22v9Ev();
extern void _ZN7S7133C33v10Ev();
static  VTBL_ENTRY vtc_S7133C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7133C1[0]),
  (VTBL_ENTRY)&_ZN7S7133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7133C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7133C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7133C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7133C12v7Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7133C1[0]),
  (VTBL_ENTRY)&_ZN7S7133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7133C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7133C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S7133C1[];
extern  VTBL_ENTRY _ZTV7S7133C1[];
Class_Descriptor cd_S7133C1 = {  "S7133C1", // class name
  bases_S7133C1, 3,
  &(vtc_S7133C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S7133C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7133C1),18, //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  S15067C1  {
  char s15067c1f0;
  ::S4224C36 s15067c1f1;
  ::S5309C14_nt s15067c1f2;
  ::S4520C15_nt s15067c1f3;
  void *s15067c1f4[2];
  int s15067c1f5;
  void  mf15067c1(); // _ZN8S15067C19mf15067c1Ev
};
//SIG(1 S15067C1) C1{ m Fc FC2{ m Fp Fi[2] FC3{ m}} FC4{ m Fp[2]} FC5{ m Fp[2]} Fp[2] Fi}


void  S15067C1 ::mf15067c1(){}

static void Test_S15067C1()
{
  {
    init_simple_test("S15067C1");
    S15067C1 lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S15067C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15067C1)");
    check_field_offset(lv, s15067c1f0, 0, "S15067C1.s15067c1f0");
    check_field_offset(lv, s15067c1f1, ABISELECT(8,4), "S15067C1.s15067c1f1");
    check_field_offset(lv, s15067c1f2, ABISELECT(32,20), "S15067C1.s15067c1f2");
    check_field_offset(lv, s15067c1f3, ABISELECT(48,28), "S15067C1.s15067c1f3");
    check_field_offset(lv, s15067c1f4, ABISELECT(64,36), "S15067C1.s15067c1f4");
    check_field_offset(lv, s15067c1f5, ABISELECT(80,44), "S15067C1.s15067c1f5");
  }
}
static Arrange_To_Call_Me vS15067C1(Test_S15067C1, "S15067C1", ABISELECT(88,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2691C2  : S21713C8_nt {
};
//SIG(-1 S2691C2) C1{ BC2{ m Fi}}



static void Test_S2691C2()
{
  extern Class_Descriptor cd_S2691C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2691C2, buf);
    S2691C2 &lv = *(new (buf) S2691C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2691C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2691C2)");
    check_base_class_offset(lv, (S21713C8_nt*), 0, "S2691C2");
    test_class_info(&lv, &cd_S2691C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2691C2(Test_S2691C2, "S2691C2", 4);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2691C4_nt  {
  int s2691c4f0;
  char s2691c4f1;
  void  mf2691c4(); // _ZN10S2691C4_nt8mf2691c4Ev
};
//SIG(-1 S2691C4_nt) C1{ m Fi Fc}


void  S2691C4_nt ::mf2691c4(){}

//skip512 S2691C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2691C1  : S2691C2 {
  int s2691c1f0[2];
  ::S2691C4_nt s2691c1f1;
  ::S2650C17 s2691c1f2;
  int s2691c1f3;
  ::S2691C4_nt s2691c1f4;
  ::S2650C17 s2691c1f5;
};
//SIG(1 S2691C1) C1{ BC2{ BC3{ m Fi}} Fi[2] FC4{ m Fi Fc} FC5{ m FC6{ m Fp}} Fi FC4 FC5}



static void Test_S2691C1()
{
  extern Class_Descriptor cd_S2691C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S2691C1, buf);
    S2691C1 &lv = *(new (buf) S2691C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S2691C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2691C1)");
    check_base_class_offset(lv, (S21713C8_nt*)(S2691C2*), 0, "S2691C1");
    check_base_class_offset(lv, (S2691C2*), 0, "S2691C1");
    check_field_offset(lv, s2691c1f0, 4, "S2691C1.s2691c1f0");
    check_field_offset(lv, s2691c1f1, 12, "S2691C1.s2691c1f1");
    check_field_offset(lv, s2691c1f2, ABISELECT(24,20), "S2691C1.s2691c1f2");
    check_field_offset(lv, s2691c1f3, ABISELECT(32,24), "S2691C1.s2691c1f3");
    check_field_offset(lv, s2691c1f4, ABISELECT(36,28), "S2691C1.s2691c1f4");
    check_field_offset(lv, s2691c1f5, ABISELECT(48,36), "S2691C1.s2691c1f5");
    test_class_info(&lv, &cd_S2691C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2691C1(Test_S2691C1, "S2691C1", ABISELECT(56,40));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S10000C2  {
  int s10000c2f0;
  void *s10000c2f1[34];
  virtual  ~S10000C2(); // _ZN8S10000C2D1Ev
  virtual void  v6(); // _ZN8S10000C22v6Ev
  virtual void  v7(); // _ZN8S10000C22v7Ev
  virtual void  v8(); // _ZN8S10000C22v8Ev
  virtual void  v9(); // _ZN8S10000C22v9Ev
  virtual void  v10(); // _ZN8S10000C23v10Ev
  virtual void  v11(); // _ZN8S10000C23v11Ev
  S10000C2(); // tgen
};
//SIG(-1 S10000C2) C1{ vd v1 v2 v3 v4 v5 v6 Fi Fp[34]}


 S10000C2 ::~S10000C2(){ note_dtor("S10000C2", this);}
void  S10000C2 ::v6(){vfunc_called(this, "_ZN8S10000C22v6Ev");}
void  S10000C2 ::v7(){vfunc_called(this, "_ZN8S10000C22v7Ev");}
void  S10000C2 ::v8(){vfunc_called(this, "_ZN8S10000C22v8Ev");}
void  S10000C2 ::v9(){vfunc_called(this, "_ZN8S10000C22v9Ev");}
void  S10000C2 ::v10(){vfunc_called(this, "_ZN8S10000C23v10Ev");}
void  S10000C2 ::v11(){vfunc_called(this, "_ZN8S10000C23v11Ev");}
S10000C2 ::S10000C2(){ note_ctor("S10000C2", this);} // tgen

static void Test_S10000C2()
{
  extern Class_Descriptor cd_S10000C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[37];
    init_test(&cd_S10000C2, buf);
    S10000C2 *dp, &lv = *(dp=new (buf) S10000C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,144), "sizeof(S10000C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10000C2)");
    check_field_offset(lv, s10000c2f0, ABISELECT(8,4), "S10000C2.s10000c2f0");
    check_field_offset(lv, s10000c2f1, ABISELECT(16,8), "S10000C2.s10000c2f1");
    test_class_info(&lv, &cd_S10000C2);
    dp->~S10000C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10000C2(Test_S10000C2, "S10000C2", ABISELECT(288,144));

#else // __cplusplus

extern void _ZN8S10000C2C1Ev();
extern void _ZN8S10000C2D1Ev();
Name_Map name_map_S10000C2[] = {
  NSPAIR(_ZN8S10000C2C1Ev),
  NSPAIR(_ZN8S10000C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10000C2[];
extern void _ZN8S10000C2D1Ev();
extern void _ZN8S10000C2D0Ev();
extern void _ZN8S10000C22v6Ev();
extern void _ZN8S10000C22v7Ev();
extern void _ZN8S10000C22v8Ev();
extern void _ZN8S10000C22v9Ev();
extern void _ZN8S10000C23v10Ev();
extern void _ZN8S10000C23v11Ev();
static  VTBL_ENTRY vtc_S10000C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10000C2[0]),
  (VTBL_ENTRY)&_ZN8S10000C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10000C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10000C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10000C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S10000C2[];
extern  VTBL_ENTRY _ZTV8S10000C2[];
Class_Descriptor cd_S10000C2 = {  "S10000C2", // class name
  0,0,//no base classes
  &(vtc_S10000C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,144), // object size
  NSPAIRA(_ZTI8S10000C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10000C2),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  S10000C1  : S10000C2 {
  int s10000c1f0[2];
  virtual void  v1(); // _ZN8S10000C12v1Ev
  virtual void  v2(); // _ZN8S10000C12v2Ev
  virtual void  v3(); // _ZN8S10000C12v3Ev
  virtual void  v4(); // _ZN8S10000C12v4Ev
  virtual void  v5(); // _ZN8S10000C12v5Ev
  ~S10000C1(); // tgen
  S10000C1(); // tgen
};
//SIG(1 S10000C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 Fi Fp[34]} v1 v2 v3 v4 v5 Fi[2]}


void  S10000C1 ::v1(){vfunc_called(this, "_ZN8S10000C12v1Ev");}
void  S10000C1 ::v2(){vfunc_called(this, "_ZN8S10000C12v2Ev");}
void  S10000C1 ::v3(){vfunc_called(this, "_ZN8S10000C12v3Ev");}
void  S10000C1 ::v4(){vfunc_called(this, "_ZN8S10000C12v4Ev");}
void  S10000C1 ::v5(){vfunc_called(this, "_ZN8S10000C12v5Ev");}
S10000C1 ::~S10000C1(){ note_dtor("S10000C1", this);} // tgen
S10000C1 ::S10000C1(){ note_ctor("S10000C1", this);} // tgen

static void Test_S10000C1()
{
  extern Class_Descriptor cd_S10000C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,39)];
    init_test(&cd_S10000C1, buf);
    S10000C1 *dp, &lv = *(dp=new (buf) S10000C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,152), "sizeof(S10000C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10000C1)");
    check_base_class_offset(lv, (S10000C2*), 0, "S10000C1");
    check_field_offset(lv, s10000c1f0, ABISELECT(288,144), "S10000C1.s10000c1f0");
    test_class_info(&lv, &cd_S10000C1);
    dp->~S10000C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10000C1(Test_S10000C1, "S10000C1", ABISELECT(296,152));

#else // __cplusplus

extern void _ZN8S10000C1C1Ev();
extern void _ZN8S10000C1D1Ev();
Name_Map name_map_S10000C1[] = {
  NSPAIR(_ZN8S10000C1C1Ev),
  NSPAIR(_ZN8S10000C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10000C2;
extern VTBL_ENTRY _ZTI8S10000C2[];
extern  VTBL_ENTRY _ZTV8S10000C2[];
static Base_Class bases_S10000C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10000C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10000C1[];
extern void _ZN8S10000C1D1Ev();
extern void _ZN8S10000C1D0Ev();
extern void _ZN8S10000C22v6Ev();
extern void _ZN8S10000C22v7Ev();
extern void _ZN8S10000C22v8Ev();
extern void _ZN8S10000C22v9Ev();
extern void _ZN8S10000C23v10Ev();
extern void _ZN8S10000C23v11Ev();
extern void _ZN8S10000C12v1Ev();
extern void _ZN8S10000C12v2Ev();
extern void _ZN8S10000C12v3Ev();
extern void _ZN8S10000C12v4Ev();
extern void _ZN8S10000C12v5Ev();
static  VTBL_ENTRY vtc_S10000C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10000C1[0]),
  (VTBL_ENTRY)&_ZN8S10000C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10000C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10000C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10000C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10000C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10000C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10000C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10000C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10000C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10000C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10000C1[];
extern  VTBL_ENTRY _ZTV8S10000C1[];
Class_Descriptor cd_S10000C1 = {  "S10000C1", // class name
  bases_S10000C1, 1,
  &(vtc_S10000C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,152), // object size
  NSPAIRA(_ZTI8S10000C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10000C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15774C2  {
  ::S2650C17 s15774c2f0;
  ::S2650C17 s15774c2f1;
  char s15774c2f2[2];
  ::S6726C4_nt s15774c2f3;
  void  mf15774c2(); // _ZN8S15774C29mf15774c2Ev
};
//SIG(-1 S15774C2) C1{ m FC2{ m FC3{ m Fp}} FC2 Fc[2] FC4{ m Fi[2]}}


void  S15774C2 ::mf15774c2(){}

static void Test_S15774C2()
{
  {
    init_simple_test("S15774C2");
    S15774C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S15774C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15774C2)");
    check_field_offset(lv, s15774c2f0, 0, "S15774C2.s15774c2f0");
    check_field_offset(lv, s15774c2f1, ABISELECT(8,4), "S15774C2.s15774c2f1");
    check_field_offset(lv, s15774c2f2, ABISELECT(16,8), "S15774C2.s15774c2f2");
    check_field_offset(lv, s15774c2f3, ABISELECT(20,12), "S15774C2.s15774c2f3");
  }
}
static Arrange_To_Call_Me vS15774C2(Test_S15774C2, "S15774C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15774C1  {
  ::S15774C2 s15774c1f0;
  char s15774c1f1[2];
  ::S2650C17 s15774c1f2;
  void  mf15774c1(); // _ZN8S15774C19mf15774c1Ev
};
//SIG(1 S15774C1) C1{ m FC2{ m FC3{ m FC4{ m Fp}} FC3 Fc[2] FC5{ m Fi[2]}} Fc[2] FC3}


void  S15774C1 ::mf15774c1(){}

static void Test_S15774C1()
{
  {
    init_simple_test("S15774C1");
    S15774C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S15774C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15774C1)");
    check_field_offset(lv, s15774c1f0, 0, "S15774C1.s15774c1f0");
    check_field_offset(lv, s15774c1f1, ABISELECT(32,20), "S15774C1.s15774c1f1");
    check_field_offset(lv, s15774c1f2, ABISELECT(40,24), "S15774C1.s15774c1f2");
  }
}
static Arrange_To_Call_Me vS15774C1(Test_S15774C1, "S15774C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15370C1  {
  ::S16450C12 s15370c1f0;
  void *s15370c1f1[4];
  ::S4224C43_nt s15370c1f2;
  void *s15370c1f3[3];
  char s15370c1f4;
  void  mf15370c1(); // _ZN8S15370C19mf15370c1Ev
};
//SIG(1 S15370C1) C1{ m FC2{ BC3{ BC4{} FC5{ BC6{}}} Fp[3]} Fp[4] FC7{ m Fp} Fp[3] Fc}


void  S15370C1 ::mf15370c1(){}

static void Test_S15370C1()
{
  {
    init_simple_test("S15370C1");
    S15370C1 lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S15370C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15370C1)");
    check_field_offset(lv, s15370c1f0, 0, "S15370C1.s15370c1f0");
    check_field_offset(lv, s15370c1f1, ABISELECT(32,16), "S15370C1.s15370c1f1");
    check_field_offset(lv, s15370c1f2, ABISELECT(64,32), "S15370C1.s15370c1f2");
    check_field_offset(lv, s15370c1f3, ABISELECT(72,36), "S15370C1.s15370c1f3");
    check_field_offset(lv, s15370c1f4, ABISELECT(96,48), "S15370C1.s15370c1f4");
  }
}
static Arrange_To_Call_Me vS15370C1(Test_S15370C1, "S15370C1", ABISELECT(104,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10001C2  {
  int s10001c2f0;
  void *s10001c2f1[34];
  virtual  ~S10001C2(); // _ZN8S10001C2D1Ev
  virtual void  v6(); // _ZN8S10001C22v6Ev
  virtual void  v7(); // _ZN8S10001C22v7Ev
  virtual void  v8(); // _ZN8S10001C22v8Ev
  virtual void  v9(); // _ZN8S10001C22v9Ev
  virtual void  v10(); // _ZN8S10001C23v10Ev
  virtual void  v11(); // _ZN8S10001C23v11Ev
  S10001C2(); // tgen
};
//SIG(-1 S10001C2) C1{ vd v1 v2 v3 v4 v5 v6 Fi Fp[34]}


 S10001C2 ::~S10001C2(){ note_dtor("S10001C2", this);}
void  S10001C2 ::v6(){vfunc_called(this, "_ZN8S10001C22v6Ev");}
void  S10001C2 ::v7(){vfunc_called(this, "_ZN8S10001C22v7Ev");}
void  S10001C2 ::v8(){vfunc_called(this, "_ZN8S10001C22v8Ev");}
void  S10001C2 ::v9(){vfunc_called(this, "_ZN8S10001C22v9Ev");}
void  S10001C2 ::v10(){vfunc_called(this, "_ZN8S10001C23v10Ev");}
void  S10001C2 ::v11(){vfunc_called(this, "_ZN8S10001C23v11Ev");}
S10001C2 ::S10001C2(){ note_ctor("S10001C2", this);} // tgen

static void Test_S10001C2()
{
  extern Class_Descriptor cd_S10001C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[37];
    init_test(&cd_S10001C2, buf);
    S10001C2 *dp, &lv = *(dp=new (buf) S10001C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,144), "sizeof(S10001C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10001C2)");
    check_field_offset(lv, s10001c2f0, ABISELECT(8,4), "S10001C2.s10001c2f0");
    check_field_offset(lv, s10001c2f1, ABISELECT(16,8), "S10001C2.s10001c2f1");
    test_class_info(&lv, &cd_S10001C2);
    dp->~S10001C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10001C2(Test_S10001C2, "S10001C2", ABISELECT(288,144));

#else // __cplusplus

extern void _ZN8S10001C2C1Ev();
extern void _ZN8S10001C2D1Ev();
Name_Map name_map_S10001C2[] = {
  NSPAIR(_ZN8S10001C2C1Ev),
  NSPAIR(_ZN8S10001C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10001C2[];
extern void _ZN8S10001C2D1Ev();
extern void _ZN8S10001C2D0Ev();
extern void _ZN8S10001C22v6Ev();
extern void _ZN8S10001C22v7Ev();
extern void _ZN8S10001C22v8Ev();
extern void _ZN8S10001C22v9Ev();
extern void _ZN8S10001C23v10Ev();
extern void _ZN8S10001C23v11Ev();
static  VTBL_ENTRY vtc_S10001C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10001C2[0]),
  (VTBL_ENTRY)&_ZN8S10001C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10001C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10001C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10001C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S10001C2[];
extern  VTBL_ENTRY _ZTV8S10001C2[];
Class_Descriptor cd_S10001C2 = {  "S10001C2", // class name
  0,0,//no base classes
  &(vtc_S10001C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,144), // object size
  NSPAIRA(_ZTI8S10001C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10001C2),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  S10001C1  : S10001C2 {
  int s10001c1f0;
  virtual void  v1(); // _ZN8S10001C12v1Ev
  virtual void  v2(); // _ZN8S10001C12v2Ev
  virtual void  v3(); // _ZN8S10001C12v3Ev
  virtual void  v4(); // _ZN8S10001C12v4Ev
  virtual void  v5(); // _ZN8S10001C12v5Ev
  ~S10001C1(); // tgen
  S10001C1(); // tgen
};
//SIG(1 S10001C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 Fi Fp[34]} v1 v2 v3 v4 v5 Fi}


void  S10001C1 ::v1(){vfunc_called(this, "_ZN8S10001C12v1Ev");}
void  S10001C1 ::v2(){vfunc_called(this, "_ZN8S10001C12v2Ev");}
void  S10001C1 ::v3(){vfunc_called(this, "_ZN8S10001C12v3Ev");}
void  S10001C1 ::v4(){vfunc_called(this, "_ZN8S10001C12v4Ev");}
void  S10001C1 ::v5(){vfunc_called(this, "_ZN8S10001C12v5Ev");}
S10001C1 ::~S10001C1(){ note_dtor("S10001C1", this);} // tgen
S10001C1 ::S10001C1(){ note_ctor("S10001C1", this);} // tgen

static void Test_S10001C1()
{
  extern Class_Descriptor cd_S10001C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[38];
    init_test(&cd_S10001C1, buf);
    S10001C1 *dp, &lv = *(dp=new (buf) S10001C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,148), "sizeof(S10001C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10001C1)");
    check_base_class_offset(lv, (S10001C2*), 0, "S10001C1");
    check_field_offset(lv, s10001c1f0, ABISELECT(288,144), "S10001C1.s10001c1f0");
    test_class_info(&lv, &cd_S10001C1);
    dp->~S10001C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10001C1(Test_S10001C1, "S10001C1", ABISELECT(296,148));

#else // __cplusplus

extern void _ZN8S10001C1C1Ev();
extern void _ZN8S10001C1D1Ev();
Name_Map name_map_S10001C1[] = {
  NSPAIR(_ZN8S10001C1C1Ev),
  NSPAIR(_ZN8S10001C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10001C2;
extern VTBL_ENTRY _ZTI8S10001C2[];
extern  VTBL_ENTRY _ZTV8S10001C2[];
static Base_Class bases_S10001C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10001C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10001C1[];
extern void _ZN8S10001C1D1Ev();
extern void _ZN8S10001C1D0Ev();
extern void _ZN8S10001C22v6Ev();
extern void _ZN8S10001C22v7Ev();
extern void _ZN8S10001C22v8Ev();
extern void _ZN8S10001C22v9Ev();
extern void _ZN8S10001C23v10Ev();
extern void _ZN8S10001C23v11Ev();
extern void _ZN8S10001C12v1Ev();
extern void _ZN8S10001C12v2Ev();
extern void _ZN8S10001C12v3Ev();
extern void _ZN8S10001C12v4Ev();
extern void _ZN8S10001C12v5Ev();
static  VTBL_ENTRY vtc_S10001C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10001C1[0]),
  (VTBL_ENTRY)&_ZN8S10001C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10001C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10001C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10001C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10001C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10001C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10001C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10001C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10001C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10001C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10001C1[];
extern  VTBL_ENTRY _ZTV8S10001C1[];
Class_Descriptor cd_S10001C1 = {  "S10001C1", // class name
  bases_S10001C1, 1,
  &(vtc_S10001C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,148), // object size
  NSPAIRA(_ZTI8S10001C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10001C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21373C5_nt  {
  void *s21373c5f0;
  int s21373c5f1;
  ::S4224C37 s21373c5f2;
  void  mf21373c5(); // _ZN11S21373C5_nt9mf21373c5Ev
};
//SIG(-1 S21373C5_nt) C1{ m Fp Fi FC2{ m}}


void  S21373C5_nt ::mf21373c5(){}

//skip512 S21373C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21373C1  {
  ::S21713C5_nt s21373c1f0;
  ::S4224C19_nt s21373c1f1;
  ::S21373C5_nt s21373c1f2;
  ::S4224C19_nt s21373c1f3;
  void  mf21373c1(); // _ZN8S21373C19mf21373c1Ev
  virtual  ~S21373C1(); // _ZN8S21373C1D1Ev
  S21373C1(); // tgen
};
//SIG(1 S21373C1) C1{ vd m FC2{ FL} FC3{ m Fp Fi FC4{ m}} FC5{ m Fp Fi FC6{ m}} FC3}


void  S21373C1 ::mf21373c1(){}
 S21373C1 ::~S21373C1(){ note_dtor("S21373C1", this);}
S21373C1 ::S21373C1(){ note_ctor("S21373C1", this);} // tgen

static void Test_S21373C1()
{
  extern Class_Descriptor cd_S21373C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S21373C1, buf);
    S21373C1 *dp, &lv = *(dp=new (buf) S21373C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S21373C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21373C1)");
    check_field_offset(lv, s21373c1f0, ABISELECT(8,4), "S21373C1.s21373c1f0");
    check_field_offset(lv, s21373c1f1, ABISELECT(16,12), "S21373C1.s21373c1f1");
    check_field_offset(lv, s21373c1f2, ABISELECT(32,24), "S21373C1.s21373c1f2");
    check_field_offset(lv, s21373c1f3, ABISELECT(48,36), "S21373C1.s21373c1f3");
    test_class_info(&lv, &cd_S21373C1);
    dp->~S21373C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21373C1(Test_S21373C1, "S21373C1", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN8S21373C1C1Ev();
extern void _ZN8S21373C1D1Ev();
Name_Map name_map_S21373C1[] = {
  NSPAIR(_ZN8S21373C1C1Ev),
  NSPAIR(_ZN8S21373C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21373C1[];
extern void _ZN8S21373C1D1Ev();
extern void _ZN8S21373C1D0Ev();
static  VTBL_ENTRY vtc_S21373C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21373C1[0]),
  (VTBL_ENTRY)&_ZN8S21373C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21373C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21373C1[];
extern  VTBL_ENTRY _ZTV8S21373C1[];
Class_Descriptor cd_S21373C1 = {  "S21373C1", // class name
  0,0,//no base classes
  &(vtc_S21373C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI8S21373C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21373C1),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  S14968C3  {
  char s14968c3f0:4;
  char s14968c3f1:4;
};
//SIG(1 S14968C3) C1{ Fc:4 Fc:4}



static void Test_S14968C3()
{
  {
    init_simple_test("S14968C3");
    static S14968C3 lv;
    check2(sizeof(lv), 1, "sizeof(S14968C3)");
    check2(__alignof__(lv), 1, "__alignof__(S14968C3)");
    set_bf_and_test(lv, s14968c3f0, 0, 0, 4, 1, "S14968C3");
    set_bf_and_test(lv, s14968c3f0, 0, 0, 4, hide_sll(1LL<<3), "S14968C3");
    set_bf_and_test(lv, s14968c3f1, 0, 4, 4, 1, "S14968C3");
    set_bf_and_test(lv, s14968c3f1, 0, 4, 4, hide_sll(1LL<<3), "S14968C3");
  }
}
static Arrange_To_Call_Me vS14968C3(Test_S14968C3, "S14968C3", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S14968C2  {
  ::S14968C3 s14968c2f0;
  char s14968c2f1;
};
//SIG(1 S14968C2) U1{ FC2{ Fc:4 Fc:4} Fc}

#endif // __cplusplus
#ifdef __cplusplus

struct  S14968C4_nt  {
  int s14968c4f0;
};
//SIG(-1 S14968C4_nt) C1{ Fi}



//skip512 S14968C4_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S14968C1  {
  ::S14968C2 s14968c1f0;
  char s14968c1f1;
  short s14968c1f2;
  short s14968c1f3;
  short s14968c1f4;
  char s14968c1f5;
  char s14968c1f6;
  short s14968c1f7;
  ::S14968C4_nt s14968c1f8;
  ::S14968C4_nt s14968c1f9;
};
//SIG(1 S14968C1) C1{ FU2{ FC3{ Fc:4 Fc:4} Fc} Fc Fs Fs Fs Fc Fc Fs FC4{ Fi} FC4}



static void Test_S14968C1()
{
  {
    init_simple_test("S14968C1");
    S14968C1 lv;
    check2(sizeof(lv), 20, "sizeof(S14968C1)");
    check2(__alignof__(lv), 4, "__alignof__(S14968C1)");
    check_field_offset(lv, s14968c1f0, 0, "S14968C1.s14968c1f0");
    check_field_offset(lv, s14968c1f1, 1, "S14968C1.s14968c1f1");
    check_field_offset(lv, s14968c1f2, 2, "S14968C1.s14968c1f2");
    check_field_offset(lv, s14968c1f3, 4, "S14968C1.s14968c1f3");
    check_field_offset(lv, s14968c1f4, 6, "S14968C1.s14968c1f4");
    check_field_offset(lv, s14968c1f5, 8, "S14968C1.s14968c1f5");
    check_field_offset(lv, s14968c1f6, 9, "S14968C1.s14968c1f6");
    check_field_offset(lv, s14968c1f7, 10, "S14968C1.s14968c1f7");
    check_field_offset(lv, s14968c1f8, 12, "S14968C1.s14968c1f8");
    check_field_offset(lv, s14968c1f9, 16, "S14968C1.s14968c1f9");
  }
}
static Arrange_To_Call_Me vS14968C1(Test_S14968C1, "S14968C1", 20);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5451C2  : S20636C21_nt {
  int s5451c2f0;
};
//SIG(-1 S5451C2) C1{ BC2{} Fi}



static void Test_S5451C2()
{
  extern Class_Descriptor cd_S5451C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S5451C2, buf);
    S5451C2 &lv = *(new (buf) S5451C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S5451C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5451C2)");
    check_base_class_offset(lv, (S20636C21_nt*), 0, "S5451C2");
    check_field_offset(lv, s5451c2f0, 0, "S5451C2.s5451c2f0");
    test_class_info(&lv, &cd_S5451C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5451C2(Test_S5451C2, "S5451C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S20636C21_nt;
extern VTBL_ENTRY _ZTI12S20636C21_nt[];
static Base_Class bases_S5451C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5451C2[];
Class_Descriptor cd_S5451C2 = {  "S5451C2", // class name
  bases_S5451C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S5451C2),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  S5451C1  : S5451C2 {
  ::S21373C5_nt s5451c1f0;
  ::S21373C5_nt s5451c1f1;
  ::S21373C5_nt s5451c1f2;
  ::S21373C5_nt s5451c1f3;
  __tsi64 s5451c1f4;
  int s5451c1f5;
  virtual  ~S5451C1(); // _ZN7S5451C1D1Ev
  S5451C1(); // tgen
};
//SIG(1 S5451C1) C1{ BC2{ BC3{} Fi} vd FC4{ m Fp Fi FC5{ m}} FC4 FC4 FC4 FL Fi}


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

static void Test_S5451C1()
{
  extern Class_Descriptor cd_S5451C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,18)];
    init_test(&cd_S5451C1, buf);
    S5451C1 *dp, &lv = *(dp=new (buf) S5451C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S5451C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5451C1)");
    check_base_class_offset(lv, (S20636C21_nt*)(S5451C2*), ABISELECT(8,4), "S5451C1");
    check_base_class_offset(lv, (S5451C2*), ABISELECT(8,4), "S5451C1");
    check_field_offset(lv, s5451c1f0, ABISELECT(16,8), "S5451C1.s5451c1f0");
    check_field_offset(lv, s5451c1f1, ABISELECT(32,20), "S5451C1.s5451c1f1");
    check_field_offset(lv, s5451c1f2, ABISELECT(48,32), "S5451C1.s5451c1f2");
    check_field_offset(lv, s5451c1f3, ABISELECT(64,44), "S5451C1.s5451c1f3");
    check_field_offset(lv, s5451c1f4, ABISELECT(80,56), "S5451C1.s5451c1f4");
    check_field_offset(lv, s5451c1f5, ABISELECT(88,64), "S5451C1.s5451c1f5");
    test_class_info(&lv, &cd_S5451C1);
    dp->~S5451C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5451C1(Test_S5451C1, "S5451C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S5451C1C1Ev();
extern void _ZN7S5451C1D1Ev();
Name_Map name_map_S5451C1[] = {
  NSPAIR(_ZN7S5451C1C1Ev),
  NSPAIR(_ZN7S5451C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20636C21_nt;
extern VTBL_ENTRY _ZTI12S20636C21_nt[];
extern Class_Descriptor cd_S5451C2;
extern VTBL_ENTRY _ZTI7S5451C2[];
static Base_Class bases_S5451C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C21_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5451C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5451C1[];
extern void _ZN7S5451C1D1Ev();
extern void _ZN7S5451C1D0Ev();
static  VTBL_ENTRY vtc_S5451C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5451C1[0]),
  (VTBL_ENTRY)&_ZN7S5451C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5451C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S5451C1[];
extern  VTBL_ENTRY _ZTV7S5451C1[];
Class_Descriptor cd_S5451C1 = {  "S5451C1", // class name
  bases_S5451C1, 2,
  &(vtc_S5451C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S5451C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5451C1),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  S18405C1  {
  void *s18405c1f0[8];
  int s18405c1f1[3];
  void *s18405c1f2;
  int s18405c1f3[2];
  ::S21713C14_nt s18405c1f4;
  int s18405c1f5;
  char s18405c1f6;
  int s18405c1f7[3];
  void *s18405c1f8;
  int s18405c1f9;
  void  mf18405c1(); // _ZN8S18405C19mf18405c1Ev
};
//SIG(1 S18405C1) C1{ m Fp[8] Fi[3] Fp Fi[2] FC2{ FL[4]} Fi Fc Fi[3] Fp Fi}


void  S18405C1 ::mf18405c1(){}

static void Test_S18405C1()
{
  {
    init_simple_test("S18405C1");
    S18405C1 lv;
    check2(sizeof(lv), ABISELECT(168,116), "sizeof(S18405C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18405C1)");
    check_field_offset(lv, s18405c1f0, 0, "S18405C1.s18405c1f0");
    check_field_offset(lv, s18405c1f1, ABISELECT(64,32), "S18405C1.s18405c1f1");
    check_field_offset(lv, s18405c1f2, ABISELECT(80,44), "S18405C1.s18405c1f2");
    check_field_offset(lv, s18405c1f3, ABISELECT(88,48), "S18405C1.s18405c1f3");
    check_field_offset(lv, s18405c1f4, ABISELECT(96,56), "S18405C1.s18405c1f4");
    check_field_offset(lv, s18405c1f5, ABISELECT(128,88), "S18405C1.s18405c1f5");
    check_field_offset(lv, s18405c1f6, ABISELECT(132,92), "S18405C1.s18405c1f6");
    check_field_offset(lv, s18405c1f7, ABISELECT(136,96), "S18405C1.s18405c1f7");
    check_field_offset(lv, s18405c1f8, ABISELECT(152,108), "S18405C1.s18405c1f8");
    check_field_offset(lv, s18405c1f9, ABISELECT(160,112), "S18405C1.s18405c1f9");
  }
}
static Arrange_To_Call_Me vS18405C1(Test_S18405C1, "S18405C1", ABISELECT(168,116));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4583C3  {
  virtual  ~S4583C3(); // _ZN7S4583C3D1Ev
  virtual void  v2(); // _ZN7S4583C32v2Ev
  virtual void  v3(); // _ZN7S4583C32v3Ev
  S4583C3(); // tgen
};
//SIG(-1 S4583C3) C1{ vd v1 v2}


 S4583C3 ::~S4583C3(){ note_dtor("S4583C3", this);}
void  S4583C3 ::v2(){vfunc_called(this, "_ZN7S4583C32v2Ev");}
void  S4583C3 ::v3(){vfunc_called(this, "_ZN7S4583C32v3Ev");}
S4583C3 ::S4583C3(){ note_ctor("S4583C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S4583C3C1Ev();
extern void _ZN7S4583C3D1Ev();
Name_Map name_map_S4583C3[] = {
  NSPAIR(_ZN7S4583C3C1Ev),
  NSPAIR(_ZN7S4583C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4583C3[];
extern void _ZN7S4583C3D1Ev();
extern void _ZN7S4583C3D0Ev();
extern void _ZN7S4583C32v2Ev();
extern void _ZN7S4583C32v3Ev();
static  VTBL_ENTRY vtc_S4583C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4583C3[0]),
  (VTBL_ENTRY)&_ZN7S4583C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4583C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4583C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4583C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4583C3[];
extern  VTBL_ENTRY _ZTV7S4583C3[];
Class_Descriptor cd_S4583C3 = {  "S4583C3", // class name
  0,0,//no base classes
  &(vtc_S4583C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4583C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4583C3),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  S4583C4  {
  short s4583c4f0;
  void *s4583c4f1[40];
};
//SIG(-1 S4583C4) C1{ Fs Fp[40]}



static void Test_S4583C4()
{
  {
    init_simple_test("S4583C4");
    S4583C4 lv;
    check2(sizeof(lv), ABISELECT(328,164), "sizeof(S4583C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4583C4)");
    check_field_offset(lv, s4583c4f0, 0, "S4583C4.s4583c4f0");
    check_field_offset(lv, s4583c4f1, ABISELECT(8,4), "S4583C4.s4583c4f1");
  }
}
static Arrange_To_Call_Me vS4583C4(Test_S4583C4, "S4583C4", ABISELECT(328,164));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4583C2  : S4583C3 {
  int s4583c2f0;
  ::S4583C4 s4583c2f1;
  virtual  ~S4583C2(); // _ZN7S4583C2D1Ev
  virtual void  v4(); // _ZN7S4583C22v4Ev
  virtual void  v5(); // _ZN7S4583C22v5Ev
  S4583C2(); // tgen
};
//SIG(-1 S4583C2) C1{ BC2{ vd v3 v4} vd v1 v2 Fi FC3{ Fs Fp[40]}}


 S4583C2 ::~S4583C2(){ note_dtor("S4583C2", this);}
void  S4583C2 ::v4(){vfunc_called(this, "_ZN7S4583C22v4Ev");}
void  S4583C2 ::v5(){vfunc_called(this, "_ZN7S4583C22v5Ev");}
S4583C2 ::S4583C2(){ note_ctor("S4583C2", this);} // tgen

static void Test_S4583C2()
{
  extern Class_Descriptor cd_S4583C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[44];
    init_test(&cd_S4583C2, buf);
    S4583C2 *dp, &lv = *(dp=new (buf) S4583C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,172), "sizeof(S4583C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4583C2)");
    check_base_class_offset(lv, (S4583C3*), 0, "S4583C2");
    check_field_offset(lv, s4583c2f0, ABISELECT(8,4), "S4583C2.s4583c2f0");
    check_field_offset(lv, s4583c2f1, ABISELECT(16,8), "S4583C2.s4583c2f1");
    test_class_info(&lv, &cd_S4583C2);
    dp->~S4583C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4583C2(Test_S4583C2, "S4583C2", ABISELECT(344,172));

#else // __cplusplus

extern void _ZN7S4583C2C1Ev();
extern void _ZN7S4583C2D1Ev();
Name_Map name_map_S4583C2[] = {
  NSPAIR(_ZN7S4583C2C1Ev),
  NSPAIR(_ZN7S4583C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4583C3;
extern VTBL_ENTRY _ZTI7S4583C3[];
extern  VTBL_ENTRY _ZTV7S4583C3[];
static Base_Class bases_S4583C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4583C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4583C2[];
extern void _ZN7S4583C2D1Ev();
extern void _ZN7S4583C2D0Ev();
extern void _ZN7S4583C32v2Ev();
extern void _ZN7S4583C32v3Ev();
extern void _ZN7S4583C22v4Ev();
extern void _ZN7S4583C22v5Ev();
static  VTBL_ENTRY vtc_S4583C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4583C2[0]),
  (VTBL_ENTRY)&_ZN7S4583C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4583C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4583C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4583C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4583C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4583C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S4583C2[];
extern  VTBL_ENTRY _ZTV7S4583C2[];
Class_Descriptor cd_S4583C2 = {  "S4583C2", // class name
  bases_S4583C2, 1,
  &(vtc_S4583C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(344,172), // object size
  NSPAIRA(_ZTI7S4583C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4583C2),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  S4583C1  : S4583C2 {
  virtual  ~S4583C1(); // _ZN7S4583C1D1Ev
  virtual void  v1(); // _ZN7S4583C12v1Ev
  S4583C1(); // tgen
};
//SIG(1 S4583C1) C1{ BC2{ BC3{ vd v2 v3} vd v4 v5 Fi FC4{ Fs Fp[40]}} vd v1}


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

static void Test_S4583C1()
{
  extern Class_Descriptor cd_S4583C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[44];
    init_test(&cd_S4583C1, buf);
    S4583C1 *dp, &lv = *(dp=new (buf) S4583C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,172), "sizeof(S4583C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4583C1)");
    check_base_class_offset(lv, (S4583C3*)(S4583C2*), 0, "S4583C1");
    check_base_class_offset(lv, (S4583C2*), 0, "S4583C1");
    test_class_info(&lv, &cd_S4583C1);
    dp->~S4583C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4583C1(Test_S4583C1, "S4583C1", ABISELECT(344,172));

#else // __cplusplus

extern void _ZN7S4583C1C1Ev();
extern void _ZN7S4583C1D1Ev();
Name_Map name_map_S4583C1[] = {
  NSPAIR(_ZN7S4583C1C1Ev),
  NSPAIR(_ZN7S4583C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4583C3;
extern VTBL_ENTRY _ZTI7S4583C3[];
extern  VTBL_ENTRY _ZTV7S4583C3[];
extern Class_Descriptor cd_S4583C2;
extern VTBL_ENTRY _ZTI7S4583C2[];
extern  VTBL_ENTRY _ZTV7S4583C2[];
static Base_Class bases_S4583C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4583C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4583C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4583C1[];
extern void _ZN7S4583C1D1Ev();
extern void _ZN7S4583C1D0Ev();
extern void _ZN7S4583C32v2Ev();
extern void _ZN7S4583C32v3Ev();
extern void _ZN7S4583C22v4Ev();
extern void _ZN7S4583C22v5Ev();
extern void _ZN7S4583C12v1Ev();
static  VTBL_ENTRY vtc_S4583C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4583C1[0]),
  (VTBL_ENTRY)&_ZN7S4583C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4583C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4583C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4583C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4583C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4583C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4583C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4583C1[];
extern  VTBL_ENTRY _ZTV7S4583C1[];
Class_Descriptor cd_S4583C1 = {  "S4583C1", // class name
  bases_S4583C1, 2,
  &(vtc_S4583C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(344,172), // object size
  NSPAIRA(_ZTI7S4583C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4583C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21406C1  {
  ::S4224C41 s21406c1f0;
  int s21406c1f1;
  ::S4224C36 s21406c1f2;
  void  mf21406c1(); // _ZN8S21406C19mf21406c1Ev
  virtual  ~S21406C1(); // _ZN8S21406C1D1Ev
  S21406C1(); // tgen
};
//SIG(1 S21406C1) C1{ vd m FC2{ m FC3{ m FL[2]}} Fi FC4{ m Fp Fi[2] FC5{ m}}}


void  S21406C1 ::mf21406c1(){}
 S21406C1 ::~S21406C1(){ note_dtor("S21406C1", this);}
S21406C1 ::S21406C1(){ note_ctor("S21406C1", this);} // tgen

static void Test_S21406C1()
{
  extern Class_Descriptor cd_S21406C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S21406C1, buf);
    S21406C1 *dp, &lv = *(dp=new (buf) S21406C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S21406C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21406C1)");
    check_field_offset(lv, s21406c1f0, ABISELECT(8,4), "S21406C1.s21406c1f0");
    check_field_offset(lv, s21406c1f1, ABISELECT(24,20), "S21406C1.s21406c1f1");
    check_field_offset(lv, s21406c1f2, ABISELECT(32,24), "S21406C1.s21406c1f2");
    test_class_info(&lv, &cd_S21406C1);
    dp->~S21406C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21406C1(Test_S21406C1, "S21406C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN8S21406C1C1Ev();
extern void _ZN8S21406C1D1Ev();
Name_Map name_map_S21406C1[] = {
  NSPAIR(_ZN8S21406C1C1Ev),
  NSPAIR(_ZN8S21406C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21406C1[];
extern void _ZN8S21406C1D1Ev();
extern void _ZN8S21406C1D0Ev();
static  VTBL_ENTRY vtc_S21406C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21406C1[0]),
  (VTBL_ENTRY)&_ZN8S21406C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21406C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21406C1[];
extern  VTBL_ENTRY _ZTV8S21406C1[];
Class_Descriptor cd_S21406C1 = {  "S21406C1", // class name
  0,0,//no base classes
  &(vtc_S21406C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI8S21406C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21406C1),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  S20851C3  {
  long double s20851c3f0;
  virtual void  v4(); // _ZN8S20851C32v4Ev
  virtual void  v5(); // _ZN8S20851C32v5Ev
  virtual void  v6(); // _ZN8S20851C32v6Ev
  ~S20851C3(); // tgen
  S20851C3(); // tgen
};
//SIG(-1 S20851C3) C1{ v1 v2 v3 FD}


void  S20851C3 ::v4(){vfunc_called(this, "_ZN8S20851C32v4Ev");}
void  S20851C3 ::v5(){vfunc_called(this, "_ZN8S20851C32v5Ev");}
void  S20851C3 ::v6(){vfunc_called(this, "_ZN8S20851C32v6Ev");}
S20851C3 ::~S20851C3(){ note_dtor("S20851C3", this);} // tgen
S20851C3 ::S20851C3(){ note_ctor("S20851C3", this);} // tgen

static void Test_S20851C3()
{
  extern Class_Descriptor cd_S20851C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20851C3, buf);
    S20851C3 *dp, &lv = *(dp=new (buf) S20851C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20851C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20851C3)");
    check_field_offset(lv, s20851c3f0, ABISELECT(16,4), "S20851C3.s20851c3f0");
    test_class_info(&lv, &cd_S20851C3);
    dp->~S20851C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20851C3(Test_S20851C3, "S20851C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20851C3C1Ev();
extern void _ZN8S20851C3D1Ev();
Name_Map name_map_S20851C3[] = {
  NSPAIR(_ZN8S20851C3C1Ev),
  NSPAIR(_ZN8S20851C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20851C3[];
extern void _ZN8S20851C32v4Ev();
extern void _ZN8S20851C32v5Ev();
extern void _ZN8S20851C32v6Ev();
static  VTBL_ENTRY vtc_S20851C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20851C3[0]),
  (VTBL_ENTRY)&_ZN8S20851C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S20851C3[];
extern  VTBL_ENTRY _ZTV8S20851C3[];
Class_Descriptor cd_S20851C3 = {  "S20851C3", // class name
  0,0,//no base classes
  &(vtc_S20851C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20851C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20851C3),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  S20851C2  : virtual S20851C3 {
  virtual  ~S20851C2(); // _ZN8S20851C2D2Ev
  virtual void  v7(); // _ZN8S20851C22v7Ev
  virtual void  v8(); // _ZN8S20851C22v8Ev
  S20851C2(); // tgen
};
//SIG(-1 S20851C2) C1{ VBC2{ v3 v4 v5 FD} vd v1 v2}


 S20851C2 ::~S20851C2(){ note_dtor("S20851C2", this);}
void  S20851C2 ::v7(){vfunc_called(this, "_ZN8S20851C22v7Ev");}
void  S20851C2 ::v8(){vfunc_called(this, "_ZN8S20851C22v8Ev");}
S20851C2 ::S20851C2(){ note_ctor("S20851C2", this);} // tgen

static void Test_S20851C2()
{
  extern Class_Descriptor cd_S20851C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20851C2, buf);
    S20851C2 *dp, &lv = *(dp=new (buf) S20851C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20851C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20851C2)");
    check_base_class_offset(lv, (S20851C3*), ABISELECT(16,4), "S20851C2");
    test_class_info(&lv, &cd_S20851C2);
    dp->~S20851C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20851C2(Test_S20851C2, "S20851C2", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20851C2C1Ev();
extern void _ZN8S20851C2D2Ev();
Name_Map name_map_S20851C2[] = {
  NSPAIR(_ZN8S20851C2C1Ev),
  NSPAIR(_ZN8S20851C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20851C3;
extern VTBL_ENTRY _ZTI8S20851C3[];
extern  VTBL_ENTRY _ZTV8S20851C3[];
static Base_Class bases_S20851C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20851C3,    ABISELECT(16,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20851C2[];
extern void _ZN8S20851C2D1Ev();
extern void _ZN8S20851C2D0Ev();
extern void _ZN8S20851C22v7Ev();
extern void _ZN8S20851C22v8Ev();
extern void _ZN8S20851C32v4Ev();
extern void _ZN8S20851C32v5Ev();
extern void _ZN8S20851C32v6Ev();
static  VTBL_ENTRY vtc_S20851C2[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20851C2[0]),
  (VTBL_ENTRY)&_ZN8S20851C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20851C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20851C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20851C22v8Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20851C2[0]),
  (VTBL_ENTRY)&_ZN8S20851C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v6Ev,
};
extern VTBL_ENTRY _ZTV8S20851C2[];
static  VTT_ENTRY vtt_S20851C2[] = {
  {&(_ZTV8S20851C2[3]),  3,15},
  {&(_ZTV8S20851C2[12]),  12,15},
};
extern VTBL_ENTRY _ZTI8S20851C2[];
extern  VTBL_ENTRY _ZTV8S20851C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20851C2[];
Class_Descriptor cd_S20851C2 = {  "S20851C2", // class name
  bases_S20851C2, 1,
  &(vtc_S20851C2[0]), // expected_vtbl_contents
  &(vtt_S20851C2[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20851C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20851C2),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20851C2),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  S20851C1  : virtual S20851C2 {
  __tsi64 s20851c1f0;
  long double s20851c1f1[2];
  virtual void  v1(); // _ZN8S20851C12v1Ev
  virtual void  v2(); // _ZN8S20851C12v2Ev
  virtual void  v3(); // _ZN8S20851C12v3Ev
  ~S20851C1(); // tgen
  S20851C1(); // tgen
};
//SIG(1 S20851C1) C1{ VBC2{ VBC3{ v4 v5 v6 FD} vd v7 v8} v1 v2 v3 FL FD[2]}


void  S20851C1 ::v1(){vfunc_called(this, "_ZN8S20851C12v1Ev");}
void  S20851C1 ::v2(){vfunc_called(this, "_ZN8S20851C12v2Ev");}
void  S20851C1 ::v3(){vfunc_called(this, "_ZN8S20851C12v3Ev");}
S20851C1 ::~S20851C1(){ note_dtor("S20851C1", this);} // tgen
S20851C1 ::S20851C1(){ note_ctor("S20851C1", this);} // tgen

static void Test_S20851C1()
{
  extern Class_Descriptor cd_S20851C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,14)];
    init_test(&cd_S20851C1, buf);
    S20851C1 *dp, &lv = *(dp=new (buf) S20851C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S20851C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20851C1)");
    check_base_class_offset(lv, (S20851C3*)(S20851C2*), ABISELECT(48,36), "S20851C1");
    check_base_class_offset(lv, (S20851C2*), 0, "S20851C1");
    check_field_offset(lv, s20851c1f0, ABISELECT(8,4), "S20851C1.s20851c1f0");
    check_field_offset(lv, s20851c1f1, ABISELECT(16,12), "S20851C1.s20851c1f1");
    test_class_info(&lv, &cd_S20851C1);
    dp->~S20851C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20851C1(Test_S20851C1, "S20851C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN8S20851C1C1Ev();
extern void _ZN8S20851C1D1Ev();
Name_Map name_map_S20851C1[] = {
  NSPAIR(_ZN8S20851C1C1Ev),
  NSPAIR(_ZN8S20851C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20851C3;
extern VTBL_ENTRY _ZTI8S20851C3[];
extern  VTBL_ENTRY _ZTV8S20851C3[];
extern Class_Descriptor cd_S20851C2;
extern VTBL_ENTRY _ZTI8S20851C2[];
extern  VTBL_ENTRY _ZTV8S20851C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20851C2[];
static Base_Class bases_S20851C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20851C3,    ABISELECT(48,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20851C2,    0, //bcp->offset
    -1, //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 _ZTI8S20851C1[];
extern void _ZN8S20851C1D1Ev();
extern void _ZN8S20851C1D0Ev();
extern void _ZN8S20851C22v7Ev();
extern void _ZN8S20851C22v8Ev();
extern void _ZN8S20851C12v1Ev();
extern void _ZN8S20851C12v2Ev();
extern void _ZN8S20851C12v3Ev();
extern void _ZN8S20851C32v4Ev();
extern void _ZN8S20851C32v5Ev();
extern void _ZN8S20851C32v6Ev();
static  VTBL_ENTRY vtc_S20851C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20851C1[0]),
  (VTBL_ENTRY)&_ZN8S20851C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20851C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20851C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20851C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20851C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20851C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20851C12v3Ev,
  0,
  0,
  0,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20851C1[0]),
  (VTBL_ENTRY)&_ZN8S20851C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v6Ev,
};
extern VTBL_ENTRY _ZTV8S20851C1[];
extern void _ZN8S20851C2D1Ev();
extern void _ZN8S20851C2D0Ev();
extern void _ZN8S20851C22v7Ev();
extern void _ZN8S20851C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20851C2__8S20851C1[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20851C2[0]),
  (VTBL_ENTRY)&_ZN8S20851C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20851C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20851C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20851C22v8Ev,
};
extern void _ZN8S20851C32v4Ev();
extern void _ZN8S20851C32v5Ev();
extern void _ZN8S20851C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20851C3__8S20851C2__8S20851C1[] = {
  0,
  0,
  0,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20851C2[0]),
  (VTBL_ENTRY)&_ZN8S20851C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20851C32v6Ev,
};
static  VTT_ENTRY vtt_S20851C1[] = {
  {&(_ZTV8S20851C1[7]),  7,22},
  {&(_ZTV8S20851C1[7]),  7,22},
  {&(_ZTV8S20851C1[19]),  19,22},
  {&(_tg__ZTV8S20851C2__8S20851C1[3]),  3,7},
  {&(_tg__ZTV8S20851C3__8S20851C2__8S20851C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20851C1[];
extern  VTBL_ENTRY _ZTV8S20851C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20851C1[];
Class_Descriptor cd_S20851C1 = {  "S20851C1", // class name
  bases_S20851C1, 2,
  &(vtc_S20851C1[0]), // expected_vtbl_contents
  &(vtt_S20851C1[0]), // expected_vtt_contents
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI8S20851C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20851C1),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20851C1),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8923C2  {
  char s8923c2f0;
  int s8923c2f1;
  virtual  ~S8923C2(); // _ZN7S8923C2D1Ev
  virtual void  v2(); // _ZN7S8923C22v2Ev
  virtual void  v3(); // _ZN7S8923C22v3Ev
  virtual void  v4(); // _ZN7S8923C22v4Ev
  virtual void  v5(); // _ZN7S8923C22v5Ev
  S8923C2(); // tgen
};
//SIG(-1 S8923C2) C1{ vd v1 v2 v3 v4 Fc Fi}


 S8923C2 ::~S8923C2(){ note_dtor("S8923C2", this);}
void  S8923C2 ::v2(){vfunc_called(this, "_ZN7S8923C22v2Ev");}
void  S8923C2 ::v3(){vfunc_called(this, "_ZN7S8923C22v3Ev");}
void  S8923C2 ::v4(){vfunc_called(this, "_ZN7S8923C22v4Ev");}
void  S8923C2 ::v5(){vfunc_called(this, "_ZN7S8923C22v5Ev");}
S8923C2 ::S8923C2(){ note_ctor("S8923C2", this);} // tgen

static void Test_S8923C2()
{
  extern Class_Descriptor cd_S8923C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8923C2, buf);
    S8923C2 *dp, &lv = *(dp=new (buf) S8923C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8923C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8923C2)");
    check_field_offset(lv, s8923c2f0, ABISELECT(8,4), "S8923C2.s8923c2f0");
    check_field_offset(lv, s8923c2f1, ABISELECT(12,8), "S8923C2.s8923c2f1");
    test_class_info(&lv, &cd_S8923C2);
    dp->~S8923C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8923C2(Test_S8923C2, "S8923C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8923C2C1Ev();
extern void _ZN7S8923C2D1Ev();
Name_Map name_map_S8923C2[] = {
  NSPAIR(_ZN7S8923C2C1Ev),
  NSPAIR(_ZN7S8923C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8923C2[];
extern void _ZN7S8923C2D1Ev();
extern void _ZN7S8923C2D0Ev();
extern void _ZN7S8923C22v2Ev();
extern void _ZN7S8923C22v3Ev();
extern void _ZN7S8923C22v4Ev();
extern void _ZN7S8923C22v5Ev();
static  VTBL_ENTRY vtc_S8923C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8923C2[0]),
  (VTBL_ENTRY)&_ZN7S8923C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8923C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8923C2[];
extern  VTBL_ENTRY _ZTV7S8923C2[];
Class_Descriptor cd_S8923C2 = {  "S8923C2", // class name
  0,0,//no base classes
  &(vtc_S8923C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8923C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8923C2),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  S8923C1  : S8923C2 {
  int s8923c1f0;
  void *s8923c1f1;
  int s8923c1f2;
  void *s8923c1f3[2];
  char s8923c1f4;
  virtual  ~S8923C1(); // _ZN7S8923C1D1Ev
  virtual void  v1(); // _ZN7S8923C12v1Ev
  S8923C1(); // tgen
};
//SIG(1 S8923C1) C1{ BC2{ vd v2 v3 v4 v5 Fc Fi} vd v1 Fi Fp Fi Fp[2] Fc}


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

static void Test_S8923C1()
{
  extern Class_Descriptor cd_S8923C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S8923C1, buf);
    S8923C1 *dp, &lv = *(dp=new (buf) S8923C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S8923C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8923C1)");
    check_base_class_offset(lv, (S8923C2*), 0, "S8923C1");
    check_field_offset(lv, s8923c1f0, ABISELECT(16,12), "S8923C1.s8923c1f0");
    check_field_offset(lv, s8923c1f1, ABISELECT(24,16), "S8923C1.s8923c1f1");
    check_field_offset(lv, s8923c1f2, ABISELECT(32,20), "S8923C1.s8923c1f2");
    check_field_offset(lv, s8923c1f3, ABISELECT(40,24), "S8923C1.s8923c1f3");
    check_field_offset(lv, s8923c1f4, ABISELECT(56,32), "S8923C1.s8923c1f4");
    test_class_info(&lv, &cd_S8923C1);
    dp->~S8923C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8923C1(Test_S8923C1, "S8923C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S8923C1C1Ev();
extern void _ZN7S8923C1D1Ev();
Name_Map name_map_S8923C1[] = {
  NSPAIR(_ZN7S8923C1C1Ev),
  NSPAIR(_ZN7S8923C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8923C2;
extern VTBL_ENTRY _ZTI7S8923C2[];
extern  VTBL_ENTRY _ZTV7S8923C2[];
static Base_Class bases_S8923C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8923C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8923C1[];
extern void _ZN7S8923C1D1Ev();
extern void _ZN7S8923C1D0Ev();
extern void _ZN7S8923C22v2Ev();
extern void _ZN7S8923C22v3Ev();
extern void _ZN7S8923C22v4Ev();
extern void _ZN7S8923C22v5Ev();
extern void _ZN7S8923C12v1Ev();
static  VTBL_ENTRY vtc_S8923C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8923C1[0]),
  (VTBL_ENTRY)&_ZN7S8923C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8923C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8923C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8923C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8923C1[];
extern  VTBL_ENTRY _ZTV7S8923C1[];
Class_Descriptor cd_S8923C1 = {  "S8923C1", // class name
  bases_S8923C1, 1,
  &(vtc_S8923C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S8923C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8923C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13012C2_nt  {
  int s13012c2f0[3];
};
//SIG(1 S13012C2_nt) C1{ Fi[3]}



//skip512 S13012C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13012C1  {
  int s13012c1f0[2];
  char s13012c1f1[260];
  int s13012c1f2[2];
  short s13012c1f3[3];
  char s13012c1f4[2];
  ::S13012C2_nt s13012c1f5[24];
};
//SIG(1 S13012C1) C1{ Fi[2] Fc[260] Fi[2] Fs[3] Fc[2] FC2{ Fi[3]}[24]}



static void Test_S13012C1()
{
  {
    init_simple_test("S13012C1");
    S13012C1 lv;
    check2(sizeof(lv), 572, "sizeof(S13012C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13012C1)");
    check_field_offset(lv, s13012c1f0, 0, "S13012C1.s13012c1f0");
    check_field_offset(lv, s13012c1f1, 8, "S13012C1.s13012c1f1");
    check_field_offset(lv, s13012c1f2, 268, "S13012C1.s13012c1f2");
    check_field_offset(lv, s13012c1f3, 276, "S13012C1.s13012c1f3");
    check_field_offset(lv, s13012c1f4, 282, "S13012C1.s13012c1f4");
    check_field_offset(lv, s13012c1f5, 284, "S13012C1.s13012c1f5");
  }
}
static Arrange_To_Call_Me vS13012C1(Test_S13012C1, "S13012C1", 572);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16767C3  {
  int s16767c3f0;
  void *s16767c3f1;
  ::S6726C4_nt s16767c3f2;
  ::S6726C4_nt s16767c3f3;
  void  mf16767c3(); // _ZN8S16767C39mf16767c3Ev
};
//SIG(-1 S16767C3) C1{ m Fi Fp FC2{ m Fi[2]} FC2}


void  S16767C3 ::mf16767c3(){}

static void Test_S16767C3()
{
  {
    init_simple_test("S16767C3");
    S16767C3 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S16767C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16767C3)");
    check_field_offset(lv, s16767c3f0, 0, "S16767C3.s16767c3f0");
    check_field_offset(lv, s16767c3f1, ABISELECT(8,4), "S16767C3.s16767c3f1");
    check_field_offset(lv, s16767c3f2, ABISELECT(16,8), "S16767C3.s16767c3f2");
    check_field_offset(lv, s16767c3f3, ABISELECT(24,16), "S16767C3.s16767c3f3");
  }
}
static Arrange_To_Call_Me vS16767C3(Test_S16767C3, "S16767C3", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16767C1  {
  int s16767c1f0;
  ::S15502C13_nt s16767c1f1;
  ::S16767C3 s16767c1f2;
  void  mf16767c1(); // _ZN8S16767C19mf16767c1Ev
};
//SIG(1 S16767C1) C1{ m Fi FC2{ m Fi[4]} FC3{ m Fi Fp FC4{ m Fi[2]} FC4}}


void  S16767C1 ::mf16767c1(){}

static void Test_S16767C1()
{
  {
    init_simple_test("S16767C1");
    S16767C1 lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S16767C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16767C1)");
    check_field_offset(lv, s16767c1f0, 0, "S16767C1.s16767c1f0");
    check_field_offset(lv, s16767c1f1, 4, "S16767C1.s16767c1f1");
    check_field_offset(lv, s16767c1f2, ABISELECT(24,20), "S16767C1.s16767c1f2");
  }
}
static Arrange_To_Call_Me vS16767C1(Test_S16767C1, "S16767C1", ABISELECT(56,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2455C3  : S20636C21_nt {
  int s2455c3f0;
};
//SIG(-1 S2455C3) C1{ BC2{} Fi}



static void Test_S2455C3()
{
  extern Class_Descriptor cd_S2455C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2455C3, buf);
    S2455C3 &lv = *(new (buf) S2455C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2455C3)");
    check2(__alignof__(lv), 4, "__alignof__(S2455C3)");
    check_base_class_offset(lv, (S20636C21_nt*), 0, "S2455C3");
    check_field_offset(lv, s2455c3f0, 0, "S2455C3.s2455c3f0");
    test_class_info(&lv, &cd_S2455C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2455C3(Test_S2455C3, "S2455C3", 4);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2455C2  : S2455C3 {
  int s2455c2f0;
};
//SIG(-1 S2455C2) C1{ BC2{ BC3{} Fi} Fi}



static void Test_S2455C2()
{
  extern Class_Descriptor cd_S2455C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2455C2, buf);
    S2455C2 &lv = *(new (buf) S2455C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2455C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2455C2)");
    check_base_class_offset(lv, (S20636C21_nt*)(S2455C3*), 0, "S2455C2");
    check_base_class_offset(lv, (S2455C3*), 0, "S2455C2");
    check_field_offset(lv, s2455c2f0, 4, "S2455C2.s2455c2f0");
    test_class_info(&lv, &cd_S2455C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2455C2(Test_S2455C2, "S2455C2", 8);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2455C5  : S2455C3 {
  int s2455c5f0;
};
//SIG(-1 S2455C5) C1{ BC2{ BC3{} Fi} Fi}



static void Test_S2455C5()
{
  extern Class_Descriptor cd_S2455C5;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2455C5, buf);
    S2455C5 &lv = *(new (buf) S2455C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2455C5)");
    check2(__alignof__(lv), 4, "__alignof__(S2455C5)");
    check_base_class_offset(lv, (S20636C21_nt*)(S2455C3*), 0, "S2455C5");
    check_base_class_offset(lv, (S2455C3*), 0, "S2455C5");
    check_field_offset(lv, s2455c5f0, 4, "S2455C5.s2455c5f0");
    test_class_info(&lv, &cd_S2455C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2455C5(Test_S2455C5, "S2455C5", 8);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2455C1  : S2455C2 , S2455C5 {
  ::S2455C2 s2455c1f0;
  ::S2455C2 s2455c1f1;
  ::S2455C5 s2455c1f2;
  ::S2455C3 s2455c1f3;
};
//SIG(1 S2455C1) C1{ BC2{ BC3{ BC4{} Fi} Fi} BC5{ BC3 Fi} FC2 FC2 FC5 FC3}



static void Test_S2455C1()
{
  extern Class_Descriptor cd_S2455C1;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S2455C1, buf);
    S2455C1 &lv = *(new (buf) S2455C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S2455C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2455C1)");
    check_base_class_offset(lv, (S20636C21_nt*)(S2455C3*)(S2455C2*), 0, "S2455C1");
    check_base_class_offset(lv, (S2455C3*)(S2455C2*), 0, "S2455C1");
    check_base_class_offset(lv, (S2455C2*), 0, "S2455C1");
    check_base_class_offset(lv, (S20636C21_nt*)(S2455C3*)(S2455C5*), 8, "S2455C1");
    check_base_class_offset(lv, (S2455C3*)(S2455C5*), 8, "S2455C1");
    check_base_class_offset(lv, (S2455C5*), 8, "S2455C1");
    check_field_offset(lv, s2455c1f0, 16, "S2455C1.s2455c1f0");
    check_field_offset(lv, s2455c1f1, 24, "S2455C1.s2455c1f1");
    check_field_offset(lv, s2455c1f2, 32, "S2455C1.s2455c1f2");
    check_field_offset(lv, s2455c1f3, 40, "S2455C1.s2455c1f3");
    test_class_info(&lv, &cd_S2455C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2455C1(Test_S2455C1, "S2455C1", 44);

#else // __cplusplus

extern Class_Descriptor cd_S20636C21_nt;
extern VTBL_ENTRY _ZTI12S20636C21_nt[];
extern Class_Descriptor cd_S2455C3;
extern Class_Descriptor cd_S2455C2;
extern Class_Descriptor cd_S20636C21_nt;
extern VTBL_ENTRY _ZTI12S20636C21_nt[];
extern Class_Descriptor cd_S2455C3;
extern Class_Descriptor cd_S2455C5;
static Base_Class bases_S2455C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20636C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2455C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2455C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20636C21_nt,    8, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2455C3,    8, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2455C5,    8, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2455C1 = {  "S2455C1", // class name
  bases_S2455C1, 6,
  0, // no vftv
  0, //no vtt
  44, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17813C2_nt  {
  int s17813c2f0[5];
};
//SIG(-1 S17813C2_nt) C1{ Fi[5]}



//skip512 S17813C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17813C1  {
  void *s17813c1f0;
  int s17813c1f1[3];
  void *s17813c1f2[8];
  int s17813c1f3[4];
  char s17813c1f4[2];
  ::S17813C2_nt s17813c1f5;
  char s17813c1f6[2];
  void  mf17813c1(); // _ZN8S17813C19mf17813c1Ev
};
//SIG(1 S17813C1) C1{ m Fp Fi[3] Fp[8] Fi[4] Fc[2] FC2{ Fi[5]} Fc[2]}


void  S17813C1 ::mf17813c1(){}

static void Test_S17813C1()
{
  {
    init_simple_test("S17813C1");
    S17813C1 lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S17813C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17813C1)");
    check_field_offset(lv, s17813c1f0, 0, "S17813C1.s17813c1f0");
    check_field_offset(lv, s17813c1f1, ABISELECT(8,4), "S17813C1.s17813c1f1");
    check_field_offset(lv, s17813c1f2, ABISELECT(24,16), "S17813C1.s17813c1f2");
    check_field_offset(lv, s17813c1f3, ABISELECT(88,48), "S17813C1.s17813c1f3");
    check_field_offset(lv, s17813c1f4, ABISELECT(104,64), "S17813C1.s17813c1f4");
    check_field_offset(lv, s17813c1f5, ABISELECT(108,68), "S17813C1.s17813c1f5");
    check_field_offset(lv, s17813c1f6, ABISELECT(128,88), "S17813C1.s17813c1f6");
  }
}
static Arrange_To_Call_Me vS17813C1(Test_S17813C1, "S17813C1", ABISELECT(136,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13103C4_nt  {
  int s13103c4f0;
  int s13103c4f1;
};
//SIG(1 S13103C4_nt) C1{ Fi[2]}



//skip512 S13103C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S13103C3  {
  void *s13103c3f0;
  int s13103c3f1;
  int s13103c3f2;
  long s13103c3f3;
  ::S13103C4_nt s13103c3f4;
};
//SIG(1 S13103C3) U1{ Fp Fi Fi Fl FC2{ Fi Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S13103C1  {
  int s13103c1f0[2];
  ::S21713C13_nt s13103c1f1;
  ::S13103C3 s13103c1f2;
};
//SIG(1 S13103C1) C1{ Fi[2] FC2{ Fi[4]} FU3{ Fp Fi Fi Fl FC4{ Fi Fi}}}



static void Test_S13103C1()
{
  {
    init_simple_test("S13103C1");
    S13103C1 lv;
    check2(sizeof(lv), 32, "sizeof(S13103C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13103C1)");
    check_field_offset(lv, s13103c1f0, 0, "S13103C1.s13103c1f0");
    check_field_offset(lv, s13103c1f1, 8, "S13103C1.s13103c1f1");
    check_field_offset(lv, s13103c1f2, 24, "S13103C1.s13103c1f2");
  }
}
static Arrange_To_Call_Me vS13103C1(Test_S13103C1, "S13103C1", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16726C4_nt  {
  void *s16726c4f0;
  int s16726c4f1;
  void  mf16726c4(); // _ZN11S16726C4_nt9mf16726c4Ev
};
//SIG(-1 S16726C4_nt) C1{ m Fp Fi}


void  S16726C4_nt ::mf16726c4(){}

//skip512 S16726C4_nt

#else // __cplusplus

Class_Descriptor cd_S16726C4_nt = {  "S16726C4_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  S16726C5  {
  int s16726c5f0[20];
};
//SIG(-1 S16726C5) C1{ Fi[20]}



static void Test_S16726C5()
{
  {
    init_simple_test("S16726C5");
    S16726C5 lv;
    check2(sizeof(lv), 80, "sizeof(S16726C5)");
    check2(__alignof__(lv), 4, "__alignof__(S16726C5)");
    check_field_offset(lv, s16726c5f0, 0, "S16726C5.s16726c5f0");
  }
}
static Arrange_To_Call_Me vS16726C5(Test_S16726C5, "S16726C5", 80);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16726C3  : S16726C4_nt {
  ::S16726C5 s16726c3f0;
};
//SIG(-1 S16726C3) C1{ BC2{ m Fp Fi} FC3{ Fi[20]}}



static void Test_S16726C3()
{
  extern Class_Descriptor cd_S16726C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S16726C3, buf);
    S16726C3 &lv = *(new (buf) S16726C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S16726C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16726C3)");
    check_base_class_offset(lv, (S16726C4_nt*), 0, "S16726C3");
    check_field_offset(lv, s16726c3f0, ABISELECT(16,8), "S16726C3.s16726c3f0");
    test_class_info(&lv, &cd_S16726C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16726C3(Test_S16726C3, "S16726C3", ABISELECT(96,88));

#else // __cplusplus

extern Class_Descriptor cd_S16726C4_nt;
static Base_Class bases_S16726C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16726C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S16726C3 = {  "S16726C3", // class name
  bases_S16726C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(96,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  S16726C2  {
  int s16726c2f0;
  ::S16726C3 s16726c2f1;
  void  mf16726c2(); // _ZN8S16726C29mf16726c2Ev
};
//SIG(-1 S16726C2) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ Fi[20]}}}


void  S16726C2 ::mf16726c2(){}

static void Test_S16726C2()
{
  {
    init_simple_test("S16726C2");
    S16726C2 lv;
    check2(sizeof(lv), ABISELECT(104,92), "sizeof(S16726C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16726C2)");
    check_field_offset(lv, s16726c2f0, 0, "S16726C2.s16726c2f0");
    check_field_offset(lv, s16726c2f1, ABISELECT(8,4), "S16726C2.s16726c2f1");
  }
}
static Arrange_To_Call_Me vS16726C2(Test_S16726C2, "S16726C2", ABISELECT(104,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16726C1  {
  int s16726c1f0;
  ::S16726C2 s16726c1f1;
  void  mf16726c1(); // _ZN8S16726C19mf16726c1Ev
};
//SIG(1 S16726C1) C1{ m Fi FC2{ m Fi FC3{ BC4{ m Fp Fi} FC5{ Fi[20]}}}}


void  S16726C1 ::mf16726c1(){}

static void Test_S16726C1()
{
  {
    init_simple_test("S16726C1");
    S16726C1 lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S16726C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16726C1)");
    check_field_offset(lv, s16726c1f0, 0, "S16726C1.s16726c1f0");
    check_field_offset(lv, s16726c1f1, ABISELECT(8,4), "S16726C1.s16726c1f1");
  }
}
static Arrange_To_Call_Me vS16726C1(Test_S16726C1, "S16726C1", ABISELECT(112,96));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8926C2  {
  char s8926c2f0;
  int s8926c2f1;
  virtual  ~S8926C2(); // _ZN7S8926C2D1Ev
  virtual void  v2(); // _ZN7S8926C22v2Ev
  virtual void  v3(); // _ZN7S8926C22v3Ev
  virtual void  v4(); // _ZN7S8926C22v4Ev
  virtual void  v5(); // _ZN7S8926C22v5Ev
  S8926C2(); // tgen
};
//SIG(-1 S8926C2) C1{ vd v1 v2 v3 v4 Fc Fi}


 S8926C2 ::~S8926C2(){ note_dtor("S8926C2", this);}
void  S8926C2 ::v2(){vfunc_called(this, "_ZN7S8926C22v2Ev");}
void  S8926C2 ::v3(){vfunc_called(this, "_ZN7S8926C22v3Ev");}
void  S8926C2 ::v4(){vfunc_called(this, "_ZN7S8926C22v4Ev");}
void  S8926C2 ::v5(){vfunc_called(this, "_ZN7S8926C22v5Ev");}
S8926C2 ::S8926C2(){ note_ctor("S8926C2", this);} // tgen

static void Test_S8926C2()
{
  extern Class_Descriptor cd_S8926C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8926C2, buf);
    S8926C2 *dp, &lv = *(dp=new (buf) S8926C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8926C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8926C2)");
    check_field_offset(lv, s8926c2f0, ABISELECT(8,4), "S8926C2.s8926c2f0");
    check_field_offset(lv, s8926c2f1, ABISELECT(12,8), "S8926C2.s8926c2f1");
    test_class_info(&lv, &cd_S8926C2);
    dp->~S8926C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8926C2(Test_S8926C2, "S8926C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8926C2C1Ev();
extern void _ZN7S8926C2D1Ev();
Name_Map name_map_S8926C2[] = {
  NSPAIR(_ZN7S8926C2C1Ev),
  NSPAIR(_ZN7S8926C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8926C2[];
extern void _ZN7S8926C2D1Ev();
extern void _ZN7S8926C2D0Ev();
extern void _ZN7S8926C22v2Ev();
extern void _ZN7S8926C22v3Ev();
extern void _ZN7S8926C22v4Ev();
extern void _ZN7S8926C22v5Ev();
static  VTBL_ENTRY vtc_S8926C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8926C2[0]),
  (VTBL_ENTRY)&_ZN7S8926C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8926C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8926C2[];
extern  VTBL_ENTRY _ZTV7S8926C2[];
Class_Descriptor cd_S8926C2 = {  "S8926C2", // class name
  0,0,//no base classes
  &(vtc_S8926C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8926C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8926C2),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  S8926C1  : S8926C2 {
  void *s8926c1f0;
  char s8926c1f1;
  __tsi64 s8926c1f2;
  int s8926c1f3;
  virtual  ~S8926C1(); // _ZN7S8926C1D1Ev
  virtual void  v1(); // _ZN7S8926C12v1Ev
  S8926C1(); // tgen
};
//SIG(1 S8926C1) C1{ BC2{ vd v2 v3 v4 v5 Fc Fi} vd v1 Fp Fc FL Fi}


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

static void Test_S8926C1()
{
  extern Class_Descriptor cd_S8926C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S8926C1, buf);
    S8926C1 *dp, &lv = *(dp=new (buf) S8926C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S8926C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8926C1)");
    check_base_class_offset(lv, (S8926C2*), 0, "S8926C1");
    check_field_offset(lv, s8926c1f0, ABISELECT(16,12), "S8926C1.s8926c1f0");
    check_field_offset(lv, s8926c1f1, ABISELECT(24,16), "S8926C1.s8926c1f1");
    check_field_offset(lv, s8926c1f2, ABISELECT(32,20), "S8926C1.s8926c1f2");
    check_field_offset(lv, s8926c1f3, ABISELECT(40,28), "S8926C1.s8926c1f3");
    test_class_info(&lv, &cd_S8926C1);
    dp->~S8926C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8926C1(Test_S8926C1, "S8926C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S8926C1C1Ev();
extern void _ZN7S8926C1D1Ev();
Name_Map name_map_S8926C1[] = {
  NSPAIR(_ZN7S8926C1C1Ev),
  NSPAIR(_ZN7S8926C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8926C2;
extern VTBL_ENTRY _ZTI7S8926C2[];
extern  VTBL_ENTRY _ZTV7S8926C2[];
static Base_Class bases_S8926C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8926C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8926C1[];
extern void _ZN7S8926C1D1Ev();
extern void _ZN7S8926C1D0Ev();
extern void _ZN7S8926C22v2Ev();
extern void _ZN7S8926C22v3Ev();
extern void _ZN7S8926C22v4Ev();
extern void _ZN7S8926C22v5Ev();
extern void _ZN7S8926C12v1Ev();
static  VTBL_ENTRY vtc_S8926C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8926C1[0]),
  (VTBL_ENTRY)&_ZN7S8926C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8926C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8926C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8926C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8926C1[];
extern  VTBL_ENTRY _ZTV7S8926C1[];
Class_Descriptor cd_S8926C1 = {  "S8926C1", // class name
  bases_S8926C1, 1,
  &(vtc_S8926C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S8926C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8926C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8925C2  {
  char s8925c2f0;
  int s8925c2f1;
  virtual  ~S8925C2(); // _ZN7S8925C2D1Ev
  virtual void  v2(); // _ZN7S8925C22v2Ev
  virtual void  v3(); // _ZN7S8925C22v3Ev
  virtual void  v4(); // _ZN7S8925C22v4Ev
  virtual void  v5(); // _ZN7S8925C22v5Ev
  S8925C2(); // tgen
};
//SIG(-1 S8925C2) C1{ vd v1 v2 v3 v4 Fc Fi}


 S8925C2 ::~S8925C2(){ note_dtor("S8925C2", this);}
void  S8925C2 ::v2(){vfunc_called(this, "_ZN7S8925C22v2Ev");}
void  S8925C2 ::v3(){vfunc_called(this, "_ZN7S8925C22v3Ev");}
void  S8925C2 ::v4(){vfunc_called(this, "_ZN7S8925C22v4Ev");}
void  S8925C2 ::v5(){vfunc_called(this, "_ZN7S8925C22v5Ev");}
S8925C2 ::S8925C2(){ note_ctor("S8925C2", this);} // tgen

static void Test_S8925C2()
{
  extern Class_Descriptor cd_S8925C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8925C2, buf);
    S8925C2 *dp, &lv = *(dp=new (buf) S8925C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8925C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8925C2)");
    check_field_offset(lv, s8925c2f0, ABISELECT(8,4), "S8925C2.s8925c2f0");
    check_field_offset(lv, s8925c2f1, ABISELECT(12,8), "S8925C2.s8925c2f1");
    test_class_info(&lv, &cd_S8925C2);
    dp->~S8925C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8925C2(Test_S8925C2, "S8925C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8925C2C1Ev();
extern void _ZN7S8925C2D1Ev();
Name_Map name_map_S8925C2[] = {
  NSPAIR(_ZN7S8925C2C1Ev),
  NSPAIR(_ZN7S8925C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8925C2[];
extern void _ZN7S8925C2D1Ev();
extern void _ZN7S8925C2D0Ev();
extern void _ZN7S8925C22v2Ev();
extern void _ZN7S8925C22v3Ev();
extern void _ZN7S8925C22v4Ev();
extern void _ZN7S8925C22v5Ev();
static  VTBL_ENTRY vtc_S8925C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8925C2[0]),
  (VTBL_ENTRY)&_ZN7S8925C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8925C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8925C2[];
extern  VTBL_ENTRY _ZTV7S8925C2[];
Class_Descriptor cd_S8925C2 = {  "S8925C2", // class name
  0,0,//no base classes
  &(vtc_S8925C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8925C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8925C2),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  S8925C1  : S8925C2 {
  void *s8925c1f0;
  char s8925c1f1;
  long s8925c1f2;
  int s8925c1f3;
  virtual  ~S8925C1(); // _ZN7S8925C1D1Ev
  virtual void  v1(); // _ZN7S8925C12v1Ev
  S8925C1(); // tgen
};
//SIG(1 S8925C1) C1{ BC2{ vd v2 v3 v4 v5 Fc Fi} vd v1 Fp Fc Fl Fi}


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

static void Test_S8925C1()
{
  extern Class_Descriptor cd_S8925C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S8925C1, buf);
    S8925C1 *dp, &lv = *(dp=new (buf) S8925C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S8925C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8925C1)");
    check_base_class_offset(lv, (S8925C2*), 0, "S8925C1");
    check_field_offset(lv, s8925c1f0, ABISELECT(16,12), "S8925C1.s8925c1f0");
    check_field_offset(lv, s8925c1f1, ABISELECT(24,16), "S8925C1.s8925c1f1");
    check_field_offset(lv, s8925c1f2, ABISELECT(32,20), "S8925C1.s8925c1f2");
    check_field_offset(lv, s8925c1f3, ABISELECT(40,24), "S8925C1.s8925c1f3");
    test_class_info(&lv, &cd_S8925C1);
    dp->~S8925C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8925C1(Test_S8925C1, "S8925C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S8925C1C1Ev();
extern void _ZN7S8925C1D1Ev();
Name_Map name_map_S8925C1[] = {
  NSPAIR(_ZN7S8925C1C1Ev),
  NSPAIR(_ZN7S8925C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8925C2;
extern VTBL_ENTRY _ZTI7S8925C2[];
extern  VTBL_ENTRY _ZTV7S8925C2[];
static Base_Class bases_S8925C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8925C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8925C1[];
extern void _ZN7S8925C1D1Ev();
extern void _ZN7S8925C1D0Ev();
extern void _ZN7S8925C22v2Ev();
extern void _ZN7S8925C22v3Ev();
extern void _ZN7S8925C22v4Ev();
extern void _ZN7S8925C22v5Ev();
extern void _ZN7S8925C12v1Ev();
static  VTBL_ENTRY vtc_S8925C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8925C1[0]),
  (VTBL_ENTRY)&_ZN7S8925C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8925C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8925C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8925C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8925C1[];
extern  VTBL_ENTRY _ZTV7S8925C1[];
Class_Descriptor cd_S8925C1 = {  "S8925C1", // class name
  bases_S8925C1, 1,
  &(vtc_S8925C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S8925C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8925C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20328C2  {
  int s20328c2f0;
  void *s20328c2f1;
  virtual  ~S20328C2(); // _ZN8S20328C2D1Ev
  virtual void  v6(); // _ZN8S20328C22v6Ev
  S20328C2(); // tgen
};
//SIG(-1 S20328C2) C1{ vd v1 Fi Fp}


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

static void Test_S20328C2()
{
  extern Class_Descriptor cd_S20328C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20328C2, buf);
    S20328C2 *dp, &lv = *(dp=new (buf) S20328C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20328C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20328C2)");
    check_field_offset(lv, s20328c2f0, ABISELECT(8,4), "S20328C2.s20328c2f0");
    check_field_offset(lv, s20328c2f1, ABISELECT(16,8), "S20328C2.s20328c2f1");
    test_class_info(&lv, &cd_S20328C2);
    dp->~S20328C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20328C2(Test_S20328C2, "S20328C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20328C2C1Ev();
extern void _ZN8S20328C2D1Ev();
Name_Map name_map_S20328C2[] = {
  NSPAIR(_ZN8S20328C2C1Ev),
  NSPAIR(_ZN8S20328C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20328C2[];
extern void _ZN8S20328C2D1Ev();
extern void _ZN8S20328C2D0Ev();
extern void _ZN8S20328C22v6Ev();
static  VTBL_ENTRY vtc_S20328C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20328C2[0]),
  (VTBL_ENTRY)&_ZN8S20328C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20328C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20328C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20328C2[];
extern  VTBL_ENTRY _ZTV8S20328C2[];
Class_Descriptor cd_S20328C2 = {  "S20328C2", // class name
  0,0,//no base classes
  &(vtc_S20328C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20328C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20328C2),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  S20328C1  : virtual S20328C2 {
  int s20328c1f0[9];
  virtual  ~S20328C1(); // _ZN8S20328C1D2Ev
  virtual void  v1(); // _ZN8S20328C12v1Ev
  virtual void  v2(); // _ZN8S20328C12v2Ev
  virtual void  v3(); // _ZN8S20328C12v3Ev
  virtual void  v4(); // _ZN8S20328C12v4Ev
  virtual void  v5(); // _ZN8S20328C12v5Ev
  S20328C1(); // tgen
};
//SIG(1 S20328C1) C1{ VBC2{ vd v6 Fi Fp} vd v1 v2 v3 v4 v5 Fi[9]}


 S20328C1 ::~S20328C1(){ note_dtor("S20328C1", this);}
void  S20328C1 ::v1(){vfunc_called(this, "_ZN8S20328C12v1Ev");}
void  S20328C1 ::v2(){vfunc_called(this, "_ZN8S20328C12v2Ev");}
void  S20328C1 ::v3(){vfunc_called(this, "_ZN8S20328C12v3Ev");}
void  S20328C1 ::v4(){vfunc_called(this, "_ZN8S20328C12v4Ev");}
void  S20328C1 ::v5(){vfunc_called(this, "_ZN8S20328C12v5Ev");}
S20328C1 ::S20328C1(){ note_ctor("S20328C1", this);} // tgen

static void Test_S20328C1()
{
  extern Class_Descriptor cd_S20328C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S20328C1, buf);
    S20328C1 *dp, &lv = *(dp=new (buf) S20328C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S20328C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20328C1)");
    check_base_class_offset(lv, (S20328C2*), ABISELECT(48,40), "S20328C1");
    check_field_offset(lv, s20328c1f0, ABISELECT(8,4), "S20328C1.s20328c1f0");
    test_class_info(&lv, &cd_S20328C1);
    dp->~S20328C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20328C1(Test_S20328C1, "S20328C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN8S20328C1C1Ev();
extern void _ZN8S20328C1D2Ev();
Name_Map name_map_S20328C1[] = {
  NSPAIR(_ZN8S20328C1C1Ev),
  NSPAIR(_ZN8S20328C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20328C2;
extern VTBL_ENTRY _ZTI8S20328C2[];
extern  VTBL_ENTRY _ZTV8S20328C2[];
static Base_Class bases_S20328C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20328C2,    ABISELECT(48,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20328C1[];
extern void _ZN8S20328C1D1Ev();
extern void _ZN8S20328C1D0Ev();
extern void _ZN8S20328C12v1Ev();
extern void _ZN8S20328C12v2Ev();
extern void _ZN8S20328C12v3Ev();
extern void _ZN8S20328C12v4Ev();
extern void _ZN8S20328C12v5Ev();
extern void ABISELECT(_ZTv0_n24_N8S20328C1D1Ev,_ZTv0_n12_N8S20328C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S20328C1D1Ev,_ZThn40_N8S20328C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20328C1D0Ev,_ZTv0_n12_N8S20328C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S20328C1D0Ev,_ZThn40_N8S20328C1D0Ev)() __attribute__((weak));
extern void _ZN8S20328C22v6Ev();
static  VTBL_ENTRY vtc_S20328C1[] = {
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20328C1[0]),
  (VTBL_ENTRY)&_ZN8S20328C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20328C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20328C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20328C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20328C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20328C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20328C12v5Ev,
  0,
  ABISELECT(-48,-40),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20328C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20328C1D1Ev,_ZTv0_n12_N8S20328C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20328C1D0Ev,_ZTv0_n12_N8S20328C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20328C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20328C1[];
static  VTT_ENTRY vtt_S20328C1[] = {
  {&(_ZTV8S20328C1[3]),  3,17},
  {&(_ZTV8S20328C1[14]),  14,17},
};
extern VTBL_ENTRY _ZTI8S20328C1[];
extern  VTBL_ENTRY _ZTV8S20328C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20328C1[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20328C1D0Ev,_ZTv0_n12_N8S20328C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20328C1D0Ev,_ZThn40_N8S20328C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20328C1D1Ev,_ZTv0_n12_N8S20328C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20328C1D1Ev,_ZThn40_N8S20328C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20328C1 = {  "S20328C1", // class name
  bases_S20328C1, 1,
  &(vtc_S20328C1[0]), // expected_vtbl_contents
  &(vtt_S20328C1[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI8S20328C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20328C1),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20328C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6561C2  {
  __tsi64 s6561c2f0;
  virtual void  v2(); // _ZN7S6561C22v2Ev
  virtual void  v3(); // _ZN7S6561C22v3Ev
  virtual void  v4(); // _ZN7S6561C22v4Ev
  virtual void  v5(); // _ZN7S6561C22v5Ev
  virtual void  v6(); // _ZN7S6561C22v6Ev
  virtual void  v7(); // _ZN7S6561C22v7Ev
  ~S6561C2(); // tgen
  S6561C2(); // tgen
};
//SIG(-1 S6561C2) C1{ v1 v2 v3 v4 v5 v6 FL}


void  S6561C2 ::v2(){vfunc_called(this, "_ZN7S6561C22v2Ev");}
void  S6561C2 ::v3(){vfunc_called(this, "_ZN7S6561C22v3Ev");}
void  S6561C2 ::v4(){vfunc_called(this, "_ZN7S6561C22v4Ev");}
void  S6561C2 ::v5(){vfunc_called(this, "_ZN7S6561C22v5Ev");}
void  S6561C2 ::v6(){vfunc_called(this, "_ZN7S6561C22v6Ev");}
void  S6561C2 ::v7(){vfunc_called(this, "_ZN7S6561C22v7Ev");}
S6561C2 ::~S6561C2(){ note_dtor("S6561C2", this);} // tgen
S6561C2 ::S6561C2(){ note_ctor("S6561C2", this);} // tgen

static void Test_S6561C2()
{
  extern Class_Descriptor cd_S6561C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6561C2, buf);
    S6561C2 *dp, &lv = *(dp=new (buf) S6561C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6561C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6561C2)");
    check_field_offset(lv, s6561c2f0, ABISELECT(8,4), "S6561C2.s6561c2f0");
    test_class_info(&lv, &cd_S6561C2);
    dp->~S6561C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6561C2(Test_S6561C2, "S6561C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6561C2C1Ev();
extern void _ZN7S6561C2D1Ev();
Name_Map name_map_S6561C2[] = {
  NSPAIR(_ZN7S6561C2C1Ev),
  NSPAIR(_ZN7S6561C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6561C2[];
extern void _ZN7S6561C22v2Ev();
extern void _ZN7S6561C22v3Ev();
extern void _ZN7S6561C22v4Ev();
extern void _ZN7S6561C22v5Ev();
extern void _ZN7S6561C22v6Ev();
extern void _ZN7S6561C22v7Ev();
static  VTBL_ENTRY vtc_S6561C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6561C2[0]),
  (VTBL_ENTRY)&_ZN7S6561C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S6561C2[];
extern  VTBL_ENTRY _ZTV7S6561C2[];
Class_Descriptor cd_S6561C2 = {  "S6561C2", // class name
  0,0,//no base classes
  &(vtc_S6561C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6561C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6561C2),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  S6561C1  : S6561C2 {
  ::S20636C21_nt s6561c1f0;
  ::S21049C4 s6561c1f1;
  virtual void  v1(); // _ZN7S6561C12v1Ev
  ~S6561C1(); // tgen
  S6561C1(); // tgen
};
//SIG(1 S6561C1) C1{ BC2{ v2 v3 v4 v5 v6 v7 FL} v1 FC3{} FC4{ v8}}


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

static void Test_S6561C1()
{
  extern Class_Descriptor cd_S6561C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6561C1, buf);
    S6561C1 *dp, &lv = *(dp=new (buf) S6561C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6561C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6561C1)");
    check_base_class_offset(lv, (S6561C2*), 0, "S6561C1");
    check_field_offset(lv, s6561c1f0, ABISELECT(16,12), "S6561C1.s6561c1f0");
    check_field_offset(lv, s6561c1f1, ABISELECT(24,16), "S6561C1.s6561c1f1");
    test_class_info(&lv, &cd_S6561C1);
    dp->~S6561C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6561C1(Test_S6561C1, "S6561C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6561C1C1Ev();
extern void _ZN7S6561C1D1Ev();
Name_Map name_map_S6561C1[] = {
  NSPAIR(_ZN7S6561C1C1Ev),
  NSPAIR(_ZN7S6561C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6561C2;
extern VTBL_ENTRY _ZTI7S6561C2[];
extern  VTBL_ENTRY _ZTV7S6561C2[];
static Base_Class bases_S6561C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6561C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6561C1[];
extern void _ZN7S6561C22v2Ev();
extern void _ZN7S6561C22v3Ev();
extern void _ZN7S6561C22v4Ev();
extern void _ZN7S6561C22v5Ev();
extern void _ZN7S6561C22v6Ev();
extern void _ZN7S6561C22v7Ev();
extern void _ZN7S6561C12v1Ev();
static  VTBL_ENTRY vtc_S6561C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6561C1[0]),
  (VTBL_ENTRY)&_ZN7S6561C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6561C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6561C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6561C1[];
extern  VTBL_ENTRY _ZTV7S6561C1[];
Class_Descriptor cd_S6561C1 = {  "S6561C1", // class name
  bases_S6561C1, 1,
  &(vtc_S6561C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6561C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6561C1),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  S6652C3  {
  void *s6652c3f0;
  char s6652c3f1;
  virtual void  v4(); // _ZN7S6652C32v4Ev
  virtual void  v5(); // _ZN7S6652C32v5Ev
  ~S6652C3(); // tgen
  S6652C3(); // tgen
};
//SIG(-1 S6652C3) C1{ v1 v2 Fp Fc}


void  S6652C3 ::v4(){vfunc_called(this, "_ZN7S6652C32v4Ev");}
void  S6652C3 ::v5(){vfunc_called(this, "_ZN7S6652C32v5Ev");}
S6652C3 ::~S6652C3(){ note_dtor("S6652C3", this);} // tgen
S6652C3 ::S6652C3(){ note_ctor("S6652C3", this);} // tgen

static void Test_S6652C3()
{
  extern Class_Descriptor cd_S6652C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6652C3, buf);
    S6652C3 *dp, &lv = *(dp=new (buf) S6652C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6652C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6652C3)");
    check_field_offset(lv, s6652c3f0, ABISELECT(8,4), "S6652C3.s6652c3f0");
    check_field_offset(lv, s6652c3f1, ABISELECT(16,8), "S6652C3.s6652c3f1");
    test_class_info(&lv, &cd_S6652C3);
    dp->~S6652C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6652C3(Test_S6652C3, "S6652C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6652C3C1Ev();
extern void _ZN7S6652C3D1Ev();
Name_Map name_map_S6652C3[] = {
  NSPAIR(_ZN7S6652C3C1Ev),
  NSPAIR(_ZN7S6652C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6652C3[];
extern void _ZN7S6652C32v4Ev();
extern void _ZN7S6652C32v5Ev();
static  VTBL_ENTRY vtc_S6652C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6652C3[0]),
  (VTBL_ENTRY)&_ZN7S6652C32v4Ev,
  (VTBL_ENTRY)&_ZN7S6652C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S6652C3[];
extern  VTBL_ENTRY _ZTV7S6652C3[];
Class_Descriptor cd_S6652C3 = {  "S6652C3", // class name
  0,0,//no base classes
  &(vtc_S6652C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6652C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6652C3),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  S6652C2  {
  ::S6652C3 s6652c2f0;
  virtual void  v3(); // _ZN7S6652C22v3Ev
  ~S6652C2(); // tgen
  S6652C2(); // tgen
};
//SIG(-1 S6652C2) C1{ v1 FC2{ v2 v3 Fp Fc}}


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

static void Test_S6652C2()
{
  extern Class_Descriptor cd_S6652C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6652C2, buf);
    S6652C2 *dp, &lv = *(dp=new (buf) S6652C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6652C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6652C2)");
    check_field_offset(lv, s6652c2f0, ABISELECT(8,4), "S6652C2.s6652c2f0");
    test_class_info(&lv, &cd_S6652C2);
    dp->~S6652C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6652C2(Test_S6652C2, "S6652C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6652C2C1Ev();
extern void _ZN7S6652C2D1Ev();
Name_Map name_map_S6652C2[] = {
  NSPAIR(_ZN7S6652C2C1Ev),
  NSPAIR(_ZN7S6652C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6652C2[];
extern void _ZN7S6652C22v3Ev();
static  VTBL_ENTRY vtc_S6652C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6652C2[0]),
  (VTBL_ENTRY)&_ZN7S6652C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S6652C2[];
extern  VTBL_ENTRY _ZTV7S6652C2[];
Class_Descriptor cd_S6652C2 = {  "S6652C2", // class name
  0,0,//no base classes
  &(vtc_S6652C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6652C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6652C2),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  S6652C4  : S6652C3 {
  virtual void  v6(); // _ZN7S6652C42v6Ev
  ~S6652C4(); // tgen
  S6652C4(); // tgen
};
//SIG(-1 S6652C4) C1{ BC2{ v2 v3 Fp Fc} v1}


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

static void Test_S6652C4()
{
  extern Class_Descriptor cd_S6652C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6652C4, buf);
    S6652C4 *dp, &lv = *(dp=new (buf) S6652C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6652C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6652C4)");
    check_base_class_offset(lv, (S6652C3*), 0, "S6652C4");
    test_class_info(&lv, &cd_S6652C4);
    dp->~S6652C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6652C4(Test_S6652C4, "S6652C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6652C4C1Ev();
extern void _ZN7S6652C4D1Ev();
Name_Map name_map_S6652C4[] = {
  NSPAIR(_ZN7S6652C4C1Ev),
  NSPAIR(_ZN7S6652C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6652C3;
extern VTBL_ENTRY _ZTI7S6652C3[];
extern  VTBL_ENTRY _ZTV7S6652C3[];
static Base_Class bases_S6652C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6652C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6652C4[];
extern void _ZN7S6652C32v4Ev();
extern void _ZN7S6652C32v5Ev();
extern void _ZN7S6652C42v6Ev();
static  VTBL_ENTRY vtc_S6652C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6652C4[0]),
  (VTBL_ENTRY)&_ZN7S6652C32v4Ev,
  (VTBL_ENTRY)&_ZN7S6652C32v5Ev,
  (VTBL_ENTRY)&_ZN7S6652C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S6652C4[];
extern  VTBL_ENTRY _ZTV7S6652C4[];
Class_Descriptor cd_S6652C4 = {  "S6652C4", // class name
  bases_S6652C4, 1,
  &(vtc_S6652C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6652C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6652C4),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  S6652C1  : S6652C2 , S6652C4 {
  virtual void  v1(); // _ZN7S6652C12v1Ev
  virtual void  v2(); // _ZN7S6652C12v2Ev
  ~S6652C1(); // tgen
  S6652C1(); // tgen
};
//SIG(1 S6652C1) C1{ BC2{ v3 FC3{ v4 v5 Fp Fc}} BC4{ BC3 v6} v1 v2}


void  S6652C1 ::v1(){vfunc_called(this, "_ZN7S6652C12v1Ev");}
void  S6652C1 ::v2(){vfunc_called(this, "_ZN7S6652C12v2Ev");}
S6652C1 ::~S6652C1(){ note_dtor("S6652C1", this);} // tgen
S6652C1 ::S6652C1(){ note_ctor("S6652C1", this);} // tgen

static void Test_S6652C1()
{
  extern Class_Descriptor cd_S6652C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S6652C1, buf);
    S6652C1 *dp, &lv = *(dp=new (buf) S6652C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S6652C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6652C1)");
    check_base_class_offset(lv, (S6652C2*), 0, "S6652C1");
    check_base_class_offset(lv, (S6652C3*)(S6652C4*), ABISELECT(32,16), "S6652C1");
    check_base_class_offset(lv, (S6652C4*), ABISELECT(32,16), "S6652C1");
    test_class_info(&lv, &cd_S6652C1);
    dp->~S6652C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6652C1(Test_S6652C1, "S6652C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S6652C1C1Ev();
extern void _ZN7S6652C1D1Ev();
Name_Map name_map_S6652C1[] = {
  NSPAIR(_ZN7S6652C1C1Ev),
  NSPAIR(_ZN7S6652C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6652C2;
extern VTBL_ENTRY _ZTI7S6652C2[];
extern  VTBL_ENTRY _ZTV7S6652C2[];
extern Class_Descriptor cd_S6652C3;
extern VTBL_ENTRY _ZTI7S6652C3[];
extern  VTBL_ENTRY _ZTV7S6652C3[];
extern Class_Descriptor cd_S6652C4;
extern VTBL_ENTRY _ZTI7S6652C4[];
extern  VTBL_ENTRY _ZTV7S6652C4[];
static Base_Class bases_S6652C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6652C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6652C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6652C4,    ABISELECT(32,16), //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},
  {0}};
extern VTBL_ENTRY _ZTI7S6652C1[];
extern void _ZN7S6652C22v3Ev();
extern void _ZN7S6652C12v1Ev();
extern void _ZN7S6652C12v2Ev();
extern void _ZN7S6652C32v4Ev();
extern void _ZN7S6652C32v5Ev();
extern void _ZN7S6652C42v6Ev();
static  VTBL_ENTRY vtc_S6652C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6652C1[0]),
  (VTBL_ENTRY)&_ZN7S6652C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6652C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6652C12v2Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6652C1[0]),
  (VTBL_ENTRY)&_ZN7S6652C32v4Ev,
  (VTBL_ENTRY)&_ZN7S6652C32v5Ev,
  (VTBL_ENTRY)&_ZN7S6652C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S6652C1[];
extern  VTBL_ENTRY _ZTV7S6652C1[];
Class_Descriptor cd_S6652C1 = {  "S6652C1", // class name
  bases_S6652C1, 3,
  &(vtc_S6652C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S6652C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6652C1),10, //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  S14147C2_nt  {
  void *s14147c2f0[2];
  int s14147c2f1;
  void  mf14147c2(); // _ZN11S14147C2_nt9mf14147c2Ev
};
//SIG(-1 S14147C2_nt) C1{ m Fp[2] Fi}


void  S14147C2_nt ::mf14147c2(){}

//skip512 S14147C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14147C1  {
  void *s14147c1f0;
  ::S14147C2_nt s14147c1f1;
  ::S3281C18 s14147c1f2;
};
//SIG(1 S14147C1) C1{ Fp FC2{ m Fp[2] Fi} FC3{ BC4{ m Fp Fi[2]}}}



static void Test_S14147C1()
{
  {
    init_simple_test("S14147C1");
    S14147C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S14147C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14147C1)");
    check_field_offset(lv, s14147c1f0, 0, "S14147C1.s14147c1f0");
    check_field_offset(lv, s14147c1f1, ABISELECT(8,4), "S14147C1.s14147c1f1");
    check_field_offset(lv, s14147c1f2, ABISELECT(32,16), "S14147C1.s14147c1f2");
  }
}
static Arrange_To_Call_Me vS14147C1(Test_S14147C1, "S14147C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9049C2  {
  virtual  ~S9049C2(); // _ZN7S9049C2D1Ev
  virtual void  v2(); // _ZN7S9049C22v2Ev
  S9049C2(); // tgen
};
//SIG(-1 S9049C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9049C2C1Ev();
extern void _ZN7S9049C2D1Ev();
Name_Map name_map_S9049C2[] = {
  NSPAIR(_ZN7S9049C2C1Ev),
  NSPAIR(_ZN7S9049C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9049C2[];
extern void _ZN7S9049C2D1Ev();
extern void _ZN7S9049C2D0Ev();
extern void _ZN7S9049C22v2Ev();
static  VTBL_ENTRY vtc_S9049C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9049C2[0]),
  (VTBL_ENTRY)&_ZN7S9049C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9049C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9049C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9049C2[];
extern  VTBL_ENTRY _ZTV7S9049C2[];
Class_Descriptor cd_S9049C2 = {  "S9049C2", // class name
  0,0,//no base classes
  &(vtc_S9049C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9049C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9049C2),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  S9049C1  : S9049C2 {
  ::S4224C36 s9049c1f0;
  virtual  ~S9049C1(); // _ZN7S9049C1D1Ev
  virtual void  v1(); // _ZN7S9049C12v1Ev
  S9049C1(); // tgen
};
//SIG(1 S9049C1) C1{ BC2{ vd v2} vd v1 FC3{ m Fp Fi[2] FC4{ m}}}


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

static void Test_S9049C1()
{
  extern Class_Descriptor cd_S9049C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9049C1, buf);
    S9049C1 *dp, &lv = *(dp=new (buf) S9049C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9049C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9049C1)");
    check_base_class_offset(lv, (S9049C2*), 0, "S9049C1");
    check_field_offset(lv, s9049c1f0, ABISELECT(8,4), "S9049C1.s9049c1f0");
    test_class_info(&lv, &cd_S9049C1);
    dp->~S9049C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9049C1(Test_S9049C1, "S9049C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S9049C1C1Ev();
extern void _ZN7S9049C1D1Ev();
Name_Map name_map_S9049C1[] = {
  NSPAIR(_ZN7S9049C1C1Ev),
  NSPAIR(_ZN7S9049C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9049C2;
extern VTBL_ENTRY _ZTI7S9049C2[];
extern  VTBL_ENTRY _ZTV7S9049C2[];
static Base_Class bases_S9049C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9049C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9049C1[];
extern void _ZN7S9049C1D1Ev();
extern void _ZN7S9049C1D0Ev();
extern void _ZN7S9049C22v2Ev();
extern void _ZN7S9049C12v1Ev();
static  VTBL_ENTRY vtc_S9049C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9049C1[0]),
  (VTBL_ENTRY)&_ZN7S9049C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9049C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9049C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9049C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9049C1[];
extern  VTBL_ENTRY _ZTV7S9049C1[];
Class_Descriptor cd_S9049C1 = {  "S9049C1", // class name
  bases_S9049C1, 1,
  &(vtc_S9049C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S9049C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9049C1),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  S11723C2  {
  long s11723c2f0[2];
  void *s11723c2f1;
  long s11723c2f2[2];
  void *s11723c2f3[4];
};
//SIG(-1 S11723C2) C1{ Fl[2] Fp Fl[2] Fp[4]}



static void Test_S11723C2()
{
  {
    init_simple_test("S11723C2");
    S11723C2 lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S11723C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11723C2)");
    check_field_offset(lv, s11723c2f0, 0, "S11723C2.s11723c2f0");
    check_field_offset(lv, s11723c2f1, ABISELECT(16,8), "S11723C2.s11723c2f1");
    check_field_offset(lv, s11723c2f2, ABISELECT(24,12), "S11723C2.s11723c2f2");
    check_field_offset(lv, s11723c2f3, ABISELECT(40,20), "S11723C2.s11723c2f3");
  }
}
static Arrange_To_Call_Me vS11723C2(Test_S11723C2, "S11723C2", ABISELECT(72,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11723C1  {
  ::S11723C2 s11723c1f0;
  long s11723c1f1[3];
  void *s11723c1f2[14];
};
//SIG(1 S11723C1) C1{ FC2{ Fl[2] Fp Fl[2] Fp[4]} Fl[3] Fp[14]}



static void Test_S11723C1()
{
  {
    init_simple_test("S11723C1");
    S11723C1 lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S11723C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11723C1)");
    check_field_offset(lv, s11723c1f0, 0, "S11723C1.s11723c1f0");
    check_field_offset(lv, s11723c1f1, ABISELECT(72,36), "S11723C1.s11723c1f1");
    check_field_offset(lv, s11723c1f2, ABISELECT(96,48), "S11723C1.s11723c1f2");
  }
}
static Arrange_To_Call_Me vS11723C1(Test_S11723C1, "S11723C1", ABISELECT(208,104));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18906C1  {
  ::S20817C4 s18906c1f0;
  virtual  ~S18906C1(); // _ZN8S18906C1D1Ev
  virtual void  v1(); // _ZN8S18906C12v1Ev
  virtual void  v2(); // _ZN8S18906C12v2Ev
  virtual void  v3(); // _ZN8S18906C12v3Ev
  S18906C1(); // tgen
};
//SIG(1 S18906C1) C1{ vd v1 v2 v3 FC2{ v4 v5 v6 v7 v8 v9 FL}}


 S18906C1 ::~S18906C1(){ note_dtor("S18906C1", this);}
void  S18906C1 ::v1(){vfunc_called(this, "_ZN8S18906C12v1Ev");}
void  S18906C1 ::v2(){vfunc_called(this, "_ZN8S18906C12v2Ev");}
void  S18906C1 ::v3(){vfunc_called(this, "_ZN8S18906C12v3Ev");}
S18906C1 ::S18906C1(){ note_ctor("S18906C1", this);} // tgen

static void Test_S18906C1()
{
  extern Class_Descriptor cd_S18906C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S18906C1, buf);
    S18906C1 *dp, &lv = *(dp=new (buf) S18906C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18906C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18906C1)");
    check_field_offset(lv, s18906c1f0, ABISELECT(8,4), "S18906C1.s18906c1f0");
    test_class_info(&lv, &cd_S18906C1);
    dp->~S18906C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18906C1(Test_S18906C1, "S18906C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S18906C1C1Ev();
extern void _ZN8S18906C1D1Ev();
Name_Map name_map_S18906C1[] = {
  NSPAIR(_ZN8S18906C1C1Ev),
  NSPAIR(_ZN8S18906C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18906C1[];
extern void _ZN8S18906C1D1Ev();
extern void _ZN8S18906C1D0Ev();
extern void _ZN8S18906C12v1Ev();
extern void _ZN8S18906C12v2Ev();
extern void _ZN8S18906C12v3Ev();
static  VTBL_ENTRY vtc_S18906C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18906C1[0]),
  (VTBL_ENTRY)&_ZN8S18906C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18906C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18906C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18906C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18906C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18906C1[];
extern  VTBL_ENTRY _ZTV8S18906C1[];
Class_Descriptor cd_S18906C1 = {  "S18906C1", // class name
  0,0,//no base classes
  &(vtc_S18906C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S18906C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18906C1),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  S18905C1  {
  ::S7687C14 s18905c1f0;
  virtual  ~S18905C1(); // _ZN8S18905C1D1Ev
  virtual void  v1(); // _ZN8S18905C12v1Ev
  virtual void  v2(); // _ZN8S18905C12v2Ev
  virtual void  v3(); // _ZN8S18905C12v3Ev
  S18905C1(); // tgen
};
//SIG(1 S18905C1) C1{ vd v1 v2 v3 FC2{ v4 v5 v6 v7 v8 v9 Fl}}


 S18905C1 ::~S18905C1(){ note_dtor("S18905C1", this);}
void  S18905C1 ::v1(){vfunc_called(this, "_ZN8S18905C12v1Ev");}
void  S18905C1 ::v2(){vfunc_called(this, "_ZN8S18905C12v2Ev");}
void  S18905C1 ::v3(){vfunc_called(this, "_ZN8S18905C12v3Ev");}
S18905C1 ::S18905C1(){ note_ctor("S18905C1", this);} // tgen

static void Test_S18905C1()
{
  extern Class_Descriptor cd_S18905C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18905C1, buf);
    S18905C1 *dp, &lv = *(dp=new (buf) S18905C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18905C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18905C1)");
    check_field_offset(lv, s18905c1f0, ABISELECT(8,4), "S18905C1.s18905c1f0");
    test_class_info(&lv, &cd_S18905C1);
    dp->~S18905C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18905C1(Test_S18905C1, "S18905C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18905C1C1Ev();
extern void _ZN8S18905C1D1Ev();
Name_Map name_map_S18905C1[] = {
  NSPAIR(_ZN8S18905C1C1Ev),
  NSPAIR(_ZN8S18905C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18905C1[];
extern void _ZN8S18905C1D1Ev();
extern void _ZN8S18905C1D0Ev();
extern void _ZN8S18905C12v1Ev();
extern void _ZN8S18905C12v2Ev();
extern void _ZN8S18905C12v3Ev();
static  VTBL_ENTRY vtc_S18905C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18905C1[0]),
  (VTBL_ENTRY)&_ZN8S18905C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18905C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18905C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18905C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18905C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18905C1[];
extern  VTBL_ENTRY _ZTV8S18905C1[];
Class_Descriptor cd_S18905C1 = {  "S18905C1", // class name
  0,0,//no base classes
  &(vtc_S18905C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18905C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18905C1),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  S8924C2  {
  char s8924c2f0;
  int s8924c2f1;
  virtual  ~S8924C2(); // _ZN7S8924C2D1Ev
  virtual void  v2(); // _ZN7S8924C22v2Ev
  virtual void  v3(); // _ZN7S8924C22v3Ev
  virtual void  v4(); // _ZN7S8924C22v4Ev
  virtual void  v5(); // _ZN7S8924C22v5Ev
  S8924C2(); // tgen
};
//SIG(-1 S8924C2) C1{ vd v1 v2 v3 v4 Fc Fi}


 S8924C2 ::~S8924C2(){ note_dtor("S8924C2", this);}
void  S8924C2 ::v2(){vfunc_called(this, "_ZN7S8924C22v2Ev");}
void  S8924C2 ::v3(){vfunc_called(this, "_ZN7S8924C22v3Ev");}
void  S8924C2 ::v4(){vfunc_called(this, "_ZN7S8924C22v4Ev");}
void  S8924C2 ::v5(){vfunc_called(this, "_ZN7S8924C22v5Ev");}
S8924C2 ::S8924C2(){ note_ctor("S8924C2", this);} // tgen

static void Test_S8924C2()
{
  extern Class_Descriptor cd_S8924C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8924C2, buf);
    S8924C2 *dp, &lv = *(dp=new (buf) S8924C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8924C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8924C2)");
    check_field_offset(lv, s8924c2f0, ABISELECT(8,4), "S8924C2.s8924c2f0");
    check_field_offset(lv, s8924c2f1, ABISELECT(12,8), "S8924C2.s8924c2f1");
    test_class_info(&lv, &cd_S8924C2);
    dp->~S8924C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8924C2(Test_S8924C2, "S8924C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8924C2C1Ev();
extern void _ZN7S8924C2D1Ev();
Name_Map name_map_S8924C2[] = {
  NSPAIR(_ZN7S8924C2C1Ev),
  NSPAIR(_ZN7S8924C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8924C2[];
extern void _ZN7S8924C2D1Ev();
extern void _ZN7S8924C2D0Ev();
extern void _ZN7S8924C22v2Ev();
extern void _ZN7S8924C22v3Ev();
extern void _ZN7S8924C22v4Ev();
extern void _ZN7S8924C22v5Ev();
static  VTBL_ENTRY vtc_S8924C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8924C2[0]),
  (VTBL_ENTRY)&_ZN7S8924C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8924C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8924C2[];
extern  VTBL_ENTRY _ZTV7S8924C2[];
Class_Descriptor cd_S8924C2 = {  "S8924C2", // class name
  0,0,//no base classes
  &(vtc_S8924C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8924C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8924C2),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  S8924C1  : S8924C2 {
  int s8924c1f0[2];
  virtual  ~S8924C1(); // _ZN7S8924C1D1Ev
  virtual void  v1(); // _ZN7S8924C12v1Ev
  S8924C1(); // tgen
};
//SIG(1 S8924C1) C1{ BC2{ vd v2 v3 v4 v5 Fc Fi} vd v1 Fi[2]}


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

static void Test_S8924C1()
{
  extern Class_Descriptor cd_S8924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S8924C1, buf);
    S8924C1 *dp, &lv = *(dp=new (buf) S8924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S8924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8924C1)");
    check_base_class_offset(lv, (S8924C2*), 0, "S8924C1");
    check_field_offset(lv, s8924c1f0, ABISELECT(16,12), "S8924C1.s8924c1f0");
    test_class_info(&lv, &cd_S8924C1);
    dp->~S8924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8924C1(Test_S8924C1, "S8924C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S8924C1C1Ev();
extern void _ZN7S8924C1D1Ev();
Name_Map name_map_S8924C1[] = {
  NSPAIR(_ZN7S8924C1C1Ev),
  NSPAIR(_ZN7S8924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8924C2;
extern VTBL_ENTRY _ZTI7S8924C2[];
extern  VTBL_ENTRY _ZTV7S8924C2[];
static Base_Class bases_S8924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8924C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8924C1[];
extern void _ZN7S8924C1D1Ev();
extern void _ZN7S8924C1D0Ev();
extern void _ZN7S8924C22v2Ev();
extern void _ZN7S8924C22v3Ev();
extern void _ZN7S8924C22v4Ev();
extern void _ZN7S8924C22v5Ev();
extern void _ZN7S8924C12v1Ev();
static  VTBL_ENTRY vtc_S8924C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8924C1[0]),
  (VTBL_ENTRY)&_ZN7S8924C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8924C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8924C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8924C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8924C1[];
extern  VTBL_ENTRY _ZTV7S8924C1[];
Class_Descriptor cd_S8924C1 = {  "S8924C1", // class name
  bases_S8924C1, 1,
  &(vtc_S8924C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S8924C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8924C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12075C1  {
  ::S6728C5_nt s12075c1f0;
  ::S6728C5_nt s12075c1f1;
  ::S6726C4_nt s12075c1f2;
  char s12075c1f3;
  unsigned int s12075c1f4:1;
};
//SIG(1 S12075C1) C1{ FC2{ m Fi[3]} FC2 FC3{ m Fi[2]} Fc Fi:1}



static void Test_S12075C1()
{
  {
    init_simple_test("S12075C1");
    static S12075C1 lv;
    check2(sizeof(lv), 36, "sizeof(S12075C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12075C1)");
    check_field_offset(lv, s12075c1f0, 0, "S12075C1.s12075c1f0");
    check_field_offset(lv, s12075c1f1, 12, "S12075C1.s12075c1f1");
    check_field_offset(lv, s12075c1f2, 24, "S12075C1.s12075c1f2");
    check_field_offset(lv, s12075c1f3, 32, "S12075C1.s12075c1f3");
    set_bf_and_test(lv, s12075c1f4, 33, 0, 1, 1, "S12075C1");
  }
}
static Arrange_To_Call_Me vS12075C1(Test_S12075C1, "S12075C1", 36);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11401C2_nt  {
  int s11401c2f0;
  void *s11401c2f1[3];
  int s11401c2f2;
  void *s11401c2f3;
  int s11401c2f4[17];
};
//SIG(-1 S11401C2_nt) C1{ Fi Fp[3] Fi Fp Fi[17]}



//skip512 S11401C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11401C1  {
  ::S11401C2_nt s11401c1f0;
  int s11401c1f1;
  void *s11401c1f2[3];
};
//SIG(1 S11401C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} Fi Fp[3]}



static void Test_S11401C1()
{
  {
    init_simple_test("S11401C1");
    S11401C1 lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S11401C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11401C1)");
    check_field_offset(lv, s11401c1f0, 0, "S11401C1.s11401c1f0");
    check_field_offset(lv, s11401c1f1, ABISELECT(120,92), "S11401C1.s11401c1f1");
    check_field_offset(lv, s11401c1f2, ABISELECT(128,96), "S11401C1.s11401c1f2");
  }
}
static Arrange_To_Call_Me vS11401C1(Test_S11401C1, "S11401C1", ABISELECT(152,108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18219C3_nt  {
  void *s18219c3f0;
  int s18219c3f1;
};
//SIG(-1 S18219C3_nt) C1{ Fp Fi}



//skip512 S18219C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18219C2  {
  int s18219c2f0;
  ::S18219C3_nt s18219c2f1;
  void  mf18219c2(); // _ZN8S18219C29mf18219c2Ev
};
//SIG(-1 S18219C2) C1{ m Fi FC2{ Fp Fi}}


void  S18219C2 ::mf18219c2(){}

static void Test_S18219C2()
{
  {
    init_simple_test("S18219C2");
    S18219C2 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18219C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18219C2)");
    check_field_offset(lv, s18219c2f0, 0, "S18219C2.s18219c2f0");
    check_field_offset(lv, s18219c2f1, ABISELECT(8,4), "S18219C2.s18219c2f1");
  }
}
static Arrange_To_Call_Me vS18219C2(Test_S18219C2, "S18219C2", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18219C1  {
  void *s18219c1f0[3];
  ::S18219C2 s18219c1f1;
  char s18219c1f2[2];
  void  mf18219c1(); // _ZN8S18219C19mf18219c1Ev
};
//SIG(1 S18219C1) C1{ m Fp[3] FC2{ m Fi FC3{ Fp Fi}} Fc[2]}


void  S18219C1 ::mf18219c1(){}

static void Test_S18219C1()
{
  {
    init_simple_test("S18219C1");
    S18219C1 lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S18219C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18219C1)");
    check_field_offset(lv, s18219c1f0, 0, "S18219C1.s18219c1f0");
    check_field_offset(lv, s18219c1f1, ABISELECT(24,12), "S18219C1.s18219c1f1");
    check_field_offset(lv, s18219c1f2, ABISELECT(48,24), "S18219C1.s18219c1f2");
  }
}
static Arrange_To_Call_Me vS18219C1(Test_S18219C1, "S18219C1", ABISELECT(56,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11722C1  {
  ::S11723C2 s11722c1f0;
  int s11722c1f1;
  void *s11722c1f2[5];
};
//SIG(1 S11722C1) C1{ FC2{ Fl[2] Fp Fl[2] Fp[4]} Fi Fp[5]}



static void Test_S11722C1()
{
  {
    init_simple_test("S11722C1");
    S11722C1 lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S11722C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11722C1)");
    check_field_offset(lv, s11722c1f0, 0, "S11722C1.s11722c1f0");
    check_field_offset(lv, s11722c1f1, ABISELECT(72,36), "S11722C1.s11722c1f1");
    check_field_offset(lv, s11722c1f2, ABISELECT(80,40), "S11722C1.s11722c1f2");
  }
}
static Arrange_To_Call_Me vS11722C1(Test_S11722C1, "S11722C1", ABISELECT(120,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15083C1  {
  char s15083c1f0;
  int s15083c1f1;
  ::S21373C5_nt s15083c1f2;
  void *s15083c1f3;
  int s15083c1f4;
  void  mf15083c1(); // _ZN8S15083C19mf15083c1Ev
};
//SIG(1 S15083C1) C1{ m Fc Fi FC2{ m Fp Fi FC3{ m}} Fp Fi}


void  S15083C1 ::mf15083c1(){}

static void Test_S15083C1()
{
  {
    init_simple_test("S15083C1");
    S15083C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S15083C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15083C1)");
    check_field_offset(lv, s15083c1f0, 0, "S15083C1.s15083c1f0");
    check_field_offset(lv, s15083c1f1, 4, "S15083C1.s15083c1f1");
    check_field_offset(lv, s15083c1f2, 8, "S15083C1.s15083c1f2");
    check_field_offset(lv, s15083c1f3, ABISELECT(24,20), "S15083C1.s15083c1f3");
    check_field_offset(lv, s15083c1f4, ABISELECT(32,24), "S15083C1.s15083c1f4");
  }
}
static Arrange_To_Call_Me vS15083C1(Test_S15083C1, "S15083C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14616C1  {
  void *s14616c1f0[3];
  int s14616c1f1[2];
  char s14616c1f2[2];
  long s14616c1f3[2];
  void *s14616c1f4;
  long s14616c1f5[3];
};
//SIG(1 S14616C1) C1{ Fp[3] Fi[2] Fc[2] Fl[2] Fp Fl[3]}



static void Test_S14616C1()
{
  {
    init_simple_test("S14616C1");
    S14616C1 lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S14616C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14616C1)");
    check_field_offset(lv, s14616c1f0, 0, "S14616C1.s14616c1f0");
    check_field_offset(lv, s14616c1f1, ABISELECT(24,12), "S14616C1.s14616c1f1");
    check_field_offset(lv, s14616c1f2, ABISELECT(32,20), "S14616C1.s14616c1f2");
    check_field_offset(lv, s14616c1f3, ABISELECT(40,24), "S14616C1.s14616c1f3");
    check_field_offset(lv, s14616c1f4, ABISELECT(56,32), "S14616C1.s14616c1f4");
    check_field_offset(lv, s14616c1f5, ABISELECT(64,36), "S14616C1.s14616c1f5");
  }
}
static Arrange_To_Call_Me vS14616C1(Test_S14616C1, "S14616C1", ABISELECT(88,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12588C1  {
  int s12588c1f0;
  ::S21373C5_nt s12588c1f1;
  int s12588c1f2;
  ::S21373C5_nt s12588c1f3;
  int s12588c1f4;
};
//SIG(1 S12588C1) C1{ Fi FC2{ m Fp Fi FC3{ m}} Fi FC2 Fi}



static void Test_S12588C1()
{
  {
    init_simple_test("S12588C1");
    S12588C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S12588C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12588C1)");
    check_field_offset(lv, s12588c1f0, 0, "S12588C1.s12588c1f0");
    check_field_offset(lv, s12588c1f1, ABISELECT(8,4), "S12588C1.s12588c1f1");
    check_field_offset(lv, s12588c1f2, ABISELECT(24,16), "S12588C1.s12588c1f2");
    check_field_offset(lv, s12588c1f3, ABISELECT(32,20), "S12588C1.s12588c1f3");
    check_field_offset(lv, s12588c1f4, ABISELECT(48,32), "S12588C1.s12588c1f4");
  }
}
static Arrange_To_Call_Me vS12588C1(Test_S12588C1, "S12588C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8986C2  {
  virtual  ~S8986C2(); // _ZN7S8986C2D1Ev
  virtual void  v2(); // _ZN7S8986C22v2Ev
  virtual void  v3(); // _ZN7S8986C22v3Ev
  virtual void  v4(); // _ZN7S8986C22v4Ev
  virtual void  v5(); // _ZN7S8986C22v5Ev
  S8986C2(); // tgen
};
//SIG(-1 S8986C2) C1{ vd v1 v2 v3 v4}


 S8986C2 ::~S8986C2(){ note_dtor("S8986C2", this);}
void  S8986C2 ::v2(){vfunc_called(this, "_ZN7S8986C22v2Ev");}
void  S8986C2 ::v3(){vfunc_called(this, "_ZN7S8986C22v3Ev");}
void  S8986C2 ::v4(){vfunc_called(this, "_ZN7S8986C22v4Ev");}
void  S8986C2 ::v5(){vfunc_called(this, "_ZN7S8986C22v5Ev");}
S8986C2 ::S8986C2(){ note_ctor("S8986C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8986C2C1Ev();
extern void _ZN7S8986C2D1Ev();
Name_Map name_map_S8986C2[] = {
  NSPAIR(_ZN7S8986C2C1Ev),
  NSPAIR(_ZN7S8986C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8986C2[];
extern void _ZN7S8986C2D1Ev();
extern void _ZN7S8986C2D0Ev();
extern void _ZN7S8986C22v2Ev();
extern void _ZN7S8986C22v3Ev();
extern void _ZN7S8986C22v4Ev();
extern void _ZN7S8986C22v5Ev();
static  VTBL_ENTRY vtc_S8986C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8986C2[0]),
  (VTBL_ENTRY)&_ZN7S8986C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8986C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8986C2[];
extern  VTBL_ENTRY _ZTV7S8986C2[];
Class_Descriptor cd_S8986C2 = {  "S8986C2", // class name
  0,0,//no base classes
  &(vtc_S8986C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8986C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8986C2),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  S8986C1  : S8986C2 {
  void *s8986c1f0;
  ::S20636C21_nt s8986c1f1;
  virtual void  v1(); // _ZN7S8986C12v1Ev
  ~S8986C1(); // tgen
  S8986C1(); // tgen
};
//SIG(1 S8986C1) C1{ BC2{ vd v2 v3 v4 v5} v1 Fp FC3{}}


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

static void Test_S8986C1()
{
  extern Class_Descriptor cd_S8986C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S8986C1, buf);
    S8986C1 *dp, &lv = *(dp=new (buf) S8986C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S8986C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8986C1)");
    check_base_class_offset(lv, (S8986C2*), 0, "S8986C1");
    check_field_offset(lv, s8986c1f0, ABISELECT(8,4), "S8986C1.s8986c1f0");
    check_field_offset(lv, s8986c1f1, ABISELECT(16,8), "S8986C1.s8986c1f1");
    test_class_info(&lv, &cd_S8986C1);
    dp->~S8986C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8986C1(Test_S8986C1, "S8986C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S8986C1C1Ev();
extern void _ZN7S8986C1D1Ev();
Name_Map name_map_S8986C1[] = {
  NSPAIR(_ZN7S8986C1C1Ev),
  NSPAIR(_ZN7S8986C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8986C2;
extern VTBL_ENTRY _ZTI7S8986C2[];
extern  VTBL_ENTRY _ZTV7S8986C2[];
static Base_Class bases_S8986C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8986C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8986C1[];
extern void _ZN7S8986C1D1Ev();
extern void _ZN7S8986C1D0Ev();
extern void _ZN7S8986C22v2Ev();
extern void _ZN7S8986C22v3Ev();
extern void _ZN7S8986C22v4Ev();
extern void _ZN7S8986C22v5Ev();
extern void _ZN7S8986C12v1Ev();
static  VTBL_ENTRY vtc_S8986C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8986C1[0]),
  (VTBL_ENTRY)&_ZN7S8986C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8986C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8986C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8986C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8986C1[];
extern  VTBL_ENTRY _ZTV7S8986C1[];
Class_Descriptor cd_S8986C1 = {  "S8986C1", // class name
  bases_S8986C1, 1,
  &(vtc_S8986C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S8986C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8986C1),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  S8927C2  {
  char s8927c2f0;
  int s8927c2f1;
  virtual  ~S8927C2(); // _ZN7S8927C2D1Ev
  virtual void  v2(); // _ZN7S8927C22v2Ev
  virtual void  v3(); // _ZN7S8927C22v3Ev
  virtual void  v4(); // _ZN7S8927C22v4Ev
  virtual void  v5(); // _ZN7S8927C22v5Ev
  S8927C2(); // tgen
};
//SIG(-1 S8927C2) C1{ vd v1 v2 v3 v4 Fc Fi}


 S8927C2 ::~S8927C2(){ note_dtor("S8927C2", this);}
void  S8927C2 ::v2(){vfunc_called(this, "_ZN7S8927C22v2Ev");}
void  S8927C2 ::v3(){vfunc_called(this, "_ZN7S8927C22v3Ev");}
void  S8927C2 ::v4(){vfunc_called(this, "_ZN7S8927C22v4Ev");}
void  S8927C2 ::v5(){vfunc_called(this, "_ZN7S8927C22v5Ev");}
S8927C2 ::S8927C2(){ note_ctor("S8927C2", this);} // tgen

static void Test_S8927C2()
{
  extern Class_Descriptor cd_S8927C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8927C2, buf);
    S8927C2 *dp, &lv = *(dp=new (buf) S8927C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8927C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8927C2)");
    check_field_offset(lv, s8927c2f0, ABISELECT(8,4), "S8927C2.s8927c2f0");
    check_field_offset(lv, s8927c2f1, ABISELECT(12,8), "S8927C2.s8927c2f1");
    test_class_info(&lv, &cd_S8927C2);
    dp->~S8927C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8927C2(Test_S8927C2, "S8927C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8927C2C1Ev();
extern void _ZN7S8927C2D1Ev();
Name_Map name_map_S8927C2[] = {
  NSPAIR(_ZN7S8927C2C1Ev),
  NSPAIR(_ZN7S8927C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8927C2[];
extern void _ZN7S8927C2D1Ev();
extern void _ZN7S8927C2D0Ev();
extern void _ZN7S8927C22v2Ev();
extern void _ZN7S8927C22v3Ev();
extern void _ZN7S8927C22v4Ev();
extern void _ZN7S8927C22v5Ev();
static  VTBL_ENTRY vtc_S8927C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8927C2[0]),
  (VTBL_ENTRY)&_ZN7S8927C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8927C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8927C2[];
extern  VTBL_ENTRY _ZTV7S8927C2[];
Class_Descriptor cd_S8927C2 = {  "S8927C2", // class name
  0,0,//no base classes
  &(vtc_S8927C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8927C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8927C2),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  S8927C1  : S8927C2 {
  virtual  ~S8927C1(); // _ZN7S8927C1D1Ev
  virtual void  v1(); // _ZN7S8927C12v1Ev
  S8927C1(); // tgen
};
//SIG(1 S8927C1) C1{ BC2{ vd v2 v3 v4 v5 Fc Fi} vd v1}


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

static void Test_S8927C1()
{
  extern Class_Descriptor cd_S8927C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S8927C1, buf);
    S8927C1 *dp, &lv = *(dp=new (buf) S8927C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S8927C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8927C1)");
    check_base_class_offset(lv, (S8927C2*), 0, "S8927C1");
    test_class_info(&lv, &cd_S8927C1);
    dp->~S8927C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8927C1(Test_S8927C1, "S8927C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S8927C1C1Ev();
extern void _ZN7S8927C1D1Ev();
Name_Map name_map_S8927C1[] = {
  NSPAIR(_ZN7S8927C1C1Ev),
  NSPAIR(_ZN7S8927C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8927C2;
extern VTBL_ENTRY _ZTI7S8927C2[];
extern  VTBL_ENTRY _ZTV7S8927C2[];
static Base_Class bases_S8927C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8927C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8927C1[];
extern void _ZN7S8927C1D1Ev();
extern void _ZN7S8927C1D0Ev();
extern void _ZN7S8927C22v2Ev();
extern void _ZN7S8927C22v3Ev();
extern void _ZN7S8927C22v4Ev();
extern void _ZN7S8927C22v5Ev();
extern void _ZN7S8927C12v1Ev();
static  VTBL_ENTRY vtc_S8927C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8927C1[0]),
  (VTBL_ENTRY)&_ZN7S8927C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8927C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8927C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8927C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8927C1[];
extern  VTBL_ENTRY _ZTV7S8927C1[];
Class_Descriptor cd_S8927C1 = {  "S8927C1", // class name
  bases_S8927C1, 1,
  &(vtc_S8927C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S8927C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8927C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14607C1  {
  void *s14607c1f0[3];
  int s14607c1f1;
  void *s14607c1f2;
  int s14607c1f3[2];
  void *s14607c1f4;
  int s14607c1f5;
  void *s14607c1f6;
  int s14607c1f7;
};
//SIG(1 S14607C1) C1{ Fp[3] Fi Fp Fi[2] Fp Fi Fp Fi}



static void Test_S14607C1()
{
  {
    init_simple_test("S14607C1");
    S14607C1 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S14607C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14607C1)");
    check_field_offset(lv, s14607c1f0, 0, "S14607C1.s14607c1f0");
    check_field_offset(lv, s14607c1f1, ABISELECT(24,12), "S14607C1.s14607c1f1");
    check_field_offset(lv, s14607c1f2, ABISELECT(32,16), "S14607C1.s14607c1f2");
    check_field_offset(lv, s14607c1f3, ABISELECT(40,20), "S14607C1.s14607c1f3");
    check_field_offset(lv, s14607c1f4, ABISELECT(48,28), "S14607C1.s14607c1f4");
    check_field_offset(lv, s14607c1f5, ABISELECT(56,32), "S14607C1.s14607c1f5");
    check_field_offset(lv, s14607c1f6, ABISELECT(64,36), "S14607C1.s14607c1f6");
    check_field_offset(lv, s14607c1f7, ABISELECT(72,40), "S14607C1.s14607c1f7");
  }
}
static Arrange_To_Call_Me vS14607C1(Test_S14607C1, "S14607C1", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16753C1  {
  int s16753c1f0;
  ::S6726C4_nt s16753c1f1;
  ::S15502C13_nt s16753c1f2;
  void  mf16753c1(); // _ZN8S16753C19mf16753c1Ev
};
//SIG(1 S16753C1) C1{ m Fi FC2{ m Fi[2]} FC3{ m Fi[4]}}


void  S16753C1 ::mf16753c1(){}

static void Test_S16753C1()
{
  {
    init_simple_test("S16753C1");
    S16753C1 lv;
    check2(sizeof(lv), 28, "sizeof(S16753C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16753C1)");
    check_field_offset(lv, s16753c1f0, 0, "S16753C1.s16753c1f0");
    check_field_offset(lv, s16753c1f1, 4, "S16753C1.s16753c1f1");
    check_field_offset(lv, s16753c1f2, 12, "S16753C1.s16753c1f2");
  }
}
static Arrange_To_Call_Me vS16753C1(Test_S16753C1, "S16753C1", 28);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4611C3  {
  virtual  ~S4611C3(); // _ZN7S4611C3D1Ev
  virtual void  v2(); // _ZN7S4611C32v2Ev
  S4611C3(); // tgen
};
//SIG(-1 S4611C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4611C3C1Ev();
extern void _ZN7S4611C3D1Ev();
Name_Map name_map_S4611C3[] = {
  NSPAIR(_ZN7S4611C3C1Ev),
  NSPAIR(_ZN7S4611C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4611C3[];
extern void _ZN7S4611C3D1Ev();
extern void _ZN7S4611C3D0Ev();
extern void _ZN7S4611C32v2Ev();
static  VTBL_ENTRY vtc_S4611C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4611C3[0]),
  (VTBL_ENTRY)&_ZN7S4611C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4611C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4611C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4611C3[];
extern  VTBL_ENTRY _ZTV7S4611C3[];
Class_Descriptor cd_S4611C3 = {  "S4611C3", // class name
  0,0,//no base classes
  &(vtc_S4611C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4611C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4611C3),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  S4611C2_nt  : S4611C3 {
  virtual  ~S4611C2_nt(); // _ZN10S4611C2_ntD1Ev
  S4611C2_nt(); // tgen
};
//SIG(-1 S4611C2_nt) C1{ BC2{ vd v1} vd}


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

//skip512 S4611C2_nt

#else // __cplusplus

extern void _ZN10S4611C2_ntC1Ev();
extern void _ZN10S4611C2_ntD1Ev();
Name_Map name_map_S4611C2_nt[] = {
  NSPAIR(_ZN10S4611C2_ntC1Ev),
  NSPAIR(_ZN10S4611C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4611C3;
extern VTBL_ENTRY _ZTI7S4611C3[];
extern  VTBL_ENTRY _ZTV7S4611C3[];
static Base_Class bases_S4611C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4611C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4611C2_nt[];
extern void _ZN10S4611C2_ntD1Ev();
extern void _ZN10S4611C2_ntD0Ev();
extern void _ZN7S4611C32v2Ev();
static  VTBL_ENTRY vtc_S4611C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4611C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4611C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4611C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4611C32v2Ev,
};
extern VTBL_ENTRY _ZTI10S4611C2_nt[];
VTBL_ENTRY *P__ZTI10S4611C2_nt = _ZTI10S4611C2_nt; 
extern  VTBL_ENTRY _ZTV10S4611C2_nt[];
Class_Descriptor cd_S4611C2_nt = {  "S4611C2_nt", // class name
  bases_S4611C2_nt, 1,
  &(vtc_S4611C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4611C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4611C2_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  S4611C1  : S4611C2_nt {
  char s4611c1f0;
  void *s4611c1f1;
  virtual  ~S4611C1(); // _ZN7S4611C1D1Ev
  virtual void  v1(); // _ZN7S4611C12v1Ev
  S4611C1(); // tgen
};
//SIG(1 S4611C1) C1{ BC2{ BC3{ vd v2} vd} vd v1 Fc Fp}


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

static void Test_S4611C1()
{
  extern Class_Descriptor cd_S4611C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4611C1, buf);
    S4611C1 *dp, &lv = *(dp=new (buf) S4611C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4611C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4611C1)");
    check_base_class_offset(lv, (S4611C3*)(S4611C2_nt*), 0, "S4611C1");
    check_base_class_offset(lv, (S4611C2_nt*), 0, "S4611C1");
    check_field_offset(lv, s4611c1f0, ABISELECT(8,4), "S4611C1.s4611c1f0");
    check_field_offset(lv, s4611c1f1, ABISELECT(16,8), "S4611C1.s4611c1f1");
    test_class_info(&lv, &cd_S4611C1);
    dp->~S4611C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4611C1(Test_S4611C1, "S4611C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4611C1C1Ev();
extern void _ZN7S4611C1D1Ev();
Name_Map name_map_S4611C1[] = {
  NSPAIR(_ZN7S4611C1C1Ev),
  NSPAIR(_ZN7S4611C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4611C3;
extern VTBL_ENTRY _ZTI7S4611C3[];
extern  VTBL_ENTRY _ZTV7S4611C3[];
extern Class_Descriptor cd_S4611C2_nt;
extern VTBL_ENTRY _ZTI10S4611C2_nt[];
extern  VTBL_ENTRY _ZTV10S4611C2_nt[];
static Base_Class bases_S4611C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4611C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4611C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4611C1[];
extern void _ZN7S4611C1D1Ev();
extern void _ZN7S4611C1D0Ev();
extern void _ZN7S4611C32v2Ev();
extern void _ZN7S4611C12v1Ev();
static  VTBL_ENTRY vtc_S4611C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4611C1[0]),
  (VTBL_ENTRY)&_ZN7S4611C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4611C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4611C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4611C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4611C1[];
extern  VTBL_ENTRY _ZTV7S4611C1[];
Class_Descriptor cd_S4611C1 = {  "S4611C1", // class name
  bases_S4611C1, 2,
  &(vtc_S4611C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4611C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4611C1),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  S18324C1  {
  void *s18324c1f0[3];
  int s18324c1f1[2];
  long s18324c1f2[3];
  void *s18324c1f3;
  char s18324c1f4;
  void *s18324c1f5;
  void  mf18324c1(); // _ZN8S18324C19mf18324c1Ev
};
//SIG(1 S18324C1) C1{ m Fp[3] Fi[2] Fl[3] Fp Fc Fp}


void  S18324C1 ::mf18324c1(){}

static void Test_S18324C1()
{
  {
    init_simple_test("S18324C1");
    S18324C1 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S18324C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18324C1)");
    check_field_offset(lv, s18324c1f0, 0, "S18324C1.s18324c1f0");
    check_field_offset(lv, s18324c1f1, ABISELECT(24,12), "S18324C1.s18324c1f1");
    check_field_offset(lv, s18324c1f2, ABISELECT(32,20), "S18324C1.s18324c1f2");
    check_field_offset(lv, s18324c1f3, ABISELECT(56,32), "S18324C1.s18324c1f3");
    check_field_offset(lv, s18324c1f4, ABISELECT(64,36), "S18324C1.s18324c1f4");
    check_field_offset(lv, s18324c1f5, ABISELECT(72,40), "S18324C1.s18324c1f5");
  }
}
static Arrange_To_Call_Me vS18324C1(Test_S18324C1, "S18324C1", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9596C2  {
  virtual  ~S9596C2(); // _ZN7S9596C2D1Ev
  virtual void  v3(); // _ZN7S9596C22v3Ev
  virtual void  v4(); // _ZN7S9596C22v4Ev
  S9596C2(); // tgen
};
//SIG(-1 S9596C2) C1{ vd v1 v2}


 S9596C2 ::~S9596C2(){ note_dtor("S9596C2", this);}
void  S9596C2 ::v3(){vfunc_called(this, "_ZN7S9596C22v3Ev");}
void  S9596C2 ::v4(){vfunc_called(this, "_ZN7S9596C22v4Ev");}
S9596C2 ::S9596C2(){ note_ctor("S9596C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9596C2C1Ev();
extern void _ZN7S9596C2D1Ev();
Name_Map name_map_S9596C2[] = {
  NSPAIR(_ZN7S9596C2C1Ev),
  NSPAIR(_ZN7S9596C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9596C2[];
extern void _ZN7S9596C2D1Ev();
extern void _ZN7S9596C2D0Ev();
extern void _ZN7S9596C22v3Ev();
extern void _ZN7S9596C22v4Ev();
static  VTBL_ENTRY vtc_S9596C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9596C2[0]),
  (VTBL_ENTRY)&_ZN7S9596C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9596C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9596C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9596C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9596C2[];
extern  VTBL_ENTRY _ZTV7S9596C2[];
Class_Descriptor cd_S9596C2 = {  "S9596C2", // class name
  0,0,//no base classes
  &(vtc_S9596C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9596C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9596C2),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  S9596C1  : S9596C2 {
  int s9596c1f0;
  void *s9596c1f1;
  virtual  ~S9596C1(); // _ZN7S9596C1D1Ev
  virtual void  v1(); // _ZN7S9596C12v1Ev
  virtual void  v2(); // _ZN7S9596C12v2Ev
  S9596C1(); // tgen
};
//SIG(1 S9596C1) C1{ BC2{ vd v3 v4} vd v1 v2 Fi Fp}


 S9596C1 ::~S9596C1(){ note_dtor("S9596C1", this);}
void  S9596C1 ::v1(){vfunc_called(this, "_ZN7S9596C12v1Ev");}
void  S9596C1 ::v2(){vfunc_called(this, "_ZN7S9596C12v2Ev");}
S9596C1 ::S9596C1(){ note_ctor("S9596C1", this);} // tgen

static void Test_S9596C1()
{
  extern Class_Descriptor cd_S9596C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S9596C1, buf);
    S9596C1 *dp, &lv = *(dp=new (buf) S9596C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S9596C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9596C1)");
    check_base_class_offset(lv, (S9596C2*), 0, "S9596C1");
    check_field_offset(lv, s9596c1f0, ABISELECT(8,4), "S9596C1.s9596c1f0");
    check_field_offset(lv, s9596c1f1, ABISELECT(16,8), "S9596C1.s9596c1f1");
    test_class_info(&lv, &cd_S9596C1);
    dp->~S9596C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9596C1(Test_S9596C1, "S9596C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S9596C1C1Ev();
extern void _ZN7S9596C1D1Ev();
Name_Map name_map_S9596C1[] = {
  NSPAIR(_ZN7S9596C1C1Ev),
  NSPAIR(_ZN7S9596C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9596C2;
extern VTBL_ENTRY _ZTI7S9596C2[];
extern  VTBL_ENTRY _ZTV7S9596C2[];
static Base_Class bases_S9596C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9596C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9596C1[];
extern void _ZN7S9596C1D1Ev();
extern void _ZN7S9596C1D0Ev();
extern void _ZN7S9596C22v3Ev();
extern void _ZN7S9596C22v4Ev();
extern void _ZN7S9596C12v1Ev();
extern void _ZN7S9596C12v2Ev();
static  VTBL_ENTRY vtc_S9596C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9596C1[0]),
  (VTBL_ENTRY)&_ZN7S9596C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9596C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9596C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9596C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9596C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9596C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9596C1[];
extern  VTBL_ENTRY _ZTV7S9596C1[];
Class_Descriptor cd_S9596C1 = {  "S9596C1", // class name
  bases_S9596C1, 1,
  &(vtc_S9596C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S9596C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9596C1),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  S16889C2  {
  ::S6728C5_nt s16889c2f0;
  int s16889c2f1;
};
//SIG(-1 S16889C2) C1{ FC2{ m Fi[3]} Fi}



static void Test_S16889C2()
{
  {
    init_simple_test("S16889C2");
    S16889C2 lv;
    check2(sizeof(lv), 16, "sizeof(S16889C2)");
    check2(__alignof__(lv), 4, "__alignof__(S16889C2)");
    check_field_offset(lv, s16889c2f0, 0, "S16889C2.s16889c2f0");
    check_field_offset(lv, s16889c2f1, 12, "S16889C2.s16889c2f1");
  }
}
static Arrange_To_Call_Me vS16889C2(Test_S16889C2, "S16889C2", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16889C1  {
  int s16889c1f0;
  void *s16889c1f1;
  ::S16889C2 s16889c1f2;
  void  mf16889c1(); // _ZN8S16889C19mf16889c1Ev
};
//SIG(1 S16889C1) C1{ m Fi Fp FC2{ FC3{ m Fi[3]} Fi}}


void  S16889C1 ::mf16889c1(){}

static void Test_S16889C1()
{
  {
    init_simple_test("S16889C1");
    S16889C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S16889C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16889C1)");
    check_field_offset(lv, s16889c1f0, 0, "S16889C1.s16889c1f0");
    check_field_offset(lv, s16889c1f1, ABISELECT(8,4), "S16889C1.s16889c1f1");
    check_field_offset(lv, s16889c1f2, ABISELECT(16,8), "S16889C1.s16889c1f2");
  }
}
static Arrange_To_Call_Me vS16889C1(Test_S16889C1, "S16889C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21458C1  {
  ::S21373C5_nt s21458c1f0;
  char s21458c1f1;
  void  mf21458c1(); // _ZN8S21458C19mf21458c1Ev
  virtual  ~S21458C1(); // _ZN8S21458C1D1Ev
  S21458C1(); // tgen
};
//SIG(1 S21458C1) C1{ vd m FC2{ m Fp Fi FC3{ m}} Fc}


void  S21458C1 ::mf21458c1(){}
 S21458C1 ::~S21458C1(){ note_dtor("S21458C1", this);}
S21458C1 ::S21458C1(){ note_ctor("S21458C1", this);} // tgen

static void Test_S21458C1()
{
  extern Class_Descriptor cd_S21458C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21458C1, buf);
    S21458C1 *dp, &lv = *(dp=new (buf) S21458C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21458C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21458C1)");
    check_field_offset(lv, s21458c1f0, ABISELECT(8,4), "S21458C1.s21458c1f0");
    check_field_offset(lv, s21458c1f1, ABISELECT(24,16), "S21458C1.s21458c1f1");
    test_class_info(&lv, &cd_S21458C1);
    dp->~S21458C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21458C1(Test_S21458C1, "S21458C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21458C1C1Ev();
extern void _ZN8S21458C1D1Ev();
Name_Map name_map_S21458C1[] = {
  NSPAIR(_ZN8S21458C1C1Ev),
  NSPAIR(_ZN8S21458C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21458C1[];
extern void _ZN8S21458C1D1Ev();
extern void _ZN8S21458C1D0Ev();
static  VTBL_ENTRY vtc_S21458C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21458C1[0]),
  (VTBL_ENTRY)&_ZN8S21458C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21458C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21458C1[];
extern  VTBL_ENTRY _ZTV8S21458C1[];
Class_Descriptor cd_S21458C1 = {  "S21458C1", // class name
  0,0,//no base classes
  &(vtc_S21458C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21458C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21458C1),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  S13944C1  {
  __tsi64 s13944c1f0[2];
  long s13944c1f1[2];
  __tsi64 s13944c1f2[2];
  short s13944c1f3;
  long s13944c1f4[2];
};
//SIG(1 S13944C1) C1{ FL[2] Fl[2] FL[2] Fs Fl[2]}



static void Test_S13944C1()
{
  {
    init_simple_test("S13944C1");
    S13944C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S13944C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13944C1)");
    check_field_offset(lv, s13944c1f0, 0, "S13944C1.s13944c1f0");
    check_field_offset(lv, s13944c1f1, 16, "S13944C1.s13944c1f1");
    check_field_offset(lv, s13944c1f2, ABISELECT(32,24), "S13944C1.s13944c1f2");
    check_field_offset(lv, s13944c1f3, ABISELECT(48,40), "S13944C1.s13944c1f3");
    check_field_offset(lv, s13944c1f4, ABISELECT(56,44), "S13944C1.s13944c1f4");
  }
}
static Arrange_To_Call_Me vS13944C1(Test_S13944C1, "S13944C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18644C1  {
  void *s18644c1f0;
  short s18644c1f1:16;
  long double s18644c1f2;
  short s18644c1f3[2];
  virtual void  v1(); // _ZN8S18644C12v1Ev
  virtual void  v2(); // _ZN8S18644C12v2Ev
  virtual void  v3(); // _ZN8S18644C12v3Ev
  ~S18644C1(); // tgen
  S18644C1(); // tgen
};
//SIG(1 S18644C1) C1{ v1 v2 v3 Fp Fs:16 FD Fs[2]}


void  S18644C1 ::v1(){vfunc_called(this, "_ZN8S18644C12v1Ev");}
void  S18644C1 ::v2(){vfunc_called(this, "_ZN8S18644C12v2Ev");}
void  S18644C1 ::v3(){vfunc_called(this, "_ZN8S18644C12v3Ev");}
S18644C1 ::~S18644C1(){ note_dtor("S18644C1", this);} // tgen
S18644C1 ::S18644C1(){ note_ctor("S18644C1", this);} // tgen

static void Test_S18644C1()
{
  extern Class_Descriptor cd_S18644C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,8)];
    init_test(&cd_S18644C1, buf);
    S18644C1 *dp, &lv = *(dp=new (buf) S18644C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,28), "sizeof(S18644C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18644C1)");
    check_field_offset(lv, s18644c1f0, ABISELECT(8,4), "S18644C1.s18644c1f0");
    set_bf_and_test(lv, s18644c1f1, ABISELECT(16,8), 0, 16, 1, "S18644C1");
    set_bf_and_test(lv, s18644c1f1, ABISELECT(16,8), 0, 16, hide_sll(1LL<<15), "S18644C1");
    check_field_offset(lv, s18644c1f2, ABISELECT(32,12), "S18644C1.s18644c1f2");
    check_field_offset(lv, s18644c1f3, ABISELECT(48,24), "S18644C1.s18644c1f3");
    test_class_info(&lv, &cd_S18644C1);
    dp->~S18644C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18644C1(Test_S18644C1, "S18644C1", ABISELECT(64,28));

#else // __cplusplus

extern void _ZN8S18644C1C1Ev();
extern void _ZN8S18644C1D1Ev();
Name_Map name_map_S18644C1[] = {
  NSPAIR(_ZN8S18644C1C1Ev),
  NSPAIR(_ZN8S18644C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18644C1[];
extern void _ZN8S18644C12v1Ev();
extern void _ZN8S18644C12v2Ev();
extern void _ZN8S18644C12v3Ev();
static  VTBL_ENTRY vtc_S18644C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18644C1[0]),
  (VTBL_ENTRY)&_ZN8S18644C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18644C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18644C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18644C1[];
extern  VTBL_ENTRY _ZTV8S18644C1[];
Class_Descriptor cd_S18644C1 = {  "S18644C1", // class name
  0,0,//no base classes
  &(vtc_S18644C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,28), // object size
  NSPAIRA(_ZTI8S18644C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18644C1),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  S15023C2  : S14968C4_nt {
  int s15023c2f0[5];
};
//SIG(1 S15023C2) C1{ BC2{ Fi} Fi[5]}



static void Test_S15023C2()
{
  extern Class_Descriptor cd_S15023C2;
  void *lvp;
  {
    int buf[7];
    init_test(&cd_S15023C2, buf);
    S15023C2 &lv = *(new (buf) S15023C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 24, "sizeof(S15023C2)");
    check2(__alignof__(lv), 4, "__alignof__(S15023C2)");
    check_base_class_offset(lv, (S14968C4_nt*), 0, "S15023C2");
    check_field_offset(lv, s15023c2f0, 4, "S15023C2.s15023c2f0");
    test_class_info(&lv, &cd_S15023C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15023C2(Test_S15023C2, "S15023C2", 24);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S15023C1  {
  char s15023c1f0;
  ::S15023C2 s15023c1f1[3];
  void  mf15023c1(); // _ZN8S15023C19mf15023c1Ev
};
//SIG(1 S15023C1) C1{ m Fc FC2{ BC3{ Fi} Fi[5]}[3]}


void  S15023C1 ::mf15023c1(){}

static void Test_S15023C1()
{
  {
    init_simple_test("S15023C1");
    S15023C1 lv;
    check2(sizeof(lv), 76, "sizeof(S15023C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15023C1)");
    check_field_offset(lv, s15023c1f0, 0, "S15023C1.s15023c1f0");
    check_field_offset(lv, s15023c1f1, 4, "S15023C1.s15023c1f1");
  }
}
static Arrange_To_Call_Me vS15023C1(Test_S15023C1, "S15023C1", 76);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20162C2  {
  int s20162c2f0;
  void *s20162c2f1;
  virtual  ~S20162C2(); // _ZN8S20162C2D1Ev
  virtual void  v3(); // _ZN8S20162C22v3Ev
  S20162C2(); // tgen
};
//SIG(-1 S20162C2) C1{ vd v1 Fi Fp}


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

static void Test_S20162C2()
{
  extern Class_Descriptor cd_S20162C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20162C2, buf);
    S20162C2 *dp, &lv = *(dp=new (buf) S20162C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20162C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20162C2)");
    check_field_offset(lv, s20162c2f0, ABISELECT(8,4), "S20162C2.s20162c2f0");
    check_field_offset(lv, s20162c2f1, ABISELECT(16,8), "S20162C2.s20162c2f1");
    test_class_info(&lv, &cd_S20162C2);
    dp->~S20162C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20162C2(Test_S20162C2, "S20162C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20162C2C1Ev();
extern void _ZN8S20162C2D1Ev();
Name_Map name_map_S20162C2[] = {
  NSPAIR(_ZN8S20162C2C1Ev),
  NSPAIR(_ZN8S20162C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20162C2[];
extern void _ZN8S20162C2D1Ev();
extern void _ZN8S20162C2D0Ev();
extern void _ZN8S20162C22v3Ev();
static  VTBL_ENTRY vtc_S20162C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20162C2[0]),
  (VTBL_ENTRY)&_ZN8S20162C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20162C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20162C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S20162C2[];
extern  VTBL_ENTRY _ZTV8S20162C2[];
Class_Descriptor cd_S20162C2 = {  "S20162C2", // class name
  0,0,//no base classes
  &(vtc_S20162C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20162C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20162C2),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  S20162C1  : virtual S20162C2 {
  virtual  ~S20162C1(); // _ZN8S20162C1D2Ev
  virtual void  v1(); // _ZN8S20162C12v1Ev
  virtual void  v2(); // _ZN8S20162C12v2Ev
  S20162C1(); // tgen
};
//SIG(1 S20162C1) C1{ VBC2{ vd v3 Fi Fp} vd v1 v2}


 S20162C1 ::~S20162C1(){ note_dtor("S20162C1", this);}
void  S20162C1 ::v1(){vfunc_called(this, "_ZN8S20162C12v1Ev");}
void  S20162C1 ::v2(){vfunc_called(this, "_ZN8S20162C12v2Ev");}
S20162C1 ::S20162C1(){ note_ctor("S20162C1", this);} // tgen

static void Test_S20162C1()
{
  extern Class_Descriptor cd_S20162C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20162C1, buf);
    S20162C1 *dp, &lv = *(dp=new (buf) S20162C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20162C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20162C1)");
    check_base_class_offset(lv, (S20162C2*), ABISELECT(8,4), "S20162C1");
    test_class_info(&lv, &cd_S20162C1);
    dp->~S20162C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20162C1(Test_S20162C1, "S20162C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20162C1C1Ev();
extern void _ZN8S20162C1D2Ev();
Name_Map name_map_S20162C1[] = {
  NSPAIR(_ZN8S20162C1C1Ev),
  NSPAIR(_ZN8S20162C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20162C2;
extern VTBL_ENTRY _ZTI8S20162C2[];
extern  VTBL_ENTRY _ZTV8S20162C2[];
static Base_Class bases_S20162C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20162C2,    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
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20162C1[];
extern void _ZN8S20162C1D1Ev();
extern void _ZN8S20162C1D0Ev();
extern void _ZN8S20162C12v1Ev();
extern void _ZN8S20162C12v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S20162C1D1Ev,_ZTv0_n12_N8S20162C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20162C1D1Ev,_ZThn4_N8S20162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20162C1D0Ev,_ZTv0_n12_N8S20162C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20162C1D0Ev,_ZThn4_N8S20162C1D0Ev)() __attribute__((weak));
extern void _ZN8S20162C22v3Ev();
static  VTBL_ENTRY vtc_S20162C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20162C1[0]),
  (VTBL_ENTRY)&_ZN8S20162C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20162C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20162C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20162C12v2Ev,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20162C1D1Ev,_ZTv0_n12_N8S20162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20162C1D0Ev,_ZTv0_n12_N8S20162C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20162C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S20162C1[];
static  VTT_ENTRY vtt_S20162C1[] = {
  {&(_ZTV8S20162C1[3]),  3,14},
  {&(_ZTV8S20162C1[11]),  11,14},
};
extern VTBL_ENTRY _ZTI8S20162C1[];
extern  VTBL_ENTRY _ZTV8S20162C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20162C1[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20162C1D0Ev,_ZTv0_n12_N8S20162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20162C1D0Ev,_ZThn4_N8S20162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20162C1D1Ev,_ZTv0_n12_N8S20162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20162C1D1Ev,_ZThn4_N8S20162C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20162C1 = {  "S20162C1", // class name
  bases_S20162C1, 1,
  &(vtc_S20162C1[0]), // expected_vtbl_contents
  &(vtt_S20162C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20162C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20162C1),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20162C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11698C1  {
  ::S13081C4 s11698c1f0;
  int s11698c1f1;
  char s11698c1f2[36];
};
//SIG(1 S11698C1) C1{ FC2{ FL Fc[288]} Fi Fc[36]}



static void Test_S11698C1()
{
  {
    init_simple_test("S11698C1");
    S11698C1 lv;
    check2(sizeof(lv), 336, "sizeof(S11698C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11698C1)");
    check_field_offset(lv, s11698c1f0, 0, "S11698C1.s11698c1f0");
    check_field_offset(lv, s11698c1f1, 296, "S11698C1.s11698c1f1");
    check_field_offset(lv, s11698c1f2, 300, "S11698C1.s11698c1f2");
  }
}
static Arrange_To_Call_Me vS11698C1(Test_S11698C1, "S11698C1", 336);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11697C1  {
  ::S13080C4 s11697c1f0;
  int s11697c1f1;
  char s11697c1f2[36];
};
//SIG(1 S11697C1) C1{ FC2{ Fl Fc[288]} Fi Fc[36]}



static void Test_S11697C1()
{
  {
    init_simple_test("S11697C1");
    S11697C1 lv;
    check2(sizeof(lv), ABISELECT(336,332), "sizeof(S11697C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11697C1)");
    check_field_offset(lv, s11697c1f0, 0, "S11697C1.s11697c1f0");
    check_field_offset(lv, s11697c1f1, ABISELECT(296,292), "S11697C1.s11697c1f1");
    check_field_offset(lv, s11697c1f2, ABISELECT(300,296), "S11697C1.s11697c1f2");
  }
}
static Arrange_To_Call_Me vS11697C1(Test_S11697C1, "S11697C1", ABISELECT(336,332));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14090C1  {
  void *s14090c1f0;
  ::S3281C18 s14090c1f1;
};
//SIG(1 S14090C1) C1{ Fp FC2{ BC3{ m Fp Fi[2]}}}



static void Test_S14090C1()
{
  {
    init_simple_test("S14090C1");
    S14090C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S14090C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14090C1)");
    check_field_offset(lv, s14090c1f0, 0, "S14090C1.s14090c1f0");
    check_field_offset(lv, s14090c1f1, ABISELECT(8,4), "S14090C1.s14090c1f1");
  }
}
static Arrange_To_Call_Me vS14090C1(Test_S14090C1, "S14090C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14217C1  {
  void *s14217c1f0;
  int s14217c1f1;
  void *s14217c1f2;
  int s14217c1f3;
  void *s14217c1f4;
  int s14217c1f5;
  void *s14217c1f6[4];
};
//SIG(1 S14217C1) C1{ Fp Fi Fp Fi Fp Fi Fp[4]}



static void Test_S14217C1()
{
  {
    init_simple_test("S14217C1");
    S14217C1 lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S14217C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14217C1)");
    check_field_offset(lv, s14217c1f0, 0, "S14217C1.s14217c1f0");
    check_field_offset(lv, s14217c1f1, ABISELECT(8,4), "S14217C1.s14217c1f1");
    check_field_offset(lv, s14217c1f2, ABISELECT(16,8), "S14217C1.s14217c1f2");
    check_field_offset(lv, s14217c1f3, ABISELECT(24,12), "S14217C1.s14217c1f3");
    check_field_offset(lv, s14217c1f4, ABISELECT(32,16), "S14217C1.s14217c1f4");
    check_field_offset(lv, s14217c1f5, ABISELECT(40,20), "S14217C1.s14217c1f5");
    check_field_offset(lv, s14217c1f6, ABISELECT(48,24), "S14217C1.s14217c1f6");
  }
}
static Arrange_To_Call_Me vS14217C1(Test_S14217C1, "S14217C1", ABISELECT(80,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18749C1  {
  unsigned char s18749c1f0:1;
  virtual void  v1(); // _ZN8S18749C12v1Ev
  virtual void  v2(); // _ZN8S18749C12v2Ev
  virtual void  v3(); // _ZN8S18749C12v3Ev
  virtual void  v4(); // _ZN8S18749C12v4Ev
  virtual void  v5(); // _ZN8S18749C12v5Ev
  virtual void  v6(); // _ZN8S18749C12v6Ev
  ~S18749C1(); // tgen
  S18749C1(); // tgen
};
//SIG(1 S18749C1) C1{ v1 v2 v3 v4 v5 v6 Fc:1}


void  S18749C1 ::v1(){vfunc_called(this, "_ZN8S18749C12v1Ev");}
void  S18749C1 ::v2(){vfunc_called(this, "_ZN8S18749C12v2Ev");}
void  S18749C1 ::v3(){vfunc_called(this, "_ZN8S18749C12v3Ev");}
void  S18749C1 ::v4(){vfunc_called(this, "_ZN8S18749C12v4Ev");}
void  S18749C1 ::v5(){vfunc_called(this, "_ZN8S18749C12v5Ev");}
void  S18749C1 ::v6(){vfunc_called(this, "_ZN8S18749C12v6Ev");}
S18749C1 ::~S18749C1(){ note_dtor("S18749C1", this);} // tgen
S18749C1 ::S18749C1(){ note_ctor("S18749C1", this);} // tgen

static void Test_S18749C1()
{
  extern Class_Descriptor cd_S18749C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S18749C1, buf);
    S18749C1 *dp, &lv = *(dp=new (buf) S18749C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S18749C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18749C1)");
    set_bf_and_test(lv, s18749c1f0, ABISELECT(8,4), 0, 1, 1, "S18749C1");
    test_class_info(&lv, &cd_S18749C1);
    dp->~S18749C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18749C1(Test_S18749C1, "S18749C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S18749C1C1Ev();
extern void _ZN8S18749C1D1Ev();
Name_Map name_map_S18749C1[] = {
  NSPAIR(_ZN8S18749C1C1Ev),
  NSPAIR(_ZN8S18749C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18749C1[];
extern void _ZN8S18749C12v1Ev();
extern void _ZN8S18749C12v2Ev();
extern void _ZN8S18749C12v3Ev();
extern void _ZN8S18749C12v4Ev();
extern void _ZN8S18749C12v5Ev();
extern void _ZN8S18749C12v6Ev();
static  VTBL_ENTRY vtc_S18749C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18749C1[0]),
  (VTBL_ENTRY)&_ZN8S18749C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18749C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18749C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18749C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18749C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18749C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18749C1[];
extern  VTBL_ENTRY _ZTV8S18749C1[];
Class_Descriptor cd_S18749C1 = {  "S18749C1", // class name
  0,0,//no base classes
  &(vtc_S18749C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S18749C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18749C1),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  S19939C2  {
  long double s19939c2f0;
  void *s19939c2f1;
  virtual void  v1(); // _ZN8S19939C22v1Ev
  virtual void  v2(); // _ZN8S19939C22v2Ev
  ~S19939C2(); // tgen
  S19939C2(); // tgen
};
//SIG(-1 S19939C2) C1{ v1 v2 FD Fp}


void  S19939C2 ::v1(){vfunc_called(this, "_ZN8S19939C22v1Ev");}
void  S19939C2 ::v2(){vfunc_called(this, "_ZN8S19939C22v2Ev");}
S19939C2 ::~S19939C2(){ note_dtor("S19939C2", this);} // tgen
S19939C2 ::S19939C2(){ note_ctor("S19939C2", this);} // tgen

static void Test_S19939C2()
{
  extern Class_Descriptor cd_S19939C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19939C2, buf);
    S19939C2 *dp, &lv = *(dp=new (buf) S19939C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19939C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19939C2)");
    check_field_offset(lv, s19939c2f0, ABISELECT(16,4), "S19939C2.s19939c2f0");
    check_field_offset(lv, s19939c2f1, ABISELECT(32,16), "S19939C2.s19939c2f1");
    test_class_info(&lv, &cd_S19939C2);
    dp->~S19939C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19939C2(Test_S19939C2, "S19939C2", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19939C2C1Ev();
extern void _ZN8S19939C2D1Ev();
Name_Map name_map_S19939C2[] = {
  NSPAIR(_ZN8S19939C2C1Ev),
  NSPAIR(_ZN8S19939C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19939C2[];
extern void _ZN8S19939C22v1Ev();
extern void _ZN8S19939C22v2Ev();
static  VTBL_ENTRY vtc_S19939C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19939C2[0]),
  (VTBL_ENTRY)&_ZN8S19939C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19939C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19939C2[];
extern  VTBL_ENTRY _ZTV8S19939C2[];
Class_Descriptor cd_S19939C2 = {  "S19939C2", // class name
  0,0,//no base classes
  &(vtc_S19939C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19939C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19939C2),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  S19939C1  : virtual S19939C2 {
  int s19939c1f0[2];
  ~S19939C1(); // tgen
  S19939C1(); // tgen
};
//SIG(1 S19939C1) C1{ VBC2{ v1 v2 FD Fp} Fi[2]}


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

static void Test_S19939C1()
{
  extern Class_Descriptor cd_S19939C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19939C1, buf);
    S19939C1 *dp, &lv = *(dp=new (buf) S19939C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19939C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19939C1)");
    check_base_class_offset(lv, (S19939C2*), ABISELECT(16,12), "S19939C1");
    check_field_offset(lv, s19939c1f0, ABISELECT(8,4), "S19939C1.s19939c1f0");
    test_class_info(&lv, &cd_S19939C1);
    dp->~S19939C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19939C1(Test_S19939C1, "S19939C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19939C1C1Ev();
extern void _ZN8S19939C1D1Ev();
Name_Map name_map_S19939C1[] = {
  NSPAIR(_ZN8S19939C1C1Ev),
  NSPAIR(_ZN8S19939C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19939C2;
extern VTBL_ENTRY _ZTI8S19939C2[];
extern  VTBL_ENTRY _ZTV8S19939C2[];
static Base_Class bases_S19939C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19939C2,    ABISELECT(16,12), //bcp->offset
    3, //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 _ZTI8S19939C1[];
extern void _ZN8S19939C22v1Ev();
extern void _ZN8S19939C22v2Ev();
static  VTBL_ENTRY vtc_S19939C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19939C1[0]),
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19939C1[0]),
  (VTBL_ENTRY)&_ZN8S19939C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19939C22v2Ev,
};
extern VTBL_ENTRY _ZTV8S19939C1[];
static  VTT_ENTRY vtt_S19939C1[] = {
  {&(_ZTV8S19939C1[3]),  3,9},
  {&(_ZTV8S19939C1[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S19939C1[];
extern  VTBL_ENTRY _ZTV8S19939C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19939C1[];
Class_Descriptor cd_S19939C1 = {  "S19939C1", // class name
  bases_S19939C1, 1,
  &(vtc_S19939C1[0]), // expected_vtbl_contents
  &(vtt_S19939C1[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19939C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19939C1),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19939C1),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  S14134C2  {
  char s14134c2f0[1000];
  int s14134c2f1;
  void  mf14134c2(); // _ZN8S14134C29mf14134c2Ev
};
//SIG(-1 S14134C2) C1{ m Fc[1000] Fi}


void  S14134C2 ::mf14134c2(){}

static void Test_S14134C2()
{
  {
    init_simple_test("S14134C2");
    S14134C2 lv;
    check2(sizeof(lv), 1004, "sizeof(S14134C2)");
    check2(__alignof__(lv), 4, "__alignof__(S14134C2)");
    check_field_offset(lv, s14134c2f0, 0, "S14134C2.s14134c2f0");
    check_field_offset(lv, s14134c2f1, 1000, "S14134C2.s14134c2f1");
  }
}
static Arrange_To_Call_Me vS14134C2(Test_S14134C2, "S14134C2", 1004);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14134C1  {
  void *s14134c1f0;
  ::S14134C2 s14134c1f1;
};
//SIG(1 S14134C1) C1{ Fp FC2{ m Fc[1000] Fi}}



static void Test_S14134C1()
{
  {
    init_simple_test("S14134C1");
    S14134C1 lv;
    check2(sizeof(lv), ABISELECT(1016,1008), "sizeof(S14134C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14134C1)");
    check_field_offset(lv, s14134c1f0, 0, "S14134C1.s14134c1f0");
    check_field_offset(lv, s14134c1f1, ABISELECT(8,4), "S14134C1.s14134c1f1");
  }
}
static Arrange_To_Call_Me vS14134C1(Test_S14134C1, "S14134C1", ABISELECT(1016,1008));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16114C1  {
  ::S21713C8_nt s16114c1f0[3];
  int s16114c1f1[3];
  void  mf16114c1(); // _ZN8S16114C19mf16114c1Ev
};
//SIG(1 S16114C1) C1{ m FC2{ m Fi}[3] Fi[3]}


void  S16114C1 ::mf16114c1(){}

static void Test_S16114C1()
{
  {
    init_simple_test("S16114C1");
    S16114C1 lv;
    check2(sizeof(lv), 24, "sizeof(S16114C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16114C1)");
    check_field_offset(lv, s16114c1f0, 0, "S16114C1.s16114c1f0");
    check_field_offset(lv, s16114c1f1, 12, "S16114C1.s16114c1f1");
  }
}
static Arrange_To_Call_Me vS16114C1(Test_S16114C1, "S16114C1", 24);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17886C1  {
  void *s17886c1f0[2];
  ::S5451C2 s17886c1f1;
  void  mf17886c1(); // _ZN8S17886C19mf17886c1Ev
};
//SIG(1 S17886C1) C1{ m Fp[2] FC2{ BC3{} Fi}}


void  S17886C1 ::mf17886c1(){}

static void Test_S17886C1()
{
  {
    init_simple_test("S17886C1");
    S17886C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17886C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17886C1)");
    check_field_offset(lv, s17886c1f0, 0, "S17886C1.s17886c1f0");
    check_field_offset(lv, s17886c1f1, ABISELECT(16,8), "S17886C1.s17886c1f1");
  }
}
static Arrange_To_Call_Me vS17886C1(Test_S17886C1, "S17886C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17716C1  {
  void *s17716c1f0;
  int s17716c1f1;
  ::S5309C14_nt s17716c1f2;
  void  mf17716c1(); // _ZN8S17716C19mf17716c1Ev
};
//SIG(1 S17716C1) C1{ m Fp Fi FC2{ m Fp[2]}}


void  S17716C1 ::mf17716c1(){}

static void Test_S17716C1()
{
  {
    init_simple_test("S17716C1");
    S17716C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S17716C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17716C1)");
    check_field_offset(lv, s17716c1f0, 0, "S17716C1.s17716c1f0");
    check_field_offset(lv, s17716c1f1, ABISELECT(8,4), "S17716C1.s17716c1f1");
    check_field_offset(lv, s17716c1f2, ABISELECT(16,8), "S17716C1.s17716c1f2");
  }
}
static Arrange_To_Call_Me vS17716C1(Test_S17716C1, "S17716C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17442C1  {
  void *s17442c1f0;
  char s17442c1f1;
  int s17442c1f2;
  char s17442c1f3[2];
  int s17442c1f4;
  void  mf17442c1(); // _ZN8S17442C19mf17442c1Ev
};
//SIG(1 S17442C1) C1{ m Fp Fc Fi Fc[2] Fi}


void  S17442C1 ::mf17442c1(){}

static void Test_S17442C1()
{
  {
    init_simple_test("S17442C1");
    S17442C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S17442C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17442C1)");
    check_field_offset(lv, s17442c1f0, 0, "S17442C1.s17442c1f0");
    check_field_offset(lv, s17442c1f1, ABISELECT(8,4), "S17442C1.s17442c1f1");
    check_field_offset(lv, s17442c1f2, ABISELECT(12,8), "S17442C1.s17442c1f2");
    check_field_offset(lv, s17442c1f3, ABISELECT(16,12), "S17442C1.s17442c1f3");
    check_field_offset(lv, s17442c1f4, ABISELECT(20,16), "S17442C1.s17442c1f4");
  }
}
static Arrange_To_Call_Me vS17442C1(Test_S17442C1, "S17442C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17799C1  {
  void *s17799c1f0;
  int s17799c1f1[2];
  void *s17799c1f2;
  int s17799c1f3[3];
  void  mf17799c1(); // _ZN8S17799C19mf17799c1Ev
};
//SIG(1 S17799C1) C1{ m Fp Fi[2] Fp Fi[3]}


void  S17799C1 ::mf17799c1(){}

static void Test_S17799C1()
{
  {
    init_simple_test("S17799C1");
    S17799C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S17799C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17799C1)");
    check_field_offset(lv, s17799c1f0, 0, "S17799C1.s17799c1f0");
    check_field_offset(lv, s17799c1f1, ABISELECT(8,4), "S17799C1.s17799c1f1");
    check_field_offset(lv, s17799c1f2, ABISELECT(16,12), "S17799C1.s17799c1f2");
    check_field_offset(lv, s17799c1f3, ABISELECT(24,16), "S17799C1.s17799c1f3");
  }
}
static Arrange_To_Call_Me vS17799C1(Test_S17799C1, "S17799C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16768C1  {
  int s16768c1f0;
  ::S15502C13_nt s16768c1f1;
  void *s16768c1f2;
  void  mf16768c1(); // _ZN8S16768C19mf16768c1Ev
};
//SIG(1 S16768C1) C1{ m Fi FC2{ m Fi[4]} Fp}


void  S16768C1 ::mf16768c1(){}

static void Test_S16768C1()
{
  {
    init_simple_test("S16768C1");
    S16768C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S16768C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16768C1)");
    check_field_offset(lv, s16768c1f0, 0, "S16768C1.s16768c1f0");
    check_field_offset(lv, s16768c1f1, 4, "S16768C1.s16768c1f1");
    check_field_offset(lv, s16768c1f2, ABISELECT(24,20), "S16768C1.s16768c1f2");
  }
}
static Arrange_To_Call_Me vS16768C1(Test_S16768C1, "S16768C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12669C1  {
  int s12669c1f0;
  void *s12669c1f1;
  ::S6726C4_nt s12669c1f2;
};
//SIG(1 S12669C1) C1{ Fi Fp FC2{ m Fi[2]}}



static void Test_S12669C1()
{
  {
    init_simple_test("S12669C1");
    S12669C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S12669C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12669C1)");
    check_field_offset(lv, s12669c1f0, 0, "S12669C1.s12669c1f0");
    check_field_offset(lv, s12669c1f1, ABISELECT(8,4), "S12669C1.s12669c1f1");
    check_field_offset(lv, s12669c1f2, ABISELECT(16,8), "S12669C1.s12669c1f2");
  }
}
static Arrange_To_Call_Me vS12669C1(Test_S12669C1, "S12669C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14719C1  {
  void *s14719c1f0[6];
  int s14719c1f1[2];
  void *s14719c1f2[2];
};
//SIG(1 S14719C1) C1{ Fp[6] Fi[2] Fp[2]}



static void Test_S14719C1()
{
  {
    init_simple_test("S14719C1");
    S14719C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S14719C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14719C1)");
    check_field_offset(lv, s14719c1f0, 0, "S14719C1.s14719c1f0");
    check_field_offset(lv, s14719c1f1, ABISELECT(48,24), "S14719C1.s14719c1f1");
    check_field_offset(lv, s14719c1f2, ABISELECT(56,32), "S14719C1.s14719c1f2");
  }
}
static Arrange_To_Call_Me vS14719C1(Test_S14719C1, "S14719C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14208C1  {
  void *s14208c1f0;
  int s14208c1f1;
  void *s14208c1f2;
  int s14208c1f3;
  __tsi64 s14208c1f4;
  void *s14208c1f5;
};
//SIG(1 S14208C1) C1{ Fp Fi Fp Fi FL Fp}



static void Test_S14208C1()
{
  {
    init_simple_test("S14208C1");
    S14208C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S14208C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14208C1)");
    check_field_offset(lv, s14208c1f0, 0, "S14208C1.s14208c1f0");
    check_field_offset(lv, s14208c1f1, ABISELECT(8,4), "S14208C1.s14208c1f1");
    check_field_offset(lv, s14208c1f2, ABISELECT(16,8), "S14208C1.s14208c1f2");
    check_field_offset(lv, s14208c1f3, ABISELECT(24,12), "S14208C1.s14208c1f3");
    check_field_offset(lv, s14208c1f4, ABISELECT(32,16), "S14208C1.s14208c1f4");
    check_field_offset(lv, s14208c1f5, ABISELECT(40,24), "S14208C1.s14208c1f5");
  }
}
static Arrange_To_Call_Me vS14208C1(Test_S14208C1, "S14208C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13824C1  {
  __tsi64 s13824c1f0;
  long s13824c1f1[2];
  __tsi64 s13824c1f2[2];
  long s13824c1f3;
};
//SIG(1 S13824C1) C1{ FL Fl[2] FL[2] Fl}



static void Test_S13824C1()
{
  {
    init_simple_test("S13824C1");
    S13824C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S13824C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13824C1)");
    check_field_offset(lv, s13824c1f0, 0, "S13824C1.s13824c1f0");
    check_field_offset(lv, s13824c1f1, 8, "S13824C1.s13824c1f1");
    check_field_offset(lv, s13824c1f2, ABISELECT(24,16), "S13824C1.s13824c1f2");
    check_field_offset(lv, s13824c1f3, ABISELECT(40,32), "S13824C1.s13824c1f3");
  }
}
static Arrange_To_Call_Me vS13824C1(Test_S13824C1, "S13824C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12746C1  {
  int s12746c1f0;
  void *s12746c1f1[2];
  char s12746c1f2[8];
  int s12746c1f3;
};
//SIG(1 S12746C1) C1{ Fi Fp[2] Fc[8] Fi}



static void Test_S12746C1()
{
  {
    init_simple_test("S12746C1");
    S12746C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S12746C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12746C1)");
    check_field_offset(lv, s12746c1f0, 0, "S12746C1.s12746c1f0");
    check_field_offset(lv, s12746c1f1, ABISELECT(8,4), "S12746C1.s12746c1f1");
    check_field_offset(lv, s12746c1f2, ABISELECT(24,12), "S12746C1.s12746c1f2");
    check_field_offset(lv, s12746c1f3, ABISELECT(32,20), "S12746C1.s12746c1f3");
  }
}
static Arrange_To_Call_Me vS12746C1(Test_S12746C1, "S12746C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14918C1  {
  short s14918c1f0[256];
  char s14918c1f1[1025];
};
//SIG(1 S14918C1) C1{ Fs[256] Fc[1025]}



static void Test_S14918C1()
{
  {
    init_simple_test("S14918C1");
    S14918C1 lv;
    check2(sizeof(lv), 1538, "sizeof(S14918C1)");
    check2(__alignof__(lv), 2, "__alignof__(S14918C1)");
    check_field_offset(lv, s14918c1f0, 0, "S14918C1.s14918c1f0");
    check_field_offset(lv, s14918c1f1, 512, "S14918C1.s14918c1f1");
  }
}
static Arrange_To_Call_Me vS14918C1(Test_S14918C1, "S14918C1", 1538);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14499C1  {
  void *s14499c1f0[2];
  int s14499c1f1;
  char s14499c1f2[116];
};
//SIG(1 S14499C1) C1{ Fp[2] Fi Fc[116]}



static void Test_S14499C1()
{
  {
    init_simple_test("S14499C1");
    S14499C1 lv;
    check2(sizeof(lv), ABISELECT(136,128), "sizeof(S14499C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14499C1)");
    check_field_offset(lv, s14499c1f0, 0, "S14499C1.s14499c1f0");
    check_field_offset(lv, s14499c1f1, ABISELECT(16,8), "S14499C1.s14499c1f1");
    check_field_offset(lv, s14499c1f2, ABISELECT(20,12), "S14499C1.s14499c1f2");
  }
}
static Arrange_To_Call_Me vS14499C1(Test_S14499C1, "S14499C1", ABISELECT(136,128));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16937C1  {
  int s16937c1f0;
  void *s16937c1f1;
  int s16937c1f2[256];
  void  mf16937c1(); // _ZN8S16937C19mf16937c1Ev
};
//SIG(1 S16937C1) C1{ m Fi Fp Fi[256]}


void  S16937C1 ::mf16937c1(){}

static void Test_S16937C1()
{
  {
    init_simple_test("S16937C1");
    S16937C1 lv;
    check2(sizeof(lv), ABISELECT(1040,1032), "sizeof(S16937C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16937C1)");
    check_field_offset(lv, s16937c1f0, 0, "S16937C1.s16937c1f0");
    check_field_offset(lv, s16937c1f1, ABISELECT(8,4), "S16937C1.s16937c1f1");
    check_field_offset(lv, s16937c1f2, ABISELECT(16,8), "S16937C1.s16937c1f2");
  }
}
static Arrange_To_Call_Me vS16937C1(Test_S16937C1, "S16937C1", ABISELECT(1040,1032));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13182C1  {
  int s13182c1f0[2];
  void *s13182c1f1;
  char s13182c1f2[64];
};
//SIG(1 S13182C1) C1{ Fi[2] Fp Fc[64]}



static void Test_S13182C1()
{
  {
    init_simple_test("S13182C1");
    S13182C1 lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S13182C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13182C1)");
    check_field_offset(lv, s13182c1f0, 0, "S13182C1.s13182c1f0");
    check_field_offset(lv, s13182c1f1, 8, "S13182C1.s13182c1f1");
    check_field_offset(lv, s13182c1f2, ABISELECT(16,12), "S13182C1.s13182c1f2");
  }
}
static Arrange_To_Call_Me vS13182C1(Test_S13182C1, "S13182C1", ABISELECT(80,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16075C1  {
  ::S15502C13_nt s16075c1f0;
  void  mf16075c1(); // _ZN8S16075C19mf16075c1Ev
};
//SIG(1 S16075C1) C1{ m FC2{ m Fi[4]}}


void  S16075C1 ::mf16075c1(){}

static void Test_S16075C1()
{
  {
    init_simple_test("S16075C1");
    S16075C1 lv;
    check2(sizeof(lv), 16, "sizeof(S16075C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16075C1)");
    check_field_offset(lv, s16075c1f0, 0, "S16075C1.s16075c1f0");
  }
}
static Arrange_To_Call_Me vS16075C1(Test_S16075C1, "S16075C1", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16473C1  {
  ::S4224C37 s16473c1f0;
  ::S4224C27 s16473c1f1;
  void  mf16473c1(); // _ZN8S16473C19mf16473c1Ev
};
//SIG(1 S16473C1) C1{ m FC2{ m} FC3{ m}}


void  S16473C1 ::mf16473c1(){}

static void Test_S16473C1()
{
  {
    init_simple_test("S16473C1");
    S16473C1 lv;
    check2(sizeof(lv), 2, "sizeof(S16473C1)");
    check2(__alignof__(lv), 1, "__alignof__(S16473C1)");
    check_field_offset(lv, s16473c1f0, 0, "S16473C1.s16473c1f0");
    check_field_offset(lv, s16473c1f1, 1, "S16473C1.s16473c1f1");
  }
}
static Arrange_To_Call_Me vS16473C1(Test_S16473C1, "S16473C1", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12113C1  {
  ::S21713C8_nt s12113c1f0;
  int s12113c1f1;
  __tsi64 s12113c1f2;
};
//SIG(1 S12113C1) C1{ FC2{ m Fi} Fi FL}



static void Test_S12113C1()
{
  {
    init_simple_test("S12113C1");
    S12113C1 lv;
    check2(sizeof(lv), 16, "sizeof(S12113C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12113C1)");
    check_field_offset(lv, s12113c1f0, 0, "S12113C1.s12113c1f0");
    check_field_offset(lv, s12113c1f1, 4, "S12113C1.s12113c1f1");
    check_field_offset(lv, s12113c1f2, 8, "S12113C1.s12113c1f2");
  }
}
static Arrange_To_Call_Me vS12113C1(Test_S12113C1, "S12113C1", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12972C1  {
  int s12972c1f0[18];
  char s12972c1f1[56];
};
//SIG(1 S12972C1) C1{ Fi[18] Fc[56]}



static void Test_S12972C1()
{
  {
    init_simple_test("S12972C1");
    S12972C1 lv;
    check2(sizeof(lv), 128, "sizeof(S12972C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12972C1)");
    check_field_offset(lv, s12972c1f0, 0, "S12972C1.s12972c1f0");
    check_field_offset(lv, s12972c1f1, 72, "S12972C1.s12972c1f1");
  }
}
static Arrange_To_Call_Me vS12972C1(Test_S12972C1, "S12972C1", 128);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16158C1  {
  ::S4224C40_nt s16158c1f0;
  int s16158c1f1;
  void  mf16158c1(); // _ZN8S16158C19mf16158c1Ev
};
//SIG(1 S16158C1) C1{ m FC2{ m FL} Fi}


void  S16158C1 ::mf16158c1(){}

static void Test_S16158C1()
{
  {
    init_simple_test("S16158C1");
    S16158C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S16158C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16158C1)");
    check_field_offset(lv, s16158c1f0, 0, "S16158C1.s16158c1f0");
    check_field_offset(lv, s16158c1f1, 8, "S16158C1.s16158c1f1");
  }
}
static Arrange_To_Call_Me vS16158C1(Test_S16158C1, "S16158C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13962C1  {
  __tsi64 s13962c1f0[20];
  int s13962c1f1[2];
};
//SIG(1 S13962C1) C1{ FL[20] Fi[2]}



static void Test_S13962C1()
{
  {
    init_simple_test("S13962C1");
    S13962C1 lv;
    check2(sizeof(lv), 168, "sizeof(S13962C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13962C1)");
    check_field_offset(lv, s13962c1f0, 0, "S13962C1.s13962c1f0");
    check_field_offset(lv, s13962c1f1, 160, "S13962C1.s13962c1f1");
  }
}
static Arrange_To_Call_Me vS13962C1(Test_S13962C1, "S13962C1", 168);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13364C1  {
  int s13364c1f0[3];
  void *s13364c1f1;
  char s13364c1f2;
};
//SIG(1 S13364C1) C1{ Fi[3] Fp Fc}



static void Test_S13364C1()
{
  {
    init_simple_test("S13364C1");
    S13364C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S13364C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13364C1)");
    check_field_offset(lv, s13364c1f0, 0, "S13364C1.s13364c1f0");
    check_field_offset(lv, s13364c1f1, ABISELECT(16,12), "S13364C1.s13364c1f1");
    check_field_offset(lv, s13364c1f2, ABISELECT(24,16), "S13364C1.s13364c1f2");
  }
}
static Arrange_To_Call_Me vS13364C1(Test_S13364C1, "S13364C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16597C1  {
  int s16597c1f0;
  char s16597c1f1[32];
  void  mf16597c1(); // _ZN8S16597C19mf16597c1Ev
};
//SIG(1 S16597C1) C1{ m Fi Fc[32]}


void  S16597C1 ::mf16597c1(){}

static void Test_S16597C1()
{
  {
    init_simple_test("S16597C1");
    S16597C1 lv;
    check2(sizeof(lv), 36, "sizeof(S16597C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16597C1)");
    check_field_offset(lv, s16597c1f0, 0, "S16597C1.s16597c1f0");
    check_field_offset(lv, s16597c1f1, 4, "S16597C1.s16597c1f1");
  }
}
static Arrange_To_Call_Me vS16597C1(Test_S16597C1, "S16597C1", 36);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18493C1  {
  long double s18493c1f0[5];
  short s18493c1f1;
  virtual void  v1(); // _ZN8S18493C12v1Ev
  ~S18493C1(); // tgen
  S18493C1(); // tgen
};
//SIG(1 S18493C1) C1{ v1 FD[5] Fs}


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

static void Test_S18493C1()
{
  extern Class_Descriptor cd_S18493C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,18)];
    init_test(&cd_S18493C1, buf);
    S18493C1 *dp, &lv = *(dp=new (buf) S18493C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S18493C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18493C1)");
    check_field_offset(lv, s18493c1f0, ABISELECT(16,4), "S18493C1.s18493c1f0");
    check_field_offset(lv, s18493c1f1, ABISELECT(96,64), "S18493C1.s18493c1f1");
    test_class_info(&lv, &cd_S18493C1);
    dp->~S18493C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18493C1(Test_S18493C1, "S18493C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN8S18493C1C1Ev();
extern void _ZN8S18493C1D1Ev();
Name_Map name_map_S18493C1[] = {
  NSPAIR(_ZN8S18493C1C1Ev),
  NSPAIR(_ZN8S18493C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18493C1[];
extern void _ZN8S18493C12v1Ev();
static  VTBL_ENTRY vtc_S18493C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18493C1[0]),
  (VTBL_ENTRY)&_ZN8S18493C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18493C1[];
extern  VTBL_ENTRY _ZTV8S18493C1[];
Class_Descriptor cd_S18493C1 = {  "S18493C1", // class name
  0,0,//no base classes
  &(vtc_S18493C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI8S18493C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18493C1),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  S13635C1  {
  long s13635c1f0;
  char s13635c1f1;
  void *s13635c1f2[2];
};
//SIG(1 S13635C1) C1{ Fl Fc Fp[2]}



static void Test_S13635C1()
{
  {
    init_simple_test("S13635C1");
    S13635C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S13635C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13635C1)");
    check_field_offset(lv, s13635c1f0, 0, "S13635C1.s13635c1f0");
    check_field_offset(lv, s13635c1f1, ABISELECT(8,4), "S13635C1.s13635c1f1");
    check_field_offset(lv, s13635c1f2, ABISELECT(16,8), "S13635C1.s13635c1f2");
  }
}
static Arrange_To_Call_Me vS13635C1(Test_S13635C1, "S13635C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17838C1  {
  void *s17838c1f0;
  __tsi64 s17838c1f1[2];
  void  mf17838c1(); // _ZN8S17838C19mf17838c1Ev
};
//SIG(1 S17838C1) C1{ m Fp FL[2]}


void  S17838C1 ::mf17838c1(){}

static void Test_S17838C1()
{
  {
    init_simple_test("S17838C1");
    S17838C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S17838C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17838C1)");
    check_field_offset(lv, s17838c1f0, 0, "S17838C1.s17838c1f0");
    check_field_offset(lv, s17838c1f1, ABISELECT(8,4), "S17838C1.s17838c1f1");
  }
}
static Arrange_To_Call_Me vS17838C1(Test_S17838C1, "S17838C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17040C1  {
  int s17040c1f0[137];
  void  mf17040c1(); // _ZN8S17040C19mf17040c1Ev
};
//SIG(1 S17040C1) C1{ m Fi[137]}


void  S17040C1 ::mf17040c1(){}

static void Test_S17040C1()
{
  {
    init_simple_test("S17040C1");
    S17040C1 lv;
    check2(sizeof(lv), 548, "sizeof(S17040C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17040C1)");
    check_field_offset(lv, s17040c1f0, 0, "S17040C1.s17040c1f0");
  }
}
static Arrange_To_Call_Me vS17040C1(Test_S17040C1, "S17040C1", 548);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14917C1  {
  short s14917c1f0[2092];
};
//SIG(1 S14917C1) C1{ Fs[2092]}



static void Test_S14917C1()
{
  {
    init_simple_test("S14917C1");
    S14917C1 lv;
    check2(sizeof(lv), 4184, "sizeof(S14917C1)");
    check2(__alignof__(lv), 2, "__alignof__(S14917C1)");
    check_field_offset(lv, s14917c1f0, 0, "S14917C1.s14917c1f0");
  }
}
static Arrange_To_Call_Me vS14917C1(Test_S14917C1, "S14917C1", 4184);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14443C1  {
  void *s14443c1f0[176];
};
//SIG(1 S14443C1) C1{ Fp[176]}



static void Test_S14443C1()
{
  {
    init_simple_test("S14443C1");
    S14443C1 lv;
    check2(sizeof(lv), ABISELECT(1408,704), "sizeof(S14443C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14443C1)");
    check_field_offset(lv, s14443c1f0, 0, "S14443C1.s14443c1f0");
  }
}
static Arrange_To_Call_Me vS14443C1(Test_S14443C1, "S14443C1", ABISELECT(1408,704));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14034C1  {
  long s14034c1f0[6];
};
//SIG(1 S14034C1) C1{ Fl[6]}



static void Test_S14034C1()
{
  {
    init_simple_test("S14034C1");
    S14034C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S14034C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14034C1)");
    check_field_offset(lv, s14034c1f0, 0, "S14034C1.s14034c1f0");
  }
}
static Arrange_To_Call_Me vS14034C1(Test_S14034C1, "S14034C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

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

